Releases: nanopass/nanopass-framework-scheme
Parsers no longer create run-time dependency
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
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
andpass-output-unparser
to support automatic look-up of language parser and unparsers along withpass-input-language
andpass-output-language
to lookup the input and output languages of a pass.- This feature uses Chez Scheme's
define-property
and an implementation ofdefine-property
for Ikarus and Vicare was also added a part of this change.
- This feature uses Chez Scheme's
- Updated Vicare support, though it may be out of date again by now.
- Small fix to
with-r6rs-quasiquote
to fix an issue that causequasiquote
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.