Releases: DimitriBarronmore/luxtre
Releases · DimitriBarronmore/luxtre
Luxtre v0.6.1
- fixed oversight with grammar loading which was causing files to not be found
Luxtre v0.6.0
- _ENV and __export variables added by luxtre are now properly recognized by the compiler as local
- grammar and header file loading now uses
package.path
, making the semantics roughly equivalent to require - added a new utility for grammar files to capture output text without it being included in the final file
- decimal exponents and hexadecimal literals are now recognized correctly
- created a good-enough command-line utility for compiling files/folders
- python-like import statement syntax is available as an optional module, as an experiment
- improved preprocessor block detection; several things should now be more reliable
Luxtre v0.5.2
- fully fixed error causing table indexes to act incorrectly in various places (like loops)
- temporary scope no longer overwrites all global scope to be undefined
- temporary scope is now cleared on push
Luxtre v0.5.1
- fix (workaround) nasty esoteric bug that caused loop variables not to not work correctly. hope that doesn't come back to bite me again later
Luxtre v0.5.0
This update is primary internal changes to make the toolchain more robust and easier to work with, but it also contains my two favorite pieces of new syntax and makes some improvements to existing features.
With this update compiling your project is easier than ever (if you use Linux), but unfortunately it still requires all relevant files to be executed. I'm still working on a tool that will compile a full directory without needing to run it.
Changelog
Backend
- Rewrote AST creation from scratch, changing it from iterative to recursive. This makes the speed more consistent and should prevent stack overflow errors from large files.
- Completely reworked the internal code behind variable scope. At the cost of more to think about when writing grammars, scopes are now more powerful and more modular.
Bugfixes
- Lambda functions will now remove single semicolons from the output. This means that
-> ;
will now create an empty function properly rather than causing a post-compilation syntax error. - Function decorators now support arguments, which work identically to the syntax in Python.
- Function decorators now stack on top of each other properly instead of redefining the same variable several times.
New Features
- Added the export statement and associated variable scope.
- Added try - catch - else syntax for error handling.
- The repl now allows you to compile your project as it runs.
Indev v0.4.0
This is a really big one. With this Luxtre is more or less in usable form, even if it's not ideal.
Changelog
- altered folder structure
- changed the output system to be more fully-featured
- the new system allows for finer control over the output, and has facilities for scoped and non-scoped data.
- introduced a new grammar system making writing complex behavior much easier
- rewrote the existing grammar from scratch for the new grammar and output systems
- rewrote the file loader to be more modular
- sets of loader functions can be created dynamically to apply given sets of grammars
- loader sets can be registered to
require
under arbitrary file extensions if desired
- added some functions to the preprocessor
- add_grammar: add a grammar to the current file
- include: add the contents of a header to the current file
- reworked error handling from scratch
- as long as errors are contained within the original file, reported line numbers should now be entirely accurate. cross-file there's sadly nothing I can do.
- restructured and expanded the documentation
- added an option to compile .lux files as they're being run
- expanded and greatly improved the
lux
command-line tool into a simple repl
Indev v0.3.1
- fix grammar for lambda functions
- lambda functions now work properly with
return
- single expressions are implicitly returned
- lambda functions now work properly with
Indev v0.3.0
- shebangs are correctly removed from compiled output
- improved error reporting on failed parses
- parse errors correctly report the original line a token came from
- a list of tokens the parser was expecting is reported alongside the rules they come from
- this prioritizes items which are partially complete; hopefully this provides a meaningful amount of info
- ast debug info shows the position a token came from (will use later when the output system is refined)
- the top-level grammar rule can now include for better error handling
- the loader now uses small wrapper functions which handle error reporting
- currently this is limited to showing the line an error occurred on
Indev v0.2.1
- Macros now safely perform plain matches on text rather than pattern matches.
- '%' also no longer needs to be escaped in macro results.
- Function macro behavior renamed to "callback", because I liked it too much to remove it fully.
- The new "function macro" implementation simply copies the given arguments to the output verbatim in set places.
- Argument detection is more intelligent (at the cost of some messy code).
- The #define directive is now slightly more robust and better supports blank macros.
Indev v0.2.0
- Preprocessor rewritten from scratch.
- Preprocessing is now a distinct step with a dedicated file. Code is run in a sandbox; only specific keywords are handled differently.
- Currently this is limited to
#define
- Currently this is limited to
- The sandbox is unfinished at the moment, but will be expanded upon later.
- The previously relevant code has been removed from the tokenator, making it significantly more organized.
- Preprocessing is now a distinct step with a dedicated file. Code is run in a sandbox; only specific keywords are handled differently.
- Hotfix for a couple issues with the compiled output related to invalid output and error handling.
- 5.1
loadstring
is inadequate. It has been reimplemented.
- 5.1
- EXTREMELY WIP command-line tool. It loads .lux files and that's all it does.