The Nabaztag:tag uses a virtual machine to run “bytecodes”, quite like Java does. It makes it easier for the developpers to “update” the code at runtime (and I guess it also sandboxes the “user” code, allowing for better ressources management and maybe some security…). The bytecodes are written in a subset/version of a language called “Metal”, written by Sylvain Huet.
The Nabaztag:tag uses two bytecodes, that I will describe as:
The BOOT bytecode can only be updated through a firmware update, while the NOMINAL bytecode can be customized for every Nabaztag. But I'm no expert for this stuff; Pixel did a great job exploring and tweaking the bytecode to add functions, even before we had the sources, see the OpenJabNab wiki (French) for more informations.
Well, now that we have the sources, the remaining question is: How to compile from a Metal source to an executable bytecode ?