added a try...catch...with extension
[metalua.git] / README
blob778e42469af2955f2bfbc712729eb5a86b8f2180
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
15   from within Lua.
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
32     to them;
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(),
44   loadfile(), dofile().
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
49   rewritten.
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:
61   * bug fixes;
62   * optimized support of multiple simultaneous values match;
63   * a match statement causes an error if no pattern succeeds to capture
64     the value(s)
66