Boo 0.7.8

Boo 0.7.8 is here! (redux)

With many thanks to the people who contributed for this release: Andrew Davey, Avishay Lavie, Cedric Vivier, Chris Prinos, Doug Holton, Jim Lewis and Max Bolingbroke.

What? -
Download -
Official irc channel - irc://

Highlights for this release include dramatic improvements to dynamic dispatching performance, a friendlier DSL syntax and of course bug fixes. This is also the last release to support .net 1.1.

Full change log here.

Plus, we now have downloadable packages for Debian. Yeah!

Boo 0.7.8 is here

Boo 0.7.8 is here!

With many thanks to the people who contributed for this release: Andrew Davey, Avishay Lavie, Cedric Vivier, Chris Prinos, Doug Holton, Jim Lewis and Max Bolingbroke.

What? -
Download -
Official irc channel - irc://

Highlights for this release include dramatic improvements to dynamic dispatching performance, a friendlier DSL syntax and of course bug fixes. This is also the last release to support .net 1.1.

Full change log here.


Boo 0.7.7 Released

Boo 0.7.7 is finally here!
With special thanks to Avishay Lavie, Cedric Vivier and all the nice people
who contributed to this release: Andy Bulka, Arron Washington,
Chris Peterson, Daniel Grunwald, Dominik Zablotny, Doug Holton,
Hans-Christian Holm, J Bryan Kelly, Jaroslaw Kowalski, Joshua W. Biagio,
Marcus Griep, mfowler, Miguel de Icaza, Posti Laatikko, Sergio Rubio,
Snaury, Szymon Wrozynski.

What? -
Download -

Highlights for this release include:

  • More complete/stable generics support (now usable in WSA mode too).
  • Support for using generic types with either external type parameters
    (List of int) or internal ones (List of MyClass)
  • Support for consuming generic methods.
  • Generators and Iterators are now generic
  • Support for the new "Type of *" syntax for referencing generic definitions.
  • Improved type inference on generic types (this is work in progress).
  • Fixed bug with multiple symbols on the same line when debugging
    boo-generated assemblies.
  • Fixed checked/unchecked inconsistencies and added new
    "-checked+/-" option to booc.
  • String handling optimized and generates Gendarme/FXcop-compliant assemblies.
  • Automatic stub are now created when not implementing abstract
    orinterface methods from base class.
  • Verify pipeline is now available on Mono too.
  • Lots of other fixes and improvements

Check the full change log at ....

Best wishes and stay beautiful!

Two new template engines have recently emerged in the boo community: Stub and BooTE.

Stub is written in 100% Boo and is loosely based on Ruby's ERB utility. Stub can be used for any text generation task; from creating form letters, to generating SQL queries, and, (X)HTML.

BooTE is also based on Ruby's ERB and is useful for preprocessing XML files.

We're still here...

boo 0.7.7 is almost here. Stay tuned.

We're moving forward on generics support for boo. Check our progress.

 A beta version of a Neo plugin for SharpDevelop with support
for Boo is out. You can get it here.

The initial release of Webness introduces the agility of Rails to .NET.

boo 0.7.6 is here

After a long wait boo 0.7.6 is here!

Thanks to everyone on the boo community specially to those who took the time to report, comment on and/or fix any issues:

  • Andir
  • Arron Washington
  • Ayende Rahien
  • Cameron Kenneth Knight
  • Cedric Vivier
  • Chuck Esterbrook
  • Daniel Grunwald
  • Dominik Zablotny
  • Doug H
  • Fábio Batista
  • Hans-Christian Holm
  • ian Maclean
  • J Bryan Kelly
  • mfowle
  • PC Bender
  • Philippe Quesnel
  • Snaury
  • Sorin Ionescu

As usual download it from here.

Release notes can be found here.

Stay beautiful!

boo 0.7.5 is here

Yes, finally out. Lots of bug fixes and improvements including:

  • BOO-224 - partial classes
  • BOO-597 - extension methods
  • BOO-610 - Optional return on inline closures.
  • BOO-408 - Explode operator not exploding when using overloaded methods
  • BOO-527 - Make .pdb files work under .NET 1.1 and .NET 2.0
  • BOO-567 - emit debug info for separate files
  • BOO-534 - BeginInvoke overloads are not valid on 2.0
  • BOO-540 - Unable to call blank constructor on a ValueType
  • BOO-579 - line numbers off in wsaboo

The complete list is here.

Thanks to everyone on the boo community specially to the people on #boo and more specially so to those that contributed patches, comments and/or ideas that got into this release:

  • Arron Washington
  • Ayende Rahien
  • Cameron Kenneth Knight
  • Daniel Grunwald
  • Doug Holton
  • Fábio Batista
  • Michael Sloan
  • Peter Johanson
  • Scott Fleckenstein
  • Sorin Ionescu
  • Steve Donovan

Special mention for Daniel Grunwald's work on the #develop 2.0 addin. If you haven't checked it out yet, do it and be amazed.

As usual download it from here.

boo 0.7 is here

Highlights of this release are support for ref parameters and support for running under the latest CTP release of .net 2.0.

As usual download it from here.

Release Notes - Boo - Version 0.7

  • BOO-251 - Local variables not falling out of scope properly.
  • BOO-252 - Code Completion in abstract classes does not function.
  • BOO-254 - Boo's builtin regular expresses + code completion = error.
  • BOO-260 - incorrect check of void return type
  • BOO-268 - "Setup Error"
  • BOO-278 - "not" operator precedence
  • BOO-281 - Calling ToString not possible on integer values in multidimensional arrays
  • BOO-285 - #develop crashes on untyped property()
  • BOO-286 - SVN 1486 (GAC-Friendly way of loading assembly) breaks BooBinding.
  • BOO-291 - BooCodeGenerator generates illegal code for arrays
  • BOO-297 - Enum values can't be negative
  • BOO-301 - Infinite loop when breaking in a while loop after a nested for loop
  • BOO-321 - does not implement OnCharLiteralExpression
  • BOO-322 - Attack of the missing members in code completion!
  • BOO-326 - Overloaded ?== and != are not called
  • BOO-330 - Codecompletion does not include events.
  • BOO-333 - Events can be directly raised outside of defining assembly.
  • BOO-348 - boo.rsp relies on assemblies not included in mono-core
  • BOO-450 - Error msg when accessing non-static outer class member
  • BOO-460 - Accessing member of outer class
  • BOO-465 - Unhandled exception in Boo Explorer when opening new Interactive Console
  • BOO-470 - Void methods and string extrapolation cause Invalid Program exception
  • BOO-474 - member references to duck casts not converted to invoke runtimeservices
  • BOO-475 - try: block without except: or ensure: produces internal compiler error
  • BOO-476 - emit custom attributes for constructors
  • BOO-480 - BooPrinterVisitor does not output assembly attributes
  • BOO-481 - errors with attributes in C# to boo converter
  • BOO-492 - Can't compile class which implements IResourceReader
  • BOO-493 - Hex character escapes rejected in regex literals
  • BOO-501 - slice duck typed arrays and lists
  • BOO-173 - Multi-dimensional arrays.
  • BOO-201 - print AST visitor
  • BOO-246 - Implicit duck typing option
  • BOO-257 - booc task should check for updated targets
  • BOO-264 - by ref parameters
  • BOO-269 - raw array indexing
  • BOO-280 - Explicit interface implementation
  • BOO-298 - len overload for multidimensional arrays
  • BOO-312 - "cat" built-in.
  • BOO-463 - Support for Int16/UInt16 literals (e.g. Int16.MaxValue)
  • BOO-80 - implicit conversion from single char string literal to char
  • BOO-113 - reversed iteration
  • BOO-192 - duck typing - indexed property access
  • BOO-255 - Allow outside scopes to be used by boo interpreter
  • BOO-256 - explict conversions from char to integers and integers to char
  • BOO-277 - Indexed properties with more than1 index
  • BOO-292 - treat any subclass of IQuackFu as a duck when Ducky is set
  • BOO-295 - allow \a and other special characters
  • BOO-299 - treat duck as callable
  • BOO-302 - EvalFile in interpreter
  • BOO-303 - Improve interactive interpreter welcome message.
  • BOO-310 - multi generator expression
  • BOO-331 - use implicit bool conversions when available
  • BOO-334 - for and unpack statements should work with IEnumerator
  • BOO-335 - for and unpack statements should work with any type that exposes a compatible GetEnumerator method
  • BOO-336 - Boo.Lang.Hash does not override Clone.
  • BOO-350 - allow assemblies to be generated only in disk
  • BOO-366 - Remove one level of indirection from generators and allow generator methods to use IEnumerator as the return type
  • BOO-373 - And the unary complement operator (~)
  • BOO-6 - MonoDevelop plugin
  • BOO-7 - c# style private interface implementations
  • BOO-130 - use relative file paths instead of absolute file paths in compiler output
  • BOO-249 - A new binary release.
  • BOO-296 - Add Set class to Boo.Lang
  • BOO-18 - boo primer
boo 0.6 is here

As usual download it from here.

Change Log - Boo - Version 0.6

  • BOO-227 - Overridden Equals (==) not commutative
  • BOO-258 - check variable access and privileges at compile time
  • BOO-327 - Type inference error when calling outside module class
  • BOO-369 - compiler internal error when a field has an initialiser taking a closure as argument
  • BOO-379 - as operator precedence is too low
  • BOO-383 - The parser should check when the keyword 'super' is used in an invalid context.
  • BOO-394 - Correct Attribute.ToString()
  • BOO-396 - Closures can't use the fantastical variable input magic.
  • BOO-397 - Two fields, same name, results in compiler error rather than friendly error message.
  • BOO-398 - Brace-based closures do not work with varargs syntax.
  • BOO-404 - custom parameter attributes
  • BOO-407 - Calling params inside of a closure is broken.
  • BOO-410 - Bad error message with structs that have partially implement interfaces.
  • BOO-411 - type inference for operator methods is done too late
  • BOO-412 - Keywords in a namespace? Oops!
  • BOO-417 - Casting self as duck removes visibility level. ;(
  • BOO-420 - cannot cast from boxed char to int and back
  • BOO-423 - Timespan literals won't work with numbers starting with decimal point
  • BOO-439 - Ast attributes are not applied to index properties
  • BOO-440 - compiler doesn't have override & overload of indexed properties
  • BOO-441 - arrayindex += 1 does not compile
  • BOO-442 - static constructor related bugs (3 for 1 sale!)
  • BOO-445 - Inplace binary operators do not work with ducks
  • BOO-458 - Scientific notation with negatives.
  • BOO-56 - Add support for calling methods that support a variable number of arguments
  • BOO-315 - SingletonAttribute
  • BOO-342 - Implicit conversion between char and string
  • BOO-352 - Boo.Lang.Useful.Collection.Cache
  • BOO-426 - float literals
  • BOO-434 - ResourceFu (better than Ayende's!)
  • BOO-451 - ast literals
  • BOO-455 - Boo.Lang.Useful.Attributes.OnceAttribute
  • BOO-96 - events in interface definitions
  • BOO-349 - Uninstall from Windows GAC
  • BOO-376 - properly detect and report type inference cycles
  • BOO-377 - WARNING: assingment inside condition
  • BOO-378 - command line option to booi: -w (print warnings)
  • BOO-381 - Enhancements to property and required attributes
  • BOO-382 - have booc check current directory for referenced dlls
  • BOO-393 - Get full method signature when not implementing the full contract of an abstract class / interface
  • BOO-403 - named file resources
  • BOO-406 - explode operator
  • BOO-409 - Using as cast with callables
  • BOO-424 - Exponential notation
  • BOO-437 - allow curly braces in regex literals
  • BOO-459 - allow float literals with no decimal point

No more assembly versioning

From now on, boo assemblies will have the fixed version number for .net 1.1 compatible assemblies and for .net compatible assemblies (when we include support for generics).

The actual release version will be available in a new builtin: BooVersion.

>>> BooVersion

The motivation is minimizing the hassle of upgrading to new boo versions. Specially for the IDEs and external projects that now depend on boo.

The binary contract of Boo.Lang shouldn't change any time soon.

Boo.Lang.Compiler's contract is a little more fluid but I don't see how we can be agile if we are not allowed to change some things every now and then.

With this I hope we'll be able to finally have monthly releases (the GAC breakage was a great force against releasing new versions).

Have fun!

Georges Benatti has just published a boo package for MacOSX users!

Our loved ghost has never looked so good, take a look.

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: