Hi everyone!
A few updates on the codebase and language:
You may have noticed last night that there were just a few hundred commits
added to master. Several different things we've been building on the "horizon"
branch are now being migrated to
code.pyret.org. Though it's a significant
increment, this isn't yet the final stable release for the summer, so we'll be
announcing other improvements and pointing out things that have changed in
upcoming weeks.
First and foremost, we finally got the new module system to the point where it
could bootstrap the compiler and work well propagating type information across
modules. I've written up a brief wiki article to describe why this matters:
https://github.com/brownplt/pyret-lang/wiki/TM014-----Module-Loading
Not much of this surfaces to users of Pyret _yet_; it mostly enables things on
the backend and gives us a much happier and consistent platform to build on.
This is now what main Pyret runs on, which is good news, and if you've been
tracking Pyret development, this is a big backend change.
There are several other significant improvements and additions; we'll be
detailing each in a separate message over the next few days, in order to
avoid a really long message and a single megathread.
There are a few significant added features:
* Error messages have been significantly reworded, reworked, restyled, and
improved.
* The type-checker is available via a drop-down menu next to the Run button.
It is still in beta, but we want folks to try it out and give feedback.
* "TODO", AKA templating expressions have been added.
* A new shorthand for anonymous functions has been added.
* Tuples have been added as a new kind of value, with some initial support for
destructuring assignment.
*
code.pyret.org now has an "Open" button for accessing files and images.
There are also a few minor changes to the language that can break somewhat
esoteric programs:
* Method-declaration syntax has changed slightly
* Explicit `block` markers have been added to syntactically distinguish
multi-expression from single-expression blocks
* ";" is no longer a synonym for "end"
Happy programming,
The Pyret Crew