Hello guys!
A new formal release of Mono has been done, this time I am starting to standarize on the versioning scheme for the compiler and the class libraries with the runtime.
Many more small .NET programs can be now executed, look at the test directory to get an idea of all the stuff that works now. We should have the Console working in the very short future, keep your eyes open.
There are changes in 4 areas: the runtime, the compiler, the class libraries and the support tools.
Many thanks go to Alex Graveley for preparing this summary of changes since the Mono 0.5 release. Look at the bottom for download information. There are just too many changes, basically Mono is moving along very fast.
Here is a breakdown of what is on this release. Man, there are a lot of changes. A lot. Thanks a lot to everyone who has been working so hard on contributing to Mono.
The runtime has only been tested on Linux. The classes and compiler can only be compiled on Windows with the .NET Beta2 SDK.
Runtime Changes
- New opcodes implemented: br.*, brfalse.*, brtrue.*, beq.*, bge.*, bgt.*, ble.*, bne.un.*, bge.un.*, bgt.un.*, ble.un.*, blt.un.*, stind.i, ldflda, ldsflda, ldstr, ldelem.i8, stelem.i8, leave.*, rethrow, box, unbox, unaligned, volatile, tail, initblk, localloc opcode implementations. (Paolo, Dietmar)
- Array class support with all its internalcalls. Those funny .NET shapped arrays are supported and all that (Dietmar)
- Mono can successfully handle mscorlib.dll fully thanks to metadata table fixes (Paolo)
- property support in monodis (Paolo)
- printing to terminal (Dietmar)
- native PInvoke support (Paolo, Dietmar)
- internalcall support (Dietmar)
- String runtime class support (Dietmar)
- object casts (Dietmar)
- object cloning (Dietmar)
- object boxing (Paolo)
- internal stack handling cleanups (Paolo)
- class initialization and static constructors (Paolo)
- exceptions have been implemented (Paolo, Dietmar)
- stack trace printing for unhandled exceptions (Paolo)
- support for builtin math and null reference exceptions (Dietmar)
- replace type references with direct pointers (Dietmar)
- mono interpreter renamed to the much cuter "mint" (Miguel)
Compiler changes
Finished the type system rewrite, now the whole type system is based on System.Reflection, probably the best design decision in the whole compiler (miguel).
Implemented Code Generation and semantic analysis for the following:
Interfaces
Complete, with the exception of events, which require delegate support (need to do this).
Type definitions (Classes and structures).
Population of types with fields and static fields.
Handling of constructors and static constructors.
Method definition in classes and structures.
Parameter definition for all of those.
Local variable emission for blocks.
Beginning of code generation.
Semantic Analysis
A lot of error checking is still missing, you could say that MCS accepts an 'ambiguous super set of C# grammar' as of now ;-)
I will be fixing this as time passes. Man, writing a compiler with C# is fun and trivial. It sort of demistifies writting compilers.
Tokenizer/Parser
Many fixes to the grammar, begin moving towards preserving lexer location information to report errors.
New error reporting mechanism being deployed, will have to percolate it.
General
Many cleanups and code reorganization.
Class Library Additions
System
- MarshalByRefObject (Dietmar)
- Math fixups (Dietmar)
- Array fixups (Dietmar)
- Attribute (Nick Drochak, Dietmar)
- OperatingSystem (Jim Richardson)
- PlatformID (Jim Richardson)
- Environment (Jim Richardson)
- Timespan (Duco Fijma)
- Random (Bob Smith)
- Uri (Garrett Rooney, Miguel)
- IntPtr (Miguel)
- RuntimeTypeHandle (Miguel)
- EventHandler (Miguel)
- IServiceProvider (Miguel)
- UriPartial
- UriHostNameType
- UriFormatException
System.ComponentModel
- Component (Miguel)
- ComponentCollection (Miguel)
- Container (Miguel)
- IComponent (Miguel)
- IContainer (Miguel)
- ISite (Miguel)
- EventHandlerList (Miguel)
System.Configuration
- ConfigurationException (Chris Podurgiel)
- ConfigurationSettings (Chris Podurgiel)
- IConfigurationSectionHandler (Chris Podurgiel)
- IgnoreSectionHandler (Chris Podurgiel)
- NameValueSectionHandler (Chris Podurgiel)
System.Cryptography
- FromBase64Transform (Serge)
- DESCryptoServiceProvider (Serge)
- DES (Serge)
- ToBase64Transform (Serge)
- CipherMode (Matthew Ford)
- CryptoStreamMode (Matthew Ford)
- HashAlgorithm (Matthew Ford)
- ICryptoTransform (Matthew Ford)
- KeySizes (Matthew Ford)
- MD5 (Matthew Ford)
- MD5CryptoServiceProvider (Matthew Ford)
- PaddingMode (Matthew Ford)
- SHA1 (Matthew Ford)
- SHA1CryptoServiceProvider (Matthew Ford)
- SHA256 (Matthew Ford)
- SHA256Managed (Matthew Ford)
- SHA384 (Matthew Ford)
- SHA512 (Matthew Ford)
System.Collections
- ArrayList (Nick Drochak)
- CollectionBase (Nick Drochak)
- ReadOnlyCollectionBase (Nick Drochak)
- Queue (Ricardo Fernandez)
System.Collections.Specialized
- ListDictionary (John Barnette)
- StringDictionary (John Barnette)
System.Diagnostics
- DebuggableAttribute (Nick Drochak)
- ConditionalAttribute (Nick Drochak)
System.Drawing
- Point (Mike Kestner)
- PointF (Mike Kestner)
- Size (Mike Kestner)
- SizeF (Mike Kestner)
System.Globalization
- NumberFormatInfo (Derek Holden)
System.IO
- Path (Jim Richardson)
- Directory (Jim Richardson)
- TextReader (Dietmar)
- Stream (Dietmar)
- FileStream (Dietmar)
System.Runtime.Remoting
- ObjRef (Miguel)
System.Runtime.Serialization
- IObjectReference (Miguel)
- StreamingContext (Miguel)
- StreamingContextStates (Miguel)
System.Runtime.Serialization
- IObjectReference (Miguel)
- StreamingContext (Miguel)
- StreamingContextStatus (Miguel)
System.Web
- BeginEventHandler (Bob Smith)
- EndEventHandler (Bob Smith)
- HttpCacheRevalidation (Bob Smith)
- HttpCacheValidateHandler (Bob Smith)
- HttpCacheability (Bob Smith)
- HttpCookie (Bob Smith)
- HttpCookieCollection (Bob Smith)
- HttpValidationStatus (Bob Smith)
- HttpWorkerRequest (Bob Smith)
- HttpWorkerRequest (Bob Smith)
- IHttpAsyncHandler (Bob Smith)
- IHttpHandler (Bob Smith)
- IHttpHandlerFactory (Bob Smith)
- IHttpModule (Bob Smith)
- ProcessShutdownReason (Bob Smith)
- ProcessStatus (Bob Smith)
- TraceMode (Bob Smith)
System.Web.Configuration
- AuthenticationMode (Leen Toelen)
- FormsAuthPasswordFormat (Leen Toelen)
- FormsProtectionEnum (Leen Toelen)
System.Web.UI
- Control (Bob Smith)
System.Web.UI.HtmlControls
- HtmlContainerControl (Bob Smith)
- HtmlControl (Bob Smith)
- HtmlGenericControl (Bob Smith)
Tools
Sergey provided a tool to compare methods from two assemblies. This is being used to test the compiler generated signatures.
Availability
Runtime:
http://www.go-mono.com/archive/mono-0.6.tar.gz
Classes:
http://www.go-mono.com/archive/mono-compiler-classes.0.6.tar.gz
Enjoy! Miguel.