This is not yet another Meta-Language
TinyaML is a virtual machine, a compiler, and a compiler-compiler, powered by the abstract parser tinyap.
It is entirely written in C, endian-safe, and allows easy bindings of new C APIs into the virtual machine.
The VM executes wordcode with a virtual threading model and features a garbage collector.
TinyaML allows the user to compile and run assembly code, or plug new grammars for higher-level languages into the parser and implement the methods to compile their ASTs.
A manual and documentation are in progress at http://beublo23.free.fr/doxygen/tinyaml/.
Version 0.4 should be released soon (pre-release testing currently in progress), featuring many improvements including :
- now compiles and runs in 64-bit archs
- language layers reorganized (currently script over procedural asm over symbolic asm over meta asm over asm)
- bug fixes everywhere (which just basically means that everything works as expected),
- script language improvements :
- variable-sized argument lists in functions,
- packing and unpacking arrays from/onto stack,
- thread handling,
- local and global symbols shared between asm and script layers (one can use script symbols when writing inline asm),
- and more...
- file and tcp/udp socket I/O extension (yeah it's a basic requirement, but having the core features working well was a priority, wasn't it ?)
- And a full-fledged tutorial covering all the aspects of tinyaml, from the basics of the core assembly language syntax to the writing of higher-level language layers and of library extensions !
Contact me at damien dot leroux at gmail dot com for feedback, suggestions, requests or to help improving the code.