← Back to team overview

ooc-dev team mailing list archive

rock 0.9.0 - bootstrapping ooc compiler, new features, announcements

 

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)