This is a large release, relatively speaking. It's been a long time since the last release (Mar 2015!), but Mirah's had a lot of improvements since then. I decided to bump the minor release to 0.2 because it felt right. This release has a lot of code in it from a number of contributors.
Here's a list of highlights for this release. If I miss anything cool, it's my fault not the authors of the features or fixes. If you've got something to call out, please add it to the thread.
## Semantics
Now == != tests for value equality and === / !== tests for identity. I'd talked about this before [link].
In Java, == and != are value equality for primitives, but reference equality for references--ie identity. In Ruby, they don't test identity. Now Mirah acts more like Ruby in this way. When using == on an object, it will return the results of calling `equals`.
## New Build-in Macros
* Cast macro!
Casts were ambiguous, as they looked like calls. They also could make code trickier to follow. Mirah now has a new cast macro built in.
# Instead of this:
int(a_float)
# Do this
a_float.as!(int)
* Synchronization
my_object.synchronize { thing_that_needs(a.lock) }
* Access control flags as modifiers
private def my_method; end
And more! Look at the changes in src/org/mirah/builtins!
## Lots of bug fixes
* Better error messages on parse failures.
* The code generator won't generate a message for every class anymore.
* The warning about matching scope sizes is gone.
* String literals can be used as hash literal keys
## Internals / Build
* Parser moved to mirah repo, and hooked into build. Now running rake test will build the parser directly and then use that version of the parser when running tests. It’s not part of the meta-circular tests yet though.
* Update asm to 5.
* Logging in the compiler is now macro-ified which makes the compiler noticeably faster when debugging is off.
* Macros as service providers: Macros are now registered as service providers. This should make it easier for libraries to create jars that export their macros. I've got some ideas to build on this that should make it easier.
## CLI
--new-closures is gone as there's only one closure implementation now.
The full list of changes can be found in History.txt.
Thanks to all our contributors for this release!
--
You received this message because you are subscribed to the Google Groups "The Mirah Programming Language" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mirah+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.