Evolutionary language transformation.
Read the related blog post.
Backport existing PHP features to previous versions through AST compilation. Inspired by lisp macros. Using the incredible nikic/PHP-Parser.
It's turtles all the way down.
- Traits
- Binary number format
- Closure rebinding
Edge cases:
- Calling private methods from within closure
- Ensure
$that
gets passed to nested closures
There needs to be a strategy for managing state. A trait transformer needs to keep track of the traits it found. That is currently missing.
There should be a way to preserve existing code formatting, especially for code that wasn't actually modified. Instead of pretty-printing everything, only changed parts of the AST should be changed in source. Three-way-diff may help with this.
Is there any way to do something like source maps to refer to the original line numbers, so that code remains at all debuggable?