As of release 0.2.1, the last conceptual feature (the macros) was added to the language.
From now on, the development will be focused on the core libraries implementation. These are not all possible libraries, but only those required for the production, self-hosted (i.e. written in o42a) compiler development. This includes the following:
A handy collections require generics at least. To fully support adapters (e.g. for hash code evaluation), some other metaprogramming will be required. That's why the macros were introduced in 0.2.1. The macro support will evolve primarily in favor of the collections library.
An input/output library will require a closer integration with the system libraries. At least, it will require an i/o functions calls. This will probably require the following:
- C Calls
The o42a ABI is very different from the C one. It would be extremely handy to develop a tool for ease the C function calls in order to communicate with a system libraries. This can be implemented as an o42a library containing a set of directives describing the C functions. Such a descriptions will be a part of an object definitions. An object access would mean a function call. These directives will take care of normalization and code generation. It would be much easier to use them then implementing a built-in objects, as it currently the case.
A core objects (basic types, operations on them, etc.) also require a lot of enhancements.
The current compiler implementation is far from stability. A lot of code should be written to enhance it. But writing of basic tests is extremely boring and time consuming. So, I hope the libraries implementation will be a good test by itself (given these libraries will be tested).
Another important task would be to write a code examples. Rosetta Code examples are just perfect.
The generated code performance is not a primary target of 0.2.x development. It is much already done in this area. But, if performance will suffer significantly, then more normalization techniques will be implemented. The primary concerns are about variables, locals, and arrays.
The next major step is a release 0.3.0, which will be a starting point of a production compiler development and will contain a small, but important, subset of the o42a platform, thus making it actually usable.