Skip to content

Releases: nanopass/nanopass-framework-scheme

Parsers no longer create run-time dependency

18 Oct 18:22
Compare
Choose a tag to compare

With these change a compiler writer may include nanopass generated parsers in their compiler without incurring a run-time dependency on the (nanopass) library or any of the libraries that compose it. This means it can be used to define parsers for intermediate representations in use cases like Chez Scheme, where the resulting compiler cannot have dependencies on external libraries.

IronScheme support and some small fixes

27 Aug 01:43
da342fb
Compare
Choose a tag to compare

This release was prompted by the Chez Scheme release, though it has been a long while since the framework was originally tagged with a release. A handful of updates since the last release:

  • Fixed handling of extra arguments for processors. Previously these were erroneously passed positionally instead of matching up by name, meaning if the order of the caller was different than the callee, arguments were being passed in the wrong positions.
  • Improved error message for lists of terms in a production, where the nesting level sometimes made it confusing if, for instance a list of lists of terms was passed where a list of terms was expected. (Thanks to Jamie Taylor @jltaylor-us for reporting this.)
  • Improved, though did not totally fix assert-error handling of string output.
  • Added pass-input-parser and pass-output-unparser to support automatic look-up of language parser and unparsers along with pass-input-language and pass-output-language to lookup the input and output languages of a pass.
    • This feature uses Chez Scheme's define-property and an implementation of define-property for Ikarus and Vicare was also added a part of this change.
  • Updated Vicare support, though it may be out of date again by now.
  • Small fix to with-r6rs-quasiquote to fix an issue that cause quasiquote to be improperly captured in some cases.
  • Fixed unit tests to return a non-zero exit code when they fail
  • Added IronScheme support (thanks to Llewellyn Pritchard @leppie for contributing the implementation and Göran Weinholt @weinholt for help with testing!)

This release also includes a preview of nanopass in nanopass functionality, but this is very preliminary, and we cannot yet completely define passes and languages without the existing nanopass implementation.