Exposing Mono Libraries to C

by Miguel de Icaza

Alp has updated the Mono C binding generator cilc to support Gtk#.

The cilc tool is used to produce C bindings from Mono and .NET assemblies. The new Gtk+ support extends this to provide object inheritance of Gtk#-based widgets. So it is now possible to consume Gtk# widgets from C easily.

The code lives in CVS as part of mcs/tools/cilc

Back in November, 2001

Nat used to sleep a lot on airplanes.

Posted on 13 Dec 2004


Developing OpenOffice

by Miguel de Icaza

Michael Meeks has been contributing to OpenOffice for a couple of years now. Initially he made it simple to start contributing to the effort, and wrote the OpenOfficeOrg Hacking guide, and setup a site at Ximian to get open source developers to contribute, you can see it here:

http://ooo.ximian.com/

With all the tools for newcomers to contribute to OpenOffice: Source Code Cross Reference, Bug Tracking System, Tinderbox Status and ready-to-hack source packages.

One of the best features is the Hackers Guide.

Yesterday he posted his slides on OpenOffice hacking here, I found some of them fascinating:

IronPython

Edd, I agree that there is not much action on the IronPython development front, and we would be willing to host a hackable repository for maintaining IronPython.

We could then provide all these patches to Jim for when he has the cycles to do its upcoming release.

Logistically-wise, my hands are tied until January as Cancun is taking precedence over hacking in the upcoming weeks, but the new year is a good time to pick this up.

Mono Updates

We released the latest two versions of Mono 1.0.5 (production) and 1.1.3 (development) both with a long list of goodies.

In the Windows.Forms world, Geoff wrote a native Quartz driver for our Windows.Forms implementation, which you can see here. Geoff reports that we have feature parity with Windows.Forms

Also, ran into IronPHP the same concept of IronPython, but for PHP.

Also Duncan learned today that the University of California Irvine is teaching one of its compiler classes with Mono on MacOS X.

Posted on 09 Dec 2004


Bundles in Mono

by Miguel de Icaza

Over the weekend I checked into the repository a tool to easily create Mono bundles. A mono bundle allows you to ship your Mono application as a single binary: no runtime necessary: everything is "statically linked", there are no external dependencies on a Mono installation of any kind.

To use, just type:

    mono$ mkbundle --deps sample.exe -o mcs
    Sources: 1 Auto-dependencies: True
       embedding: /home/cvs/mcs/mcs/mcs.exe
       embedding: /mono/lib/mono/1.0/mscorlib.dll
       embedding: /mono/lib/mono/1.0/System.dll
       embedding: /mono/lib/mono/1.0/System.Xml.dll
    Compiling:
    as -o /tmp/tmp7aa740ad.o temp.s 
    cc -o demo -Wall temp.c `pkg-config --cflags --libs mono-static` /tmp/tmp7aa740ad.o
    Done
    mono$

In the example above the resulting binary is a healty 7.5 megabyte file, but it contains the Mono C# compiler and three of the system libraries as well as the Mono VM embedded into it:


	mono$ ls -l demo 
	-rwxr-xr-x  1 miguel users 7575630 2004-12-01 02:21 demo*

I then tuned the compilation to use a few shared libraries from the system, in this particular sample, I only want to avoid taking a Mono dependency:


	mono$ mono$ ldd demo
	linux-gate.so.1 =>  (0xffffe000)
	libpthread.so.0 => /lib/tls/libpthread.so.0 (0x4002c000)
	libm.so.6 => /lib/tls/libm.so.6 (0x4003c000)
	libgmodule-2.0.so.0 => /opt/gnome/lib/libgmodule-2.0.so.0 (0x4005e000)
	libdl.so.2 => /lib/libdl.so.2 (0x40062000)
	libgthread-2.0.so.0 => /opt/gnome/lib/libgthread-2.0.so.0 (0x40066000)
	libglib-2.0.so.0 => /opt/gnome/lib/libglib-2.0.so.0 (0x4006b000)
	libc.so.6 => /lib/tls/libc.so.6 (0x409e6000)
	librt.so.1 => /lib/tls/librt.so.1 (0x40afa000)
	/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
	libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x40c68000)

This is just a productification of a feature that Paolo had developed for Mono.

The next step is to write an assembly "linker", so that only the functions necessary to run mcs.exe are included as opposed to the whole three assemblies.

The main problem is that we need a good library for dealing with CIL images, the contenders:

  • Reflection is slightly incomplete, but can be brute-forced to provide the information we need.
  • There is a rumor of a counter part to PEAPI from the folks that wrote Component Pascal, but so far no updates on their web site.
  • Using the Mono unmanaged C API: I rather not.
  • Perl script over the ildasm output. Paolo would be very happy ;-)
  • Use RAIL
  • Write a new library from scratch to cope with these problems.

Posted on 01 Dec 2004


Mono Security Stack

by Miguel de Icaza

Sebastien for a while has been working on all-things-security in the Mono stack, in today's blog entry he describes how to write an SSL server in 3 simple steps.

He uses that to showcase the Mono.Security assembly and the excellent work that Carlos Guzman Alvarez has done on the TLS/SSL stack in Mono (Carlos is also the man behind the Firebird database provider for .NET).

In any case, Sebastien's blog is packed with technical information on a wide range of cryptographic and security topics (specially related to Mono).

Posted on 30 Nov 2004


ApacheCon

by Miguel de Icaza

At ApacheCon today, just finished my keynote, there is a video and audio of it here.

The slides of my presentation are here.

F-Spot failed during the demo, the problem was that on CVS Geoff just made Mono.Data.Sqlite support both the old Sqlite and the new Sqlite3, a tiny logic error gets the autodetection wrong (which is now fixed).

Dmitry Robsman, myself, Scott Guthrie, Daniel López

With the creators of ASP.NET (Dmitry and Scott) and the original author mod_mono (Daniel).

Daniel is at the conference demostrating at the conference is BitRock installer for Unix which is an Install-Shield like installer for Linux, BSD, Solaris and Windows and works with in GUI, text or unattended modes.

As a proof of his installer, he has a sample Mono installer for Linux that includes XSP and Apache for folks that want to get a quick head-start on Mono. The simplest Mono installation on Unix so far.

There is a lot of Java presence, and some PHP presence at the conference.

In other news: am running IBM's Derby in Mono, without having to write a line of Java. Love!

Posted on 16 Nov 2004


CVS to SVN migration completed

by Miguel de Icaza

We completed the migration of the Mono repository from CVS to SVN. We did a few dry runs of the whole migration to verify that nothing would go wrong.

We are happy to report that the migration went as planned and we only had a small service interruption of a few hours while we did the final migration.

The repository had 635 megs of data in 34,831 files checked-in. We are using the file system backend, and things went very smoothly.

Details on the migration process for Mono users are here.

Posted on 11 Nov 2004


New Dynamic Code Generation API

by Miguel de Icaza

Lluis has been working on a new Dynamic Code Generation API for Mono. A detailed blog post with source code, examples and rationale is available here.

Lluis' new code generation API is a medium-level API and sits happily between the CIL (too low level for certain tasks) and generating C# source code (too high level and slow to produce, compile and dynamically load for certain tasks).

Notice the interesting model for the code generation.

Posted on 10 Nov 2004


Novell Linux Desktop

by Miguel de Icaza

The Novell Linux Desktop has been released, a web page with information (and various flash demos) is available here.

Congratulations to the desktop folks for this release.

They have a starter's page in Novell's Cool Solutions with an overview for those new to NLD.

Joseph Hill

Joseph has been running www.gotmono.net for a while, and today I discovered his blog. What I found interesting is that he has been maintaining ASP.NET applications and ports of Mono (here) and his blog talks about his experiences.

It is an interesting read for those interested in Mono deployment and performance.

Although he is beta testing some new ASP.NET-based forums, the current forums are very active.

Alan Nugent Inteview

An Interview with Alan on the recent Desktop Release is here

Posted on 08 Nov 2004


Sweet tool

by Miguel de Icaza

Joshua Tauberer (Monodoc hacker extraordinaire and of GovtTrackUs fame) has ported Perl's Algorithm::Diff to C#, lovely tool available here.

It is not limited to strings or characters, it can operate on anything comparable.

Posted on 06 Nov 2004


Massi posted SSAPRE for Mono!

by Miguel de Icaza

Massimiliano just posted his implementation of the SSA-based Partial Redundance Elimination (for an explanation, see Massi's presentation).

This is an important milestone in Mono's runtime to improve the performance of computationally intensive tasks. The patch is only 2069 lines of code.

Massi previously implemented the Arrays Bound Check eliminination in the Mono VM. Congratulations Massi!

Personal Web Sharing

Am now using GPWS to share files from my computer at home.

Hasan has a blog where he talks about his Gtk# experiences.

Updated NPlot

I have updated NPlot to version 0.9.7 and improved the widget performance. You still need to use CVS mcs and libgdiplus to get it to work.

Code drop is here. Now with a spicy makefile.

Matt (the maintainer of NPlot) said that he wanted to distribute the Gtk# moving forward.

Ariel Faigon on Usability

An interesting presentation from Ariel Faigon on usability and another one on testing

Posted on 05 Nov 2004


« Newer entries | Older entries »