Thursday, November 13, 2014

Annotations, Pretty errors now built into Wake

It becomes tougher and tougher to keep making quick releases of Wake. In addition to compiling the feature, I now have a slew of libraries written in Wake that might need to be updated, and/or recompiled in the proper order.

This was the case with the most recent release of Wake, which involved the creation of Annotations. Notably, they are now used by wUnit to find what's a @TestClass and what's a @TestMethod. From here on, they can be used to create javascript interoperability, as I covered in my last blog post.

This annotation data is stored in a binary file that just tells the compiler how a class can be used, which I've called a table file (and it has the .table extension). It is basically the same as a .hi file, for haskellers out there. While many features and bugfixes for the Wake compiler do not affect these files, such as the new error reporting, other features do.

But changing the table files is not a compiler-only change. The libraries that you use in your wake projects must be rebuilt with a compatible version, and some libraries themselves, such as the wake reflection library, must be updated to read the latest stuff. It's a blast to spend time writing in Wake instead of C++, but it risks lowering productivity as we near V1.

That's why, behind the scenes, this release features a new build server for Wake. When features come out that are not binary compatible with the last version of the compiler, it is now a simple task to rebuild all of the core libraries in order with the latest compiler, and save those libs in a bundle for our users to download and use in their projects.

Infrastructure like this is exactly what we need to keep productivity high as features keep coming out and we have keep building new Wake libraries to maintain.

We are still looking for helping hands, and still chugging onward. See you again for the next major feature addition!