DMD 1.019 and 2.003

Two new DMD releases, the stable 1.019 and the unstable 2.003. Both share a handful of bug fixes and and a couple of new features. One feature in particular is good news for me: extern(System). This is a concise and intuitive solution to a problem I was having with Derelict recently. The solution I implemented really was, in my mind, less than ideal. It works though. I don’t think I’ll be updating to the new solution just yet, however. Doing so would force DMD users to upgrade to 1.019 and would also break on GDC. The former isn’t a big deal, really, as anyone using older versions of DMD could just use an older snapshot of Derelict. The latter is a big deal as it is not uncommon for new Derelict users to prefer GDC. I do expect to update at some point, but it will be well after GDC is updated again.

There are also a couple of new features exclusive to the 2.0 branch. The big one that stands out for me is the ForeachRangeStatement. I’ve encountered a few instances in my own code where this would have come in handy. Too bad I’m not on 2.0 yet. If you are considering it, please keep in mind that the 2.0 series is not yet production ready and should be considered pre-alpha. Things can, and will, break with 2.0, as the change with Error.next demonstrates (I always felt it should have been in Exception anyway).

Thanks for the cool new stuff, Walter!

Technorati Tags: , , , ,

This entry was posted in Derelict, DMD Releases. Bookmark the permalink.

One Response to DMD 1.019 and 2.003

  1. downs says:

    ForeachRangeStatement is easy to emulate in 1.0 using a struct Integer with opSlice overloaded to return _another_ struct that only contains an opApply that iterates over its numbers.
    It lets you write code like foreach (i; Int[0..50]) { }

    Have fun!

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>