Version 511 has finally moved into the stable release phase, so no more endless rounds of betas. That doesn't however mean it's finished: While I'm developing 512, I plan to keep on top of bugs and do occasional maintenance releases. In fact, there's a new maintenance release out today.
One of the things I'd actually still like to work into 511, which will require me taking some time away from the 512 project, is XInput for controllers. Yut Put reminded me this week that we still need that, so I'll be looking into it.
However I'm excited to announce that work on 512 features has not only officially begun, but I have one of them already "in the can". For ages now, users have been asking for ways of chaining proc calls and lists like this:
mylist[2].name = "Fred"
FindMonster().Kill()
This is actually going to be possible in 512. The only reason I didn't include it in this new 511 maintenance release--it doesn't use any new instructions that would require a version bump--is that it's a big enough syntax change that I think it deserves to go through the rounds in beta testing, even though it's withstood anything I've thrown at it so far.
With chained procs and list lookups, there is a pretty big caveat: The . operator from that point on will act like the : operator. That's because there's no way at all to really know what type you'll get as a result of a proc call or a list lookup. DM does not support typed lists or proc return types, so the concept is meaningless. If support for them is ever added in the future, my expectation is that the current (that is, new) behavior will be kept for untyped lists and procs, but typed lists/procs will throw errors. At that point I'll probably need to make : handle this new chaining behavior too, but one issue at a time. (With : there's the issue that some old code like a?b():c might not behave the same.)
As long as I'm screwing around with the compiler, next on my list is raw string literals. The idea of a raw literal is that escape codes and embedded bracket expressions are not processed, and newlines are left intact. Currently, the proposed formats look like this:
// I'm thinking this one might actually be better breaking on a newline.
@"This is a string literal and this is a backslash \ that I didn't have to escape."
@{"This is another proposed "string literal" format, but it would let me use quotes."}
@(XYZYX)This is yet another string literal format being considered, with an arbitrary delimiter.XYZYX
In theory this raw string thing should be simple to add to the parser (except that the arbitrary delimiter thing will require some look-ahead logic), so it's only a matter of 1) deciding on formats, and 2) updating the syntax highlighters in DM, the site, and JavaScript.
After that, I'm probably going to turn my attention to some HUD improvements Ter13 suggested, that would make positioning elements a heck of a lot easier. Right now everything is interface-agnostic, but some of the new suggestions would require the HUD to update based on map control size.
Site foo hasn't been forgotten, though. I still have a number of requests regarding subscriptions that I want to deal with, and those are very important. The main reason I got started on 512 features was from merely trying to figure out how feasible they'd be, which got me locked onto that mini-project.
Don't forget to hit up the donation page to help BYOND out, or better yet become a Member if you haven't yet. You keep the development running. And now that spring is here, come back indoors away from the incessant rain and pollen and play some games! Better yet, make some games.
++