The DotGNU project aims to be for webservices and for C# programs what GNU/Linux is rapidly becoming for desktop and server applications: the industry leader and provider of Free Software solutions.
DotGNU currently consists of three main development projects (further components will be added over time):
Major motivations for being involved in DotGNU include:
DotGNU news is also available as an RSS feed.
As part of the Google Summer of Code project, tcort has been hacking away at the libjit port to alpha. As the SoC was ending yesterday, tcort showed the basic JIT samples working on alpha, including on-demand compilation and execution of functions. There is a lot more work left in Alpha land and tcort has said that he plans to continue working on it. Take a look at his blog post and the screenshot. If you're interested in helping, take a look at his Alpha porting guide first.
Over the last few months, libjit has made progress in leaps and bounds. The current CVS HEAD of libjit, along with the corresponding pnet, can run GUI Windows.Forms programs in a pure JIT mode on x86. Actually, it has been functional for a while now. We apologize for the delay in announcing this, but we are all too busy hacking :)
DotGNU is taking part in the Google Summer of Code 2006 as a part of the GNU Operating System. If you are a student and are interested in working on DotGNU (or another part of GNU) see the list of GNU ideas. The DotGNU related items are mainly about implementing C# 2.0 features in the compiler, enhancing System.Windows.Forms and improving libjit. DotGNU related Summer of Code projects can be found on this list.
We are currently looking at redesigning dotgnu.org and building a new look and feel. The old template system is also going to be replaced with an XSLT based one. If you are interested in helping, please join up on the #dotgnu IRC channel or mail the developers mailing list, we are very interested in general proposals and mockups.
Some DotGNU developers met at this year's Linux.conf.au in Dunedin, NZ to discuss plans for 2006. Some DotGNU people can be seen on this photo. Apart from a nice dessert, there was also quite some discussion about Portable.NET's future. The conclusion was to go ahead and give Portable.NET a big boost in 2006 as there is a lot of exciting technology in Portable.NET to play around with.
New versions of Portable.NET and libjit are available. Far too many new features and bug fixes to list them here, see the announcement which includes a full list of new features and bug fixes. You can get it from the download page.
Work on libjit (A JIT designed to be independent of any particular virtual machine bytecode format or language) has resumed again and we are gearing towards using it in Portable.NET soon. Recently, there have also been donations which will be distributed amongst developers who contribute code to get libjit finished and hook it into Portable.NET's runtime engine.
On Portable.NET related news, there have been many changes since the last release, probably the most notable one is the development of libCrayons, the new System.Drawing backend. With a bit of luck, developers can even get one of the Windows.Forms related bounties for their code contribution.
If you are interested in any of the recent libjit or Portable.NET developments you should subscribe to the mailing lists or talk to us on IRC.
Changes since the last release and download links can be found in the announcement.
The third edition of the ECMA C# Language Specification and Common Language Infrastructure (CLI) have been approved recently.
We have reached yet another milestone: Portable.NET 0.7.0. There is an unroller for PPC, runtime optimizations and fixes all over the place, many System.Windows.Forms, System.Drawing and Xsharp fixes plus XML and networking enhancements! See the announcement for a more detailed list of changes and get it from the download page.
Portable.NET 0.6.12 and TreeCC 0.3.6 have been released today.
For a list of changes and bug fixes read the announcement or visit the download page where you can also find binary packages for numerous platforms.
DotGNU Portable.NET has been ported to the Encore Simputer, a handheld computer based on on Intel's StrongARM CPU (a RISC microprocessor designed for embedded applications), within 72 hours after the release of Encore's port of the GNU/Linux development tools for this platform at the "Linux Bangalore/2004" conference. Conference organiser Atul Chitnis said, ''I threw the challenge as a joke, the bet being a cup of coffee. Gopal borrowed a PC at the conference, and finally an Encore Simputer, and came to me on the third day, saying that I now owed him a cup of coffee. It took a few seconds before the enormity of that statement hit me.'' Here's a video clip.
Version 0.6.10 of pnet, pnetlib, pnetC, and ml-pnet and version 0.3.4 of treecc have been released. The full release announcement is here.
GetDotGNU.com is a new web portal dedicated to DotGNU and its development projects. The site features news articles and editorials, forums, downloads, screenshots, and many other great features. It is time to Get DotGNU! now.
Version 0.6.8 of pnet, pnetlib, pnetC, and ml-pnet, version 0.3.2 of treecc, and version 0.0.4 of libjit have been released. There are lots and lots of bug fixes and new features. The full announcement with NEWS entries and signed MD5 checksums is here.
All phpGroupWare versions earlier than 0.9.16.002 set header admin and setup passwords as plain text cookies. Now the bugfix security release 0.9.16.002 is out which fixes this security problem.
Even though Rhys was on "sabbatical" away from Portable.NET during this release cycle (he has been working on libjit), major progress has been made in many areas, including in particular threading, Winforms, System.Xml, ml-pnet, DCOP and serialization.
The full release announcement is here.
Here are some screenshots: Portable Studio IDE, MyXaml, Photo Tool (wx.NET), KDE DCOP Support, MDI and FileDialogs, Gtk-Sharp, Svg Rendering, XHTML Rendering .
Rhys has packaged up the current state of the libjit tree into a libjit 0.0.2 release.
Libjit is now at the state where primary testing and bug fixing can begin. We initially need test cases that cover all of the functions in "jit-insn.h".
The easiest way to write a test case is to write a small program in the "Dynamic Pascal" language that exercises the feature in question. Then place it into the "libjit/tests" directory. The "libjit/tests/README" file contains more information on how to do this. A couple of test cases are already provided that demonstrate the concept.
The libjit library implements Just-In-Time compilation functionality. Unlike other JIT's, this one is designed to be independent of any particular virtual machine bytecode format or language. The hope is that Free Software projects can get a leg-up on proprietary VM vendors by using this library rather than spending large amounts of time writing their own JIT from scratch.
This JIT is also designed to be portable to multiple architectures. If you run libjit on a machine for which a native code generator is not yet available, then libjit will fall back to interpreting the code. This way, you don't need to write your own interpreter for your bytecode format if you don't want to.
libjit is independent of pnet (that's one of the main points!) but we'll eventually modify pnet to use it for JIT'ing.
In the newly released version 0.0.0f, tutorials 1 to 4 now work correctly using the interpreted back end, which should allow people to experiment with real examples now. The x86 and ARM back-ends should follow in the next few days.
A mailing list for libjit-specific discussions has been set up.
Portable.NET 0.6.4 and Treecc 0.3.0 have been released. The big change this cycle is the C compiler, which has now reached the point of being useful. We now need lots of volunteers to help flesh out the C library, pnetC, to include all of the usual libc features. There have also been a lot of bug fixes and performance improvements in System.Windows.Forms, thanks to Neil Cawse. And Richard Baumann has completely rewritten the System.Xml parser, fixing many long-standing issues with the XML library.
The new C compiler type system has been checked in. Type layout is now totally dynamic; the IL binary will automatically adapt itself to the runtime engine it is running on. This means that DotGNU is bringing true "write once, run anywhere" functionality to C, running on top of standard CLR implementations. Unlike Microsoft's C compiler, whose output will only run on i386-based Windows systems, ours will run portable ANSI C code on any platform that has a CLR, be it 32-bit or 64-bit, little-endian or big.
Simple examples of C programs can be compiled to IL now, and volunteers are needed to work on the standard C library so that more programs and libraries can be compiled. Our eventual goal is to bring a large body of Free Software libraries and programs to the CLI environment, vastly increasing the range of functionality beyond the small number of libraries currently defined for C#.
We were mentioned in the ".NET Developer's Journal Readers' Choice Awards
2003", achieving third runner up in the "Best .NET Build Tools/Installers"
category and second runner up in the "Best .NET CLI" category. The full
details are at the following URL:
http://www.sys-con.com/2002/PR/02252004.cfm
Gnu-friends has an interview about the history of DotGNU and nb's views on Free Software philosophy: http://gnu-friends.org/story/2004/2/27/15415/3365
Thanks to the efforts of olegb, "DarwinPorts" packages of DotGNU Portable.NET 0.6.2, including System.Windows.Forms, are now available. To install, use "port install pnet; port install pnetlib; port install ml-pnet"
Version 0.6.2 of DotGNU Portable.NET has been released with many
enhancements particularly in the area of System.Windows.Forms
,
with improvements to most controls, fonts, MDI, tree views, and file dialogs.
Please use the
Southern Storm
site for now for downloading it, as we are currently unable to update
ftp.gnu.org
Thanks to the efforts of Adam Ballai and Lance Gilbert DotGNU Portable.Net is now running on Sony Playstation 2 (which has a little endian "R5900 V3.1" MIPS cpu.)
Four DotGNU'ers have made it to LCA2004 in Adelaide, Australia. A group photo is here. From the left, we have Andrew Mitchell (ajmitch), Rhys Weatherley (rhysw), Chris Smith (cds), and Dave Hall (skwashd, who wishes to remain anonymous for reasons unknown).
All official GNU websites (which are on www.gnu.org or tightly synchronized
with www.gnu.org, where in the example of DotGNU, our website is at
http://www.gnu.org/projects/dotgnu/)
were in hiatus between mid-November 2003 and January 2004 due to a
security breach at an important server of the Free Software Foundation,
and the resulting need to set up a much more secure system. The new
system is available now, although it seems to have a bug which
prevents the www.gnu.org
version of the DotGNU website from being
updated. Since the DotGNU project has important news to share, and I don't
have much hope of this project-specific bug being treated with priority (it may
have to do with DotGNU being under /projects
on
www.gnu.org
and not under /software
like almost
everything else), I'm now updating dotgnu.org
without waiting for
the savannah webcvs bug to be fixed.
Support for the upcoming "Whidbey" System.Console routines has been added to Portable.NET, and there is a simple "Snake" game that demonstrates how to use it. A screenshot is here
The release announcement for the DotGNU 0.1 CD-ROM release has been posted.
It is now possible to embed any X application as a child widget within an Xsharp application. The pnetlib CVS tree includes "XClockEmbed.cs" as an example of doing this for "xclock", and this screenshot shows both "gedit" (a GNOME app) and "kcalc" (a KDE app) running as two children of the same Xsharp main window. This is important because the next version of WinForms will have a HTML web browser control widget, and we will want to embed an existing third-part Free Software web browser, and not write a web browser from scratch in C#.
You are invited to add your comments concerning this page at the appropriate page of the DotGNU Wiki
Verbatim copying and distribution of this entire article are permitted in any medium or format, provided this notice is preserved.
This page is maintained by Norbert Bollow <nb@SoftwareEconomics.biz> with support from the DotGNU Developers mailing list.