This week I decided to go and read all of Mirah’s open issues starting with the earliest submitted ones. I’d been spending so much time just looking at the top of the list. I didn’t have a good sense for which ones were duplicates, which were pretty undefined and which were easy. Thankfully, Mirah doesn’t have that many issues, so attempting to read through them all wasn’t a ridiculous undertaking. There were only 64, and I had filed about a half dozen of them myself.
In the end, I was able to close 7, and get a good sense of where a number of the other ones stood in terms of how much work it’ll take to fix them. Of course there were a few that made me confused, where I don’t have any idea where to start digging to fix them.
After going through the stack of issues, I have a better sense of what I want to try to tackle next week. Here’s a few that I think look fun.
#41 – adding ++ to the language.
++ isn’t in the grammar yet, so this would require learning more about the parser. And, I’d get to play around with the grammar, which is always fun, and something I haven’t done much of since graduating.
Currently Mirah uses Java’s ==, which checks identity not equality. We’d like to use Java’s equals as our ==, but I’ve had a little trouble getting it working properly. Still, this is a fun one to hack on.
#45 – an issue with how field assignments check typing
Namely, they don’t really. It isn’t completely straight forward but I think I’ve nailed down where to make the changes.
#57 – who is self in a block
This looks fun. I’m not quite sure how to make it work. The problem is that you want blocks to work like they do in Ruby, where self is the owner of the outer scope. Currently, Mirah’s bindings don’t do that, so self is the instance of the closure. Looking at this got me thinking about non local return(NLR). There was an interesting discussion about it on Twitter today with @evanphx saying
I think it’d be really interesting to try to add NLR to Mirah’s blocks. It might be crazy, but it could also be awesome.
#69 – Mirah doesn’t check blocks signature against the signature of the method they’re supposed to be implementing.
Madness, but madness I think I can fix.
Mirah doesn’t let you create constants, other than classes and interfaces. I’d like to change that. And, the error tells you what’s missing. Now, all I’ve got to do is figure out how to implement it.
Tune in next week…
And that’s what I’m looking at doing next Sunday. Or some of it anyway. There’s a bunch of trickiness out there.