Skip to content

Releases: DimitriBarronmore/luxtre

Luxtre v0.6.1

01 Dec 19:42
Compare
Choose a tag to compare
  • fixed oversight with grammar loading which was causing files to not be found

Luxtre v0.6.0

01 Dec 01:46
Compare
Choose a tag to compare
  • _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

11 Nov 23:39
Compare
Choose a tag to compare
  • 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

11 Nov 03:33
Compare
Choose a tag to compare
  • 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

11 Nov 01:51
Compare
Choose a tag to compare

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

17 Jun 04:26
Compare
Choose a tag to compare

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

17 May 20:55
Compare
Choose a tag to compare
  • fix grammar for lambda functions
    • lambda functions now work properly with return
    • single expressions are implicitly returned

Indev v0.3.0

17 May 20:32
Compare
Choose a tag to compare
  • 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

luxtre_error_demo_small

Indev v0.2.1

13 May 02:48
Compare
Choose a tag to compare
  • 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

11 May 01:12
Compare
Choose a tag to compare
  • 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
    • 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.
  • 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.
  • EXTREMELY WIP command-line tool. It loads .lux files and that's all it does.