ooc-dev team mailing list archive

rock 0.9.0 - bootstrapping ooc compiler, new features, announcements

To : ooc Mailing List <ooc-dev@xxxxxxxxxxxxxxxxxxx>

: ooc Mailing List <ooc-dev@xxxxxxxxxxxxxxxxxxx> From : Amos Wenger <amoswenger@xxxxxxxxx>

: Amos Wenger <amoswenger@xxxxxxxxx> Date : Fri, 23 Apr 2010 14:00:10 +0200

: Fri, 23 Apr 2010 14:00:10 +0200 Reply-to: amos.wenger@xxxxxxxxx

Hi everyone, It is my great pleasure to announce that rock 0.9.0 went out yesterday night, with binary builds for 32 and 64bit linux, 32bit windows, and 64bit OSX. A few days ago, we bootstrapped<http://en.wikipedia.org/wiki/Bootstrapping_(compilers)>, which means that - rock is now distributed as C source - building rock is as simple as grabbing the C source<http://github.com/downloads/nddrylliog/rock/rock-0.9.0-source.tar.bz2>, extract, type 'make'. That's it. No dependencies. No hassle. - rock is written in ooc <http://docs.ooc-lang.org/>, and it compiles itself! - j/ooc <http://github.com/nddrylliog/ooc> is meant to die (unless someone really wants to maintain it) We're very excited to present you this release, packed with awesome: - interfaces<http://github.com/nddrylliog/bootcamp/tree/master/source/interfaces>have been implemented, so that this compiles fine: Representable: interface { toString: func -> String } Dog: class implements Representable { growl: func {} toString: func -> String { "Dog!" } run: func {} } Cat: class implements Representable { meowl: func {} beLazy: func {} toString: func -> String { "Cat!" } } main: func { print(Dog new()) print(Cat new()) } print: func (r: Representable) { r toString() println() } - we now have real closures <http://github.com/nddrylliog/bootcamp/tree/master/source/closures>, that capture context, thanks to yaijt <http://github.com/nddrylliog/yajit>: import os/Env main: func { msg := "Pleased to meet you" name := Env get("USER") atexit(func { "%s, %s" format(msg, name) println() }) } - a powerful enums syntax <http://github.com/nddrylliog/bootcamp/tree/master/source/enums>, that plays well with C and is incredibly pleasurable to use, e.g.: Colors: enum { red, green, blue } main: func { blue := Colors blue "Blue's value is %d" format(blue) println() } - but also: Multiples: enum(*2) { x=1, y ,z } Sums: enum (+4) { a, b, c } main: func { "x=%d y=%d z=%d" format(Multiples x, Multiples y, Multiples z) println() "a=%d b=%d c=%d" format(Sums a, Sums b, Sums c) println() } - ..and many more features, for example, helpful error messages: helpful.ooc:3:12 ERROR No such function FileReaderClass.new(String, Char) FileReader new("/etc/hosts", 'r') ^^^ Nearest match is: FileReader.new~withMode: static func (fileName : String, mode : String) -> FileReader ..but the type of this arg should be String, not Char FileReader new("/etc/hosts", 'r') ^ [FAIL] We've been working hard to deliver you the very best of our git repos. All our code lives on GitHub <http://github.com/languages/ooc>, and most of it is BSD or friendlier. Please fill our bug tracker <http://github.com/nddrylliog/rock/issues>, suggest ideas on the mailing list <https://launchpad.net/~ooc-dev> or our IRC channel (#ooc-lang on Freenode) Our docs <http://docs.ooc-lang.org/> are still looking a bit bare at the moment - any help is greatly appreciated! Enjoy the fresh release, and spread the word if you like it! (news websites,etc.) -- Amos Wenger (nddrylliog)