From Wikipedia, the free encyclopedia
Jump to: navigation, search
Stable release
0.8.0 / March 20, 2007; 10 years ago (2007-03-20)
Written in C, C#
Operating system Cross-platform
Type .NET
License GPL
Website www.dotgnu.org

Part of the decommissioned[1] DotGNU project, Portable.NET is a free software and open source software initiative aiming to build a portable toolchain and runtime for Common Language Infrastructure applications.[2] The project focuses on compatibility with the ECMA-334 and ECMA-335 standards and support for .NET's base class libraries, XML, and Windows Forms. As of March 2007 the latest release of Portable.NET is 0.8.0. The project supports a number of different CPU architectures and operating systems.

It was originally started by Norbert Bollow and Rhys Weatherley, at that time director of Southern Storm Software, Pty Ltd. After Rhys Weatherley and many up-to-date developers quit development of Portable.NET, Klaus Treichel, Kirill Kononenko, Radek Polak, Aleksey Demakov continued development and design of Portable.NET Just-In-Time compiler and LibJIT Just-In-Time compilation library.

Portable.NET and Microsoft's patents[edit]

Portable.NET's implementation of those components of the .NET stack not submitted to the ECMA for standardization has been the source of patent violation concerns for much of the life of the project. In particular, discussion has taken place about whether Microsoft could destroy the Portable.NET project through patent suits.

The base technologies submitted to the ECMA may be non-problematic. The concerns primarily relate to technologies developed by Microsoft on top of the .NET Framework, such as ASP.NET, ADO.NET and Windows Forms (see Non-standardized namespaces), i.e. parts composing Portable.NET's Windows compatibility stack. These technologies are today not fully implemented in Portable.NET and not required for developing Portable.NET-applications.

Free Software Foundation's warnings[edit]

In a note posted on the Free Software Foundation's news website in June 2009, Richard Stallman warned that he believes "Microsoft is probably planning to force all free C# implementations underground some day using software patents" and recommended that developers avoid taking what he described as the "gratuitous risk" associated with "depend[ing] on the free C# implementations", including Portable.NET.[3]


pnetC is the Portable.NET C library. The goal of the project is to create an ANSI-compatible C library (based on GNU C Library - glibc), that can be compiled to IL using Portable.NET's "cscc" compiler. The C compiler can be used to develop standard C applications and/or applications using the .NET API.

The C compiler and library has been included with Portable.NET since version 0.4.4 and over time has matured enough to become a viable alternative to C# for writing Microsoft .NET applications. Although it is not yet feature complete, it does include a minimal standard C library and POSIX threads library, making it possible to develop complex applications. The C compiler generates pure CIL bytecode (with no dependencies upon external native libraries) and the ABI adapts itself to the particulars of the runtime engine that executes the program.

See also[edit]


  1. ^ "http://www.dotgnu.org/". As of December 2012, the DotGNU project has been decommissioned, until and unless a substantial new volunteer effort arises. The exception is the libjit component, which is now a separate libjit package.  External link in |title= (help)
  2. ^ Troelsen, Andrew (2010), Pro C# 2010 and the .NET 4.0 Platform (5th ed.), Apress, ISBN 1-4302-2549-1 , p. 39
  3. ^ Stallman, Richard (June 26, 2009). "Why free software shouldn't depend on Mono or C#". Free Software Foundation. Retrieved July 2, 2009. The danger is that Microsoft is probably planning to force all free C# implementations underground some day using software patents.... We should systematically arrange to depend on the free C# implementations as little as possible. In other words, we should discourage people from writing programs in C#. Therefore, we should not include C# implementations in the default installation of GNU/Linux distributions, and we should distribute and recommend non-C# applications rather than comparable C# applications whenever possible. 

External links[edit]