[Mono-list] Mono 0.7 has been released

Miguel de Icaza miguel@ximian.com
18 Sep 2001 21:28:15 -0400


Hey guys!

   Mono 0.7 has been released. 

   It has been a long time since the last release of Mono (almost
three weeks).  We have made an incredible ammount of work in the past
three weeks.  

* Highlights of this release:

	* The monoburg: BURS-instruction selector implemented (for our
	  portable JIT engine).

	* JIT engine works for very simple programs (Fibonacci works
	  for instance).  It is about 30% faster running than the
	  equivalent code compiled with Kaffe.

	  The interesting part is that this was accomplished with the
	  a minimum register allocator, and very simple monoburg
	  rules, so there is a *lot* of room to improve here.

	* The Interpreter has madured a lot.  Value Types are fully
	  supported now;  We dropped the FFI dependency, as we now
	  have our own code generator.

	* The runtime has been expanded and extended as to support
	  real file I/O (including console I/O).  So Hello World works
	  in there. 

	* The compiler can generate code for most statements now; It
	  also performs semantic analysis on most expressions.
	  Creation of new objects is supported, access to parameters,
	  fields and local variables works.  Method invocation works.
	  Implicit type conversions, assignments and much more.

	  Operator overloading is implemented, but broken on this
	  release, hopefully this will be fixed soon.

	  Delegates and Attributes are now declared and passed around,
	  but no code generation for those exist yet.

	* More classes (look for details).  Sergey and Paolo have been
	  working on various classes in System.Reflection.Emit to get
	  the compiler self-hosting.

	* NUnit is now part of the distribution, so it should be
	  trivial to write test cases (and if you want to help out,
	  this is one way to do it, we really need more tests cases).

    I am going to try to switch to Nick's JB for C# this week or next
week.  But the excitement of having the compiler deal with real C#
programs is too much to be contained, and I can not keep my hands of
the code generation in the compiler.

* Availability:

	  http://www.go-mono.com/archive/mono-0.7.tar.gz
	  http://www.go-mono.com/archive/mcs-0.7.tar.gz

* Details

  Class Library Changes:

  Many enumerations have been revamped to have the same value
definitions as those in .NET as those cause problems.  They were also
missing the [Flags] attributes, so we got that right too. 

    * System
	  SerializableAttribute impl			 (Miguel)
	  String updates                                 (Jeff)
	  System.Char					 (Ravi)

    * System.Configuration
	  ConfigurationSettings impl                     (Christopher Podurgiel)
	  SingleTagSectionHandler impl                   (Christopher Podurgiel)
	  DictionarySectionHandler impl                  (Christopher Podurgiel)

    * System.Collections.Specialized
	  NameObjectCollectionBase impl			 (Nick Drochak)

    * System.Diagnostics
	  StackFrame stubs				 (alexk)
	  StackTrace stubs				 (alexk)

    * System.IO
	  File stubs                                     (Jim Richardson)
	  IOException impl                               (Paolo)	
	  StreamWriter impl				 (Dietmar)
	  StreamReader stubs				 (Dietmar)

    * System.Net
	  ConnectionModes				 (Miguel)
	  ProxyUseType					 (Miguel)
	  WebStatus					 (Miguel)

    * System.Reflection
	  Assembly (stubs)				 (Paolo)
	  MethodBase					 (Paolo)
	  MethodInfo					 (Paolo)

    * System.Reflection.Emit
	  EventToken					 (Sergey)
	  FieldToken					 (Sergey)
	  FlowControl					 (Sergey)
	  ILGenerator (stubbed)				 (Paolo)
	  Label 					 (Paolo)
	  MethodToken					 (Sergey)
	  OpCode.cs					 (Sergey)
	  OpCodeType					 (Sergey)
	  OpCodes.cs					 (Sergey)
	  OperandType					 (Sergey)
	  PEFileKinds					 (Paolo)
	  PackingSize					 (Sergey)
	  ParameterToken				 (Sergey)
	  PropertyToken					 (Sergey)
	  SignatureToken				 (Sergey)
	  StackBehaviour				 (Sergey)
	  StringToken					 (Sergey)
	  TypeToken					 (Sergey)

    * System.Threading

	  Most classes stubbed out by Dick Porter        (Dick)

    * System.Web
	  HttpWorkerRequest stubs			 (Bob Smith)

    * System.Web.Hosting				 (Bob Smith)
	  AppDomainFactory stubs			 (Bob Smith)
	  ApplicationHost stubs				 (Bob Smith)
	  IAppDomainFactory stubs			 (Bob Smith)
	  IISAPIRuntime	stubs				 (Bob Smith)
	  ISAPIRuntime stubs				 (Bob Smith)
	  SimpleWorkerRequest stubs			 (Bob Smith)

    * System.Web.UI
	  LiteralControl implemented                     (Bob Smith)
	  HtmlContainerControl bugfixes                  (Bob Smith)
	  BuildMethod 
	  BuildTemplateMethod 
	  HtmlTextWriterAttribute 
	  HtmlTextWriterStyle 
	  HtmlTextWriterTag 
	  IAttributeAccessor 
	  IDataBindingsAccessor 
	  INamingContainer 
	  IParserAccessor 
	  IPostBackDataHandler 
	  IPostBackEventHandler 
	  IStateManager 
	  ITagNameToTypeMapper 
	  ITemplate 
	  IValidator 
	  ImageClickEventHandler 
	  OutputCacheLocation 
	  PersistanceMode 
	  StateItem 

    * System.Web.UI.HtmlControls
	  HtmlAnchor impl				 (Leen Teolen)
	  HtmlTextArea impl				 (Leen Teolen)

    * System.Web.UI.WebControls
	  WebControl.cs                                  (Gaurav Vaish)

    * System.XML
	  Lots of enumerations				 (Miguel)
	  (will add later)

    * Add loads of enumerations throughout 		 (Sergey)
      (will add later)

Compiler Changes:

    * Assignment					 (Miguel)

    * expression semantic analysis			 (Miguel)

    * constructor creation, chaining			 (Miguel)

    * Unified error reporting                            (Ravi)

    * initial attribute support				 (Ravi)

    * calling convention support                         (Miguel)

    * loop construct code generation                     (Miguel)

    * conditional statement code generation		 (Miguel)

    * indexer declarations				 (Ravi)

    * event declarations				 (Ravi)

    * try/catch parsing fixed				 (Ravi)

    * initial delegate support				 (Ravi)

    * operator overload                                  (Ravi)

Tools Changes:

    * Add NUnit windows binaries to distribution	 (Nick Drochak, Miguel)

Runtime Changes:

    * First JIT implementation                           (Dietmar, Paolo)

    * value type size calculation                        (Dietmar)

    * full value type support                            (Paolo)

    * frequently used types cache                        (Paolo)

    * FileStream support				 (Paolo)

    * Console input/output support			 (Dietmar)

    * print arguments and exception name in stack trace  (Paolo)

    * beginnings of virtual call support                 (Paolo)

    * reimplement pinvoke support			 (Dietmar)

    * remove libffi dependency				 (Dietmar)

    * IBURG code generator implementation		 (Dietmar)

    * new opcodes implemented: starg.s, ldobj, isinst,   (Paolo, Miguel)
      ldarg, starg, ldloc, ldloca, stloc, initobj, 
      cpblk, sizeof, conv.i, conv.i1, conv.i2, conv.i4, 
      conv.i8, conv.u1, conv.u2, conv.u4, conv.r4, 
      conv.r8, ldelema, ceq, cgt, clt.

* This list

    Parts of this list of features were compiled by Alex by following
the CVS mailing list.  My deepest thanks to Alex for helping me out
with this.  I want to apologize for the missing features that I did
not document here, Mono is moving too fast to keep track of all the
changes.