Hi everyone, nddrylliog here, welcome to the latest ooc progress report blog post – sorry for the long silence, we’ve been really busy and i’ts more than time to keep you up.
JDLL ‘09
So first, some feedback of the JDLL (Journées Du Logiciel Libre = Free Software Days) 2009, in Lyon. The conference was given in this room (got no photos of the actual talk, sorry) :

It was my first public talk, in front of a ~45 people, and it went great! I explained the major challenges programmers were confronted to nowadays, what were the solutions usually used, and the importance of a good programming language.
People were also shown a few examples of ooc code, and by judging the “oohs” and the “aahs”, even people that came here for the PHP talk (given by Patrice Ferlet aka Metal3d in the second half-hour) had some good surprises!
When shown the match statement with strings, someone argued you could do the same in Java 7, before realizing that it could be not only strings, but *anything* that overloads the “==” operator.
There was a few questions about ooc (e.g. licensing, name mangling, actual toolchain), but the overall feedback was really good. Apart from the usual bored people, it seems like ooc really scratches an itch for many people out there.
After talk, I went to talk with the guys at the AmigaOS booth. I told them about ooc, and how we’d love to support alternative OSes/platforms (AmiagaOS runs on ppc arch now, apparently). At first, they were like “why another language?” so I did a small demo. Everything worked out-of-the-box: functions, classes, generics, match, gcc/tcc/etc. backends, showed the generated C. The programmer among them seemed to be impressed, and said he’d talk about it to fellow Amiga devs.
If Amiga-ers or Haiku-ists are reading, please contact us! We need testers. The more portable, the merrier.
RPM packages
Patrice Ferlet (aka Metal3d) has been working on RPM packages for ooc and related projects, mostly for Fedora and CentOS. After some path issues and other packaging-related glitches, it seems we now have fully working rpm packages for the latest ooc. So that when an official release is out, ooc will be a yum away from many users
We’re still looking for packagers for Arch, Gentoo, *BSD, Debian/Ubuntu, Suse, Windows, OSX, and others. If you’d like to maintain any of these, send a message to the mailing list. Thanks in advance for your contributions, and thanks Patrice for the RPM packages!
Array literals
Array literals have been improved recently.
arr := [1, 2, 3]
// arr is an Int*
import structs/ArrayList
list := [1, 2, 3] as ArrayList
// arr is an ArrayList
This is good magic, achieved with a simple overload of the “as” operator, in ArrayList.ooc :
operator as (data: T*, size: SizeT) -> ArrayList {
ArrayList new(data, size)
}
Thus, you can write your own list implementation and benefit of the same magic. Equal opportunity ftw!
Also, in the near future, expect similar magic for map literals, e.g. [key => value, key2 => value2] probably (makes sense with the ‘match’ syntax, and is non-ambiguous).
Regular for
We had foreach for a long time, but regular for was missing (see bug #31) It’s now been added, and it works like this:
step := 5
limit := 100
for (i := 0; i < limit; i += step) {
printf("%d\n", i)
}
It shows that reporting issues is effective – we’re listening, and reactive. If you have a better way, shout it now, before it breaks too many things.
Rock
Work on rock has been resumed, and is progressing pretty fast. The AST and CGenerator parts have basic functionality, and we’re looking into using Ian Piumarta’s peg/leg for the frontend, this time. We’ll keep you up to date =)
Check out the latest rock codebase here. You can help! Some code from j/ooc’s codebase can still be re-used (porting is quite easy). Come on #ooc-lang on IRC if you want to help.
P.S: Rock is looking for a mascot. If you are (sometimes) a 2D/3D artist or know one, submit your proposals on the mailing list!