1 This is metalua-0.3.9, an alpha version of the Metalua compiler.
3 This software and its documentation are released as open source
4 material, under the MIT Public License, as described in the file
5 LICENSE. It uses source code and documentation from other open source
6 projects, all released under the MIT License, namely:
8 - Lua, for its virtual machine, developped by the Lua team at the
9 Pontifical Catholic University of Rio de Janeiro in Brazil,
11 - Yueliang, a Lua compiler in written in Lua, developped by Kein-Hong
12 Man, constitutes the base of metalua's bytecode dumper.
14 - Rings, a part of the Kelper project, lets handle multiple Lua states
17 - Pluto, developped by Ben Sunshine-Hill, allow serialization and
18 deserialization of arbitrary Lua data. It is used to improve
19 communication across the states created with Lua Rings.
21 - Bitlib, developped by Thomas Reuben, implement bitwise operators in
22 Lua, and eases the bytecode dumping.
24 Main changes since metalua-0.3:
25 ===============================
27 - the compiler/interpreter executable has been completely
28 rewritten. It address several shortcomings, such as:
30 * integrated REPL loop;
31 * ability to properly run programs, among other by passing parameters
33 * isolation of compilation processes: when several files are
34 compiled, the alterations caused by one to the copmiler won't
35 affect the compilation of the next ones;
36 * richer API, through a standard commond line options handling library.
37 * automatic insertion of a require() statement making sure that the
38 metalua runtime is loaded before a program starts running, even if
39 it's precompiled and run later.
41 - the ability to process Metalua source files is optional (added with
42 a "require 'metalua.compiler'" statement), and works correctly for
43 all functions that might cause compilation: require(), loadstring(),
46 - the mlc converter (the hub that handles translation between all
47 program representation formats such as files, source strings, token
48 streams, AST, executable functions etc.) has been completely
51 - parts of the compiler are now written in Metalua, as opposed to
52 plain Lua. The compiler building process now includes a
53 bootstrapping stage, i.e. the generation of a minimalist Metalua
54 compiler in charge of building the final one.
56 - isolation of compilation processes is achieved by Springs, a library
57 that fusions together Lua Rings and Pluto, allowing to create
58 independant Lua universe that communicate easily together.
60 - the structural pattern matching library has been significantly improved:
62 * optimized support of multiple simultaneous values match;
63 * a match statement causes an error if no pattern succeeds to capture