Home

Boo is a new object oriented statically typed programming language for the Common Language Infrastructure with a python inspired syntax and a special focus on language and compiler extensibility.

If you want to try boo, read the Getting Started guide. To dive deeper, follow the link to the Wiki pages.

News

Boo 0.9.1 is here!
Last changed Mar 18, 2009 12:32 by Cedric Vivier

Just after two months of the huge 0.9 release, here is Boo 0.9.1 - bringing more new features and bug fixes.
Highlights of this release are:

  • Macro definition arguments [BOO-1146] - macro definitions can define typed arguments as with any method definition.
    macro repeatLines(repeatCount as int, lines as string*):
        for line in lines:
            for i in range(repeatCount):
                print line
    
    repeatLines 2, "boo", "rocks"
  • Nested macros extensions [BOO-1140] - nested macros no longer have to be defined within their parent macro block.
    macro parent:
        yield
    
    macro parent.child:
        yield [| print "parent.child" |]
    
    parent:
        child
  • Omitted expression for member references [BOO-1150] - `.foo' is now equivalent to `self.foo' by default. This behavior can easily be changed by a macro or compiler step.
    macro with(target, body as Expression*):
        for expression in body:
            match expression:
                case BinaryExpression(Left: mre = MemberReferenceExpression(Target: OmittedExpression())):
                    mre.Target = target
                    yield
    
    with System.Threading.Thread.CurrentThread:
        .CurrentCulture = CultureInfo.InvariantCulture
        .CurrentUICulture = CultureInfo.InvariantCulture
  • Volatile fields [BOO-806]
    class Threaded:
        [volatile] foo as int
  • TypeSystem refactoring - brings cleaner API and faster compilation (-30% time)

Take note that from now on strong versioning is used on Boo releases, this release assemblies are versioned `2.0.9.1'.

Contributors to this release: Cedric Vivier, Daniel Grunwald, JB Evain, Rodrigo B. De Oliveira.
Read the changelog for the complete list of improvements.

Download it now and have fun!

Posted at Mar 18, 2009 by Cedric Vivier | 0 comments
Boo 0.9 is here!
Last changed Jan 27, 2009 11:29 by Cedric Vivier

It's been a long time but the biggest release ever of Boo is right here now!

Huge improvements all over the board as you can read in the full changelog, its chief weapons are:

  • Generator macros [BOO-1077] - macros are no longer limited to returning a single statement or block and instead are able to yield an indefinite number of nodes:
  • Nestable macros [BOO-1120] - macro definitions can be nested to allow for context sensitive keywords
  • Type member macros [BOO-415] - macros can be used in class definition bodies
  • Pattern matching [BOO-1106] - simple but powerful object pattern matching with the match/case/otherwise macros
  • Support for generic extension methods [BOO-937] - LINQ style extension methods
  • Generic parameter constraints [BOO-935] and Generic parameter type inference [BOO-1102]
  • Strict mode [BOO-1115] - strict mode changes a few compiler rules: default visibility for members is private, method parameter types and return types must be explicitly declared, among other things
  • Asymmetric property accessor visibility [BOO-1094]
  • String interpolation formatting (eg. "0x${n:x4}") [BOO-1006]
  • Support for SilverLight profile [BOO-1117] - and Vladimir Lazunin kicked it off with a Tetris example.

You can read examples on these 0.9 new features on Rodrigo's blog.

This release is brought to you by Avishay Lavie, Cedric Vivier, Daniel Grunwald, Marcus Griep and Rodrigo B. De Oliveira.

Download it now and have fun!
Join the mailing-list for questions and latest updates about Boo development.

Posted at Jan 27, 2009 by Cedric Vivier | 0 comments
Boo 0.8.2 is out!
Last changed May 20, 2008 15:41 by Cedric Vivier

Yeah, it's that time again!

As usual lots and lots of improvements in this new release including :

  • (almost) complete nullable type support
  • shorthandsfor nullable types (T?) and enumerables (T* instead of IEnumerable[of T])
  • improved booish behavior with nicer colors (and it should work inside emacs now )
  • 'else' block for 'for' and 'while loops
  • fixes and improvement related to generic methods (overloads and interface declarations)
  • and lots of other fixes here and there

 Complete list of changes available here.

Contributors to this release :
Avishay Lavie, Cedric Vivier, Marcus Griep, Rodrigo B. De Oliveira

Have fun!

Posted at May 20, 2008 by Cedric Vivier | 1 comment

Bamboo would like to thank

  • Georges Benatti who always believed the idea, thanks man!
  • Carlinhos for always being there
  • cv for being so enthusiastic and introducing the project to the hausmates
  • the hausmates for such a warm welcome and the great infrastructure
  • Terence Parr for the great ANTLR tool along with all the people who hang on the ANTLR group
  • The guys from the Mono Brasil project
  • Guido van Rossum for coming up with such a great language that eventually served me as inspiration to start this project
  • The one who supported me all the way through this last 10 years: I love you, Ma!
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.
  1. May 07, 2007

    Adam Banko says:

    Why does the title image on http://boo.codehaus.org/ link to http://foci.rubyhau...

    Why does the title image on http://boo.codehaus.org/ link to http://foci.rubyhaus.org/ instead of http://boo.codehaus.org/ ???

  2. Jun 07, 2007

    Rodrigo B. de Oliveira says:

    I have no idea.

    I have no idea.

  3. Sep 01, 2007

    jbryankelly says:

    Fixed

    Fixed

  4. Feb 19, 2008

    Eric Swanson says:

    How will the future of Boo be impacted by the Dynamic Language Runtime? Will the...

    How will the future of Boo be impacted by the Dynamic Language Runtime? Will the need for it disappear? I'd hate to see an idea like this get lost by the "MS engine", but the DLR is very promising.