Skip to content
This repository has been archived by the owner on Jul 7, 2024. It is now read-only.

0.5.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@SquidDev SquidDev released this 22 Aug 21:22
· 303 commits to master since this release

Libraries

  • [@zardyh] Add optional arguments to lambdas via a macro.
  • [@zardyh] Add block to urn/control/prompt.
  • [@zardyh] Use else instead of true in cond blocks.
  • [@zardyh] Add defmethod and defgeneric.
  • [@SquidDev] Allow fetching arg from the varargs if it is not defined.
  • [@SquidDev] Fail gracefully if os.getenv or os.exit are not defined.
  • [@zardyh] Change eq? and pretty to use defgeneric.
  • [@zardyh] Add defstruct.
  • [@SquidDev] Add a primitive directed graph manipulation library.
  • [@SquidDev] Make c[ad]+r generation more robust.
  • [@zardyh] Improve do, an add a complimentary do-list. It is encouraged to use these instead of for-each.
  • [Everyone] Improve documentation and add more examples.

Compiler

  • [@SquidDev] Improve stdlib location detection and allow specifying stdlib path through the URN_STDLIB environment variable.
  • [@zardyh] Add roman numeral support to parser. Use the r format specifier (#rMDCLXVI).
  • [@SquidDev] Add plugins/doc-test.lisp tool, to generate tests from examples in docstrings.
  • [@SquidDev] Add a code coverage profiler (--profile=coverage) and run it on tests.
  • [@SquidDev] Add readline and linenoise support to the REPL.
  • [@zardyh] Allow using ' as a thousands separator.

Optimiser/Codegen

  • [@SquidDev] Fix codegen crash when calling constants.
  • [@SquidDev] Make optimiser replace truthy values with true in cond.
  • [@SquidDev] Fix codegen issues on tail-recursive functions where no variables changed.
  • [@SquidDev] Wrap constants in parentheses when indexing them.
  • [@SquidDev] Warn when definitions are potentially accessed before being defined.
  • [@SquidDev] Reduce letrec into let where possible.
  • [@SquidDev] Improvements to (id x) reduction, allowing lambdas and structs to be reduced.
  • [@SquidDev] Localise the most commonly used variables when we have too many.
  • [@SquidDev] Unify binding handling, fixing several issues with variadic arguments.
  • [@SquidDev] Write many tests for codegen and optimiser.