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 `126.96.36.199'.
Download it now and have fun!