The highlights of this release are:
- support for compiling assemblies directly to disk (CompilerParameter.GenerateInMemory = false).;
- booc.rsp references only those assemblies that are included in the mono-core package;
Thanks to Peter Johanson this release brings initial support for c# style explicit interface member implementation:
Also on this release:
- char literals: char('f')
- unicode literals in strings: \u0032
- a Set class (Boo.Lang.Useful.Collections.Set)
- Singleton design pattern implementation (Boo.Lang.Useful.Attributes.SingletonAttribute)
- the compiler will now call class provided '==' and '!=' operators;
- the compiler will now look for an implicit conversion operator to boolean when evaluating the conditions for the if/while/unless statements;
- the version of antlr shipped with boo can now generate boo code. In other words you can now finally write parsers in your favorite programming language!
- 'for' and unpack statements now also work with IEnumerator allowing fine grained control over iteration:
- better support for value typed properties;
- extended generator expression syntax: (x, y) for x in range(1, 3) for y in range(3, 0)
- the 'in' and 'not in' operators will now work with any type that provides a op_Member and op_NotMember implementation respectively;
- + lots of minor improvements;
Special thanks go in silly order to:
- Peter Johanson
- Sorin Ionescu
- Doug Holton
- Arron Washington
- Daniel Grunwald
- Edwin de Jonge
And if you haven't done it already, check the great support for boo in both MonoDevelop and SharpDevelop.
Spread the word, boo 0.5 is out!!
Lots of goodies in this release.
Thanks to the growing boo community for making this ride so fun.
Special thanks go in random moustache size order to Daniel Grunwald, Ian MacLean, Latexer, Bill Wood, Doug Holton, Aaron Washington and Scott Fleckenstein.
Hey you all, have fun!
After tweaking the EmitAssembly.EmitDebugInfo code a little I was able to get the debugger running.
Here's a shot of fibonacci.boo being debugged:
Release Notes - Boo - Version 0.4
Lots of improvements on this one!
Thanks again for everyone on the boo dev mailing list.
Download and have fun!
- BOO-3 - generator item type is lost
- BOO-22 - numeric promotion/conversion should happen after unboxing
- BOO-50 - booc compile error: BCE0011: An error occurred during the execution of the step Boo.Lang.Compiler.Steps.Emit
- BOO-77 - Function Overloading/Class Overrideing conflict
- BOO-89 - array of nested type crashs the compiler
- BOO-90 - Compiler must look for the DefaultMember attribute in the base class as well
- BOO-99 - automatic default instance constructor is not generated when the class defines a static constructor
- BOO-102 - confuse error message when missing non empty constructor
- BOO-103 - compile fails
- BOO-104 - Internal compiler when calling super constructor
- BOO-105 - Internal compiler error when a event is defined before its callable type
- BOO-107 - WinForms examples fail
- BOO-122 - static methods of precompiled classes are not visible in derived types
- BOO-123 - Internal compiler error
- BOO-124 - Internal compiler error related to interface definition
- BOO-4 - array generators
- BOO-13 - provide a way to define assembly attributes
- BOO-20 - anonymous callable type notation
- BOO-25 - hexadecimal integer literals
- BOO-48 - provide a way for a class to expose events
- BOO-67 - closures/anonymous methods
- BOO-10 - check visibility for member overrides
- BOO-21 - automatic numeric promotion for bool
- BOO-28 - Error checking: static constructors must be public
- BOO-29 - Error checking: static constructors cannot declare parameters
- BOO-30 - Error checking: can't create instance of interface 'XXX'
- BOO-31 - Error checking: can't create instance of abstract class 'XXX'
- BOO-32 - Error checking: can't create instance of enum 'XXX'
- BOO-33 - Error checking: type 'XXX' already has a definition for a member 'YYY' with the signature 'ZZZ'
- BOO-34 - Error checking: symbols starting with '_', 'get', 'set_', 'add_' and 'remove_' are reserved by the compiler
- BOO-39 - WARNING: type 'TTT' does not implement interface member 'XXX.YYY' and will be marked abstract
- BOO-44 - add pkg-config support to booc
- BOO-51 - Add support for classes to implement interfaces with properties
- BOO-70 - allow callable to be used as an alias to Boo.Lang.ICallable
- BOO-73 - proper support to call methods with ref and out parameters
- BOO-91 - precondition for required attribute
- BOO-92 - precondition for property attribute
- BOO-94 - true closures
- BOO-97 - arrays as hash keys
- BOO-100 - "true" generators (as in "true" closures)
- BOO-106 - preserve array equality even when comparing object references
- BOO-110 - Duck typing must be enabled by default
- BOO-111 - booc response file
- BOO-112 - python style string format operator (%)
- BOO-115 - overridable properties
- BOO-116 - provide a way to call arbitrary super class members using super
- BOO-119 - allow event backing fields to be accessed by the event's declaring type
- BOO-120 - abstract properties
Thanks to everybody on the mailing lists (and to those off them too) who directly or indirectly helped to make this release possible.
Special thanks to Georges Benatti, Matthew Metnetsky, Mike Douglas and Toby Miller. Your help is really appreciated.
The latest packages can be downloaded from here.
On this release
- BOO-2 - static property accessor should be static
- BOO-41 - import external boo modules
- BOO-46 - compiler does not process standalone member method references correctly
- BOO-54 - Error with += and properties
- BOO-65 - getter attribute applied to static field must generate static property
- BOO-66 - property attribute must generate static property when applied to static field
- BOO-75 - InvalidOperationException during compilation when using a dynamic assembly as a references
- BOO-76 - Parse error with division
- BOO-85 - Internal compiler error creating char array
- BOO-15 - provide a way to re-raise the current exception
- BOO-49 - Basic "Boo Explorer" functionality ported to gnome
- BOO-52 - Boo Explorer Output Window
- BOO-53 - code completion to booxw
- BOO-63 - Read command line resource files.
- BOO-8 - import from clause for weird named assemblies
- BOO-17 - automatic callable type conversion and adaptation
- BOO-47 - numeric promotion from signed to unsigned number types
- BOO-60 - UsingMacro improvements
- BOO-69 - src attribute for boo task
- BOO-74 - provide a better way to write regression, integration and error checking test cases
- BOO-78 - uint and ulong primitive types
- BOO-81 - custom attributes for fields
- BOO-83 - emitter must honor transient modifier for fields
- BOO-86 - allow explicit assembly references in boo task
- BOO-88 - can't currently create a callable reference with constructor syntax
This new release celebrates our new cosy place here at the haus! Thanks again to the hausmates!
Mono integration has gone a long way and all the incompatibilities regarding the System.Reflection.Emit API differences between mono and ms.net were worked out.
Check the download section for instructions.