the metalanguage
- make it easy to use output buffers instead of the "%" mechanism
- implement an include or import directive
- improve error handling
builtin procedures
There are only a very small number of builtin procedures. In particular there are no system interface procedures as yet. These can of course very easily be added as needed ad hoc, but there must be a minimal set that it would be sensible to provide as standard. Suggestions are welcome.
bindings to other languages
Wrappers that do for other languages what is already done for C and D are easy to add, and the external interfaces are intended to make it as easy as possible to connect to other languages. But in each case there is a mountain of documentation to digest: here are a few obivious candidates, in no particular order:
- C language - ok and tested
- D language - ok and tested
- the existing TCC compiler interface may be helpful in binding to other systems
- java/gcj - a preliminary wrapper for rules-wrapped-in-java exists
- javascript
- bash
- perl
- python
- ruby
- php
- lua
- scheme
- erlang
- ocaml, ml and their ilk
- mono/dotgnu c#
bindings to code generators
Integrating the language machine with a fully fledged code generator and optimisation framework offers intriguing possibilities. Again the main obstacle is understanding the interfaces and conventions used in each case. A few candidates:
- tcc - (proof-of-concept already done) - very fast compilation, not optimised
- gcc
- gnu lightning
- the code generation library
bindings to frameworks and applications
Again, so many possibilities, so much documention to read. A few obvious candidates:
- the apache portable runtime
- mozilla - a plugin, or as extension to javascript
- sqlite, mysql, postgresql etc
documentation documentation documentation
The sources are laid out to suit my need to see as much on the screen at a single glance as is possible. The D-to-D process can act as a pretty printer, but strips out the comments
More documentation is in preparation, including a book. But other angles are always helpful. I have spent most of my working life thinking in variants of the metalanguage, so things that seem easy and obvious to me may not be obvious to others