lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


On Jan 3, 2008 12:49 PM, steve donovan <steve.j.donovan@gmail.com> wrote:
So what do other 'third tier' roadmaps look like? Anybody got
something interesting in the garage that's coming out this year?

Metalua roadmap:

it's currently undergoing a serious refactoring, with clean separation of meta-stages in different Rings, better build process and packaging, lots of bug fixes (some of them just being implementation of still-missing features).

Among important new features are true hygienic macros, and improvements on the code walker generator.

I've now accumulated a significant amount of feedback on AST syntax, so I'm going to fix all things that deserve fixing (according to me at least) in one go. Such API breaks are a bit hurtful, so although metalua's still alpha, I don't want to repeat them too often.

There's some work going on with better error reporting, especially when extensions are involved (aka "fixing what makes bugs in C or LaTeX macros so awful to pinpoint"); the world deserves better than Lisp's macro-expand-1 :) One of the most important features, to make a fancy parser technology actually usable, is helpful handling of incorrect inputs; parsing parsable inputs is the just easiest case, it's definitely not enough.

The lexer is also being substantially modified. Until now, it was hackish to customize, and difficult to swap dynamically in the middle of a file parsing, although it would have many useful applications.

Since there's an undeniable interest in Lpeg-based parsers for Lua syntax, and although I'm not completely convinced by the modularity of the approach nor its ability to produce graceful error diagnostics, I'd like to integrate an Lpeg alternative parser in metalua. This is the best way to actually test my fears, and maybe be proved wrong :)

Some lesser features planned as samples or libs include:

- macros without a syntax: being able to type $FOO(a, b, c) in the code when we don't want to provide macro 'FOO' with a dedicated syntax, yet want to avoid littering the calls with -{...} and +{...} stage crossers. I regularly rant that excessive focus on superficial syntax is nothing but thinly disguised procrastination, so it's important that metalua offers a readable way to call macros without syntax extensions :)

- Some better samples for "obvious applications": robust extensions for exceptions, classes, RAII, CLOS-like generic methods...

- Error busting again: static analysis of gg parsers, to detect and report potential ambiguities in grammars  at compile time (probably not for this year actually)

- Code analysis samples: most of the samples in metalua are about extending the language, but there's also many interesting things to do by statically analyzing plain Lua code. I need some more convincing samples to demonstrate how to do this.

- Doc, doc, doc! I always need a better, more up-to-date documentation.

I'm also working on a static inference type system for a pretty large subset of Lua, including prototype-based OO, that's written in metalua. This probably doesn't qualify as part of the metalua roadmap, but it can be a very cool application, and it's important to show that metalua is a very fine tool for language research. I want theoreticians to have no excuse for not turning their Greek-letter-filled papers into usable implentations!

Finally, a couple of interesting projects have been started by metalua users. Some of them might contribute back interesting features to metalua.

-- Fabien.