I put out a maintenance release for 509 today. Users of 509.1315 may not need to upgrade, but it does fix some webclient issues and it's important for anyone who does profiling. And the nasty hang bug I intended to fix turns out not to be a bug at all, but Avast freaking out over something in the newer builds. Avast users who have this problem, make sure you add dreamseeker.exe as an exception and please report the false positive to Avast.
I've been taking a scattershot approach to 510's features, but focusing mostly at first on the text stuff. I've implemented, but not yet tested, eight new routines: findlasttext, findlasttextEx, spantext, nonspantext, splittext, jointext, json_encode, and json_decode. Testing on those will begin shortly. I'm kinda sorta thinking about a replacetext/replacetextEx routine, but that may be redundant and I may end up folding that into the regular expression stuff. We'll see.
The regular expression lib I'm going to work with has been coming along very well; all that I have left to test on it is multiline support. Now it has all the standard bells and whistles, plus a few goodies like lookahead and lookbehind assertions and non-capturing groups. Now the question is coming up of how I'll incorporate this into the DM language. I'm expecting to create a /regex datum--hilariously conflicting with my own soft-coded Regex library--that will contain the compiled regular expression info and have a few routines for handling matches and replacement. One of my goals with this is also to allow a proc reference to be used as a the replacement, so you could have something like this:
// spell out numbers (you're on your own for capitalization)
var/regex/R = new("\\d+", "g")
txt = R.Replace(txt, /proc/SpellNumber)
// commafy numbers
var/regex/R = new("\\d{1,3}(?=(?:\\d{3})+(?:\\D|$))", "g")
txt = R.Replace(txt, "$0,")
None of that syntax is set in stone, but that's where it's going I think. I'm pretty excited to be bringing that to the language after all this time.
Working out the logistics of the new display changes (atom groups, plane groups) is also on my to-do list, and I'll be getting that further along as well.
To give everyone a heads-up on how development will progress the rest of this month: I'll be working on 510 through to the 23rd. After that it's Christmas vacation, and work resumes January 4. (I'll still be around, just not spending a lot of time on development unless the mood takes me. Which it might, because I do get excited working on features.) I'd like to get 510 into beta as early as possible in January, so I'll be pushing toward that goal. There may or may not be another 509 maintenance release, if one is needed; I'm still hoping to get some info on a webclient bug that has plagued Eternia. In the meantime, those of you who have that time off may want to play around with 509's incredible new features to make a new game or spiff up an old one; I was amazed at how much of a difference matrices made in Scream of the Stickster Volume II by eliminating a lot of icon math.
December appears to be a pretty big time for fundraisers--just ask Wikipedia and the Kickstarter for MST3K that ends tonight--and it's a good time to remind everyone that BYOND continues to live with your support. Thanks to all the members and donors who've contributed so far. For those who haven't, this is a nice time to show your appreciation.