This is an old revision of the document!
# Metal source compilation
## Overview
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, which is embedded in the firmware and runs at boot time. It manages the configuration page and also the boot process of the Nabaztag (Wifi auth , DHCP, Firmware updates, …) - The NOMINAL bytecode, which is downloaded when the Nabaztag boots. It will be the main runtime bytecode.
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](http://wiki.openjabnab.fr/) (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 ?
## Get the source
Git repo: `redox/mtl_linux.git`
## Compilation
## Conversion for embedding into the firmware
## Links