boo 0.5.6 is out

I'm very happy to announce boo 0.5.6.

Change Log

Have fun!

boo 0.5.5 is out

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;

Have fun!

boo 0.5.4 is out

Thanks to Peter Johanson this release brings initial support for c# style explicit interface member implementation:

Also on this release:

  • destructors
  • 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.

Have fun!

Yes, that's right. Thanks to the great work by latexer we can now boo our way through MonoDevelop:

Check out his blog for details:

boo 0.5 is here

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 being debugged:

boo 0.4 released

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

New Feature

  • 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


  • BOO-5 - Document the extensible compilation pipeline
  • BOO-45 - Decide on closure/anonymous method syntax
  • BOO-93 - refactor Boo.Lang.Compiler.Steps.GeneratorProcessor to use CodeBuilder

It's here.

boo 0.3 released

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

New Features

  • 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


  • BOO-11 - assert macro
  • BOO-12 - change license to MIT/BSD style
  • BOO-42 - Move BooC.App.GetPipelineDefinition to Boo.Lang.Compiler.BooCompiler.GetStandardPipelineDefinition
  • BOO-45 - Decide on closure/anonymous method syntax

Have you noticed we now have a roadmap? Jira is so cool.

Wondering how to contribute to the project? Take a look at the outstanding issues. Vote for the ones you would like resolved most. Comment.

Oh, yes, patches are welcomed too (smile)

boo was Don Boxed

Don Box blogged about boo this last sunday.

The FAQ has already been updated with the licensing information. Thanks, Don!

boo 0.2 released

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 were worked out.

Check the download section for instructions.

Today I was finally able to dedicate some time to the project after a long time away.

The good news about boo on mono are:

  1. the build now goes all the way
  2. only 2 testcases are failing
  3. the 2 failing testcases are actually exposing 2 little mono bugs (#61223, #61224)

boy, am I happy!