Monday, August 09, 2004

Mono 1.0 : First Look

Today there was a new project discussion that was very interesting… MONO was one of the proposed potential candidate in the technology list?!!! The application has to be run on RedHat Linux, and talk to a remote SQL Server DB and also required WebDAV built on top of DASL and Catacomb. DASL and catacomb are extensions to WebDAV. Thought this is the right time to get some grips on Mono… Downloaded Mono 1.0 Build 1

Here are my first impressions,

1. A Slick 13.5 MB Mono 1.0 framework comprising of C# 1.0 compiler, ECMA CLI Runtime Engine, IKVM Java Runtime Engine.

2. Class Libraries implementing .NET 1.1 Profile

3. GTK# 1.0 toolkit

4. Mono Libraries and GNOME Libraries

some interesting libraries are Mono.Math, Mono.Posix, Mono.Security, Glade

5. VB Runtime [although vb.net development is not fully encouraged, C# is the preferred language as of now]

The Package Installed with no hassles

After installation, you need to add Mono installation path to the %PATH% Environment variable, setupmonopath.bat is included along with the package, alternatively I would suggest to add the path info under “Environment Variables” of your System Properties

MONO .NET applications are claimed as 100% .NET application
A '100% .NET application' is one that only uses the APIs defined under the System namespace and does not use P/Invoke. These applications would in theory run unmodified on Windows, Linux, HP-UX, Solaris, MacOS X and others.” !!

Some interesting facts worth mentioning are
• An advanced native-code compilation engine: Both just-in-time compilation (JIT) and pre-compilation of CIL bytecodes into native code are supported.
• A foundation for code optimization: The new code generator in Mono builds on the experience of our first JIT engine, and enables us to implement various advanced compiler optimization tricks. With an SSA-framework, plenty of new optimizations are possible. The current list of optimizations are: Peephole postpass, Branch optimizations, Inline method calls, Constant folding, Constant propagation, Copy propagation, Dead code elimination, Linear scan global reg allocation, Conditional moves, Emit per-domain code, Instruction scheduling, Intrinsic method implementations, Tail recursion and tail calls, Loop related optimizations, Fast x86 FP compares, Leaf procedures optimizations
• A self-hosting C# compiler written in C#, which is clean, easy to maintain.
•Focus on the .NET Framework: we are tracking down the .NET Framework API definition, as we believe it is the API people will be most familiar with.
•A multi-platform runtime engine: both a JIT engine and an interpreter exist. The JIT engine runs currently on x86, PowerPC, S390 and Sparc systems, while the interpreter works on x86, SPARC, StrongARM, s390 and PowerPC systems.
The JIT engine is being ported to amd64 systems at this time.
• Supports Linux, BSD, MacOS, Windows and Solaris at this point.
• The JIT engine is written using a portable instruction selector which not only generates good code but is also the foundation to re-target the JIT engine to other systems.
• Full support for remoting in the runtime.
• The C# compiler, the JIT engine and the class libraries are mature enough that the whole system has been self-hosting since April 2002. This means that we develop Mono completely with itself at this point.
By forcing ourselves to use our own code to develop our tools, we bug fix problems rapidly, and the system is overall more robust and tested than if we did not.
• Our class libraries are licensed under the terms of the MIT X11 license which is a very liberal license as opposed to the GNU GPL with exceptions, this means that Mono can be used in places where the GPL with exceptions is not permissible.
• Mono has a complete Web Services stack: we implement ASP.NET web servers and web clients as well as implementing the Remoting-based SOAP infrastructure.
• Remoting implementation: Mono has a complete remoting infrastructure that is used in our own codebase to provide added functionality and performance to our ASP.NET engine and more.
• Mono has a complete C# 1.0 implementation and has been stress tested a lot more than Portable.NET's compiler.
• Mono's C# compiler has strong error handling and has closer adherence to the specification with support for definite assignment (required to generate verifiable IL code) and CLS conformance c hecking.
• Mono's C# compiler is written in C# which is easier for new developers to come in and improve, fix and tune. The Mono C# compiler in C# is faster than their C-based compiler.
• Preview of C# 2.0: a work in progress for a 2.0 implementation of our compiler is available (iterators, generics and anonymous methods are available in our "preview" compiler).
• Mono has a complete Reflection and Reflection.Emit: these are important for advanced applications, compilers and dynamic code generation.
• Mono has a complete managed XML stack: XML, XPath, XML Serializer, XML Schema handling are fully functional, feature complete and tuned for performance.
• Mono has a complete cryptography stack: we implement the 1.0 and 1.1 APIs as well as using our fully managed stack to implement the SSL/TLS transports.
• Extensive database support: Mono ships with database provides for Firebird, IBM DB2, Oracle, Sybase, Microsoft SQL Server, SQL Lite, MySQL, PostgresSQL, Ole DB and ODBC.
• Mono includes full LDAP support.

Read more at FAQ – www.go-mono.org

somehow, still I have some issues to try it on a live production environment... :-)
shall post more....

posted by Logu Krishnan : 12:51 PM

Comments: Post a Comment

This page is powered by Blogger. Isn't yours?