]> git.lizzy.rs Git - metalua.git/blobdiff - README.TXT
Merge remote branch 'origin/master'
[metalua.git] / README.TXT
index 30867943c5368f6a87d53b61bd55adba72c24c8f..4738772a146368fadbd3d84b1c483dc23806c032 100644 (file)
@@ -2,19 +2,20 @@ README.TXT
 ==========
 For installation matters, cf. INSTALL.TXT
 
-Metalua 0.4.1
-=============
+Metalua 0.5
+===========
+
 Metalua is a static metaprogramming system for Lua: a set of tools
 that let you alter the compilation process in arbitrary, powerful and
 maintainable ways. For the potential first-time users of such a
-system, a descripition of these tools, as implemented by Metalua,
+system, a description of these tools, as implemented by Metalua,
 follows.
 
 Dynamic Parsers
 ---------------
 
 One of the tools is the dynamic parser, which allows a source file to
-change the grammar recognized by the parser, while it's being
+change the grammar recognized by the parser while it's being
 parsed. Taken alone, this feature lets you make superficial syntax
 tweaks on the language. The parser is based on a parser combinator
 library called 'gg'; you should know the half dozen functions in gg
@@ -34,7 +35,7 @@ API to do advanced things:
   So if your parser won't natively let you specify infix operator
   precedence and associativity easily, tough luck for you and your
   code maintainers. With combinators OTOH, most of such useful
-  functions already exist, and you can write your owns without
+  functions already exist, and you can write your own without
   rewriting the parser itself. For instance, adding an infix operator
   would just look like:
 
@@ -70,8 +71,8 @@ freely interchangeable. The make-or-break deal is then:
 - To easily let users see sources as trees, as sources, or as
   combination thereof, and switch representations seamlessly.
 
-- To offer the proper libraries, that won't force you to reinvent a
-  square wheel, will take care of the most common pitfalls, won't
+- To offer the proper libraries that won't force you to reinvent a
+  square wheel will take care of the most common pitfalls and won't
   force you to resort to brittle hacks.
 
 On the former point, Lisps are at a huge advantage, their user syntax
@@ -98,7 +99,7 @@ Library-wise, Metalua offers a set of syntax tree manipulation tools:
   error statements", "rename all local variables and their instances
   into unique fresh names", "list the variables which escape this
   chunk's scope", "insert a type-checking instruction into every
-  assignments to variable X", etc. Most of non-trivial macros will
+  assignment to variable X", etc. Most of non-trivial macros will
   require some of those global code transformations, if you really want
   them to behave correctly.
 
@@ -113,8 +114,51 @@ Library-wise, Metalua offers a set of syntax tree manipulation tools:
   extensions.
 
 
-Notworthy changes from 0.4 to 0.4.1
-===================================
+Noteworthy changes from 0.4.1 to 0.5
+====================================
+
+Simplification of the install and structure:
+
+- This release is included in Lua for Windows, so now it couldn't get simpler
+  for MS-Windows users!
+
+- Metalua is written in pure Lua again, thus making it platform-independant. 
+  No more mandatory C libraries. Pluto interface might be back, as an option,
+  in a future version, but it's not worth the install trouble involved by
+  DLL dependencies.
+
+- Simpler build process, just run make.sh or make.bat depending on your OS.
+
+- Metalua libraries are now in a separate metalua/* package. This allows to
+  mix them with other Lua libraries, and to use them from plain Lua programs
+  if you FIXME
+
+
+Other changes:
+
+- new option -S in metalua: prints sources re-generated from AST, after macro
+  expansion.
+
+- compatible with more Lua VMs: 64 bits numbers, integral numbers, big endians...
+
+- some new extensions: xloop, xmatch, improved match.
+
+- ASTs now keep track of the source that generated them (API is not 
+  mature though, it will be changed and broken).
+
+- improved table printer: support of a plain-Lua mode, alternative indentation 
+  mode for deeply-nested tables.
+
+- added a generic table serializer, which handles shared and recursive 
+  sub-tables correctly.
+
+- gg API has been made slightly more flexible, as a first step towards a
+  comprehensive syntax support for gg grammar definition. Follow the gg-syntax
+  branch on github for ongoing work.
+
+
+Noteworthy changes from 0.4 to 0.4.1
+====================================
 
 - Proper reporting of runtime errors
 - Interactive REPL loop
@@ -122,7 +166,7 @@ Notworthy changes from 0.4 to 0.4.1
 - Update to Pluto 2.2 and Lua 5.1.3
 - Build for Visual Studio .NET
 
-Notworthy changes from 0.3 to 0.4
+Noteworthy changes from 0.3 to 0.4
 =================================
 
 - A significantly bigger code base, mostly due to more libraries:
@@ -140,7 +184,7 @@ Notworthy changes from 0.3 to 0.4
   friendly than the mlc from the previous version.
 
 
-- Metalua source libraries are looked for in environmemt variable
+- Metalua source libraries are searched for in environmemt variable
   LUA_MPATH, distinct from LUA_PATH. This way, in an application
   that's part Lua part Metalua, you keep a natural access to the
   native Lua compiler.
@@ -343,9 +387,11 @@ samples and extensions, an adequate test suite, refactored libraries.
 
 Credits
 =======
+
 I'd like to thank the people who wrote the open source code which
 makes Metalua run: the Lua team, the authors of Yueliang, Pluto, Lua
 Rings, Bitlib; and the people whose bug reports, patches and
 insightful discussions dramatically improved the global design,
-including John Belmonte, Olivier Gournet, Vyacheslav Egorov, David
-Manura, Olivier Gournet, Eric Raible, Laurence Tratt...
+including John Belmonte, Vyacheslav Egorov, David Manura, Olivier
+Gournet, Eric Raible, Laurence Tratt, Alexander Gladysh, Ryan
+Pusztai...