Random D development news

During the last couple of weeks, I didn’t really find time to update this blog. Nevertheless, however, I was able to spare some time for work on a couple open source projects related to the D programming language. But first, let me quickly summarize some great changes that will be in the next DMD release:

Don Clugston has basically re-implemented CTFE to fix a whole slew of compile-time function execution bugs, among which is the dreaded bug 1330. There are still some regressions compared to DMD 2.052 (like this one, which breaks QtD), but apart from those, it’s a big step towards getting CTFE out of the »experimental feature« category. The new architecture will also make implementing reference types easier, but this is still a long way off. Then next DMD/Phobos release will also include the new std.parallelism module by David Simcha, some GC optimizations and a large amount of other improvements (among which is the addition of the parent trait, so that QtD doesn’t need a patched DMD any longer) – due to the GitHub migration and the larger part of x86_64 support being done, the perceived development speed in the core community really went up a notch.

As for my own (insignificant, compared to the above) contributions, I did some work on LDC during the last few days, porting it to LLVM 2.9 and bringing the front-end in sync with DMD 1.067 – you can find the changes in the default branch over at Bitbucket. The DMD updates also contained some changes to the varargs ABI on x86_64 and other areas of the runtime interface, which I didn’t merge yet, because it would require an update to Tango as well. I am not aware of any regressions so far (see the DStress results), but feel free to ping me in case of any problems.

There were also some updates and bug fixes to D support in SWIG, most notably support for the nspace feature, which allows you to map C++ namespaces to D packages/modules (it doesn’t work for free functions and global variables yet, but this is a general SWIG restriction that could be easily lifted, just ask me if you need it). There was another SWIG release in the meantime, version 2.0.3, but it was only a »quick backup« by the maintainer before he merged some intrusive Python changes. I was caught pretty much off-guard by it and had no time for real testing and thus, it contains some bugs (mainly related to nspace support when split-proxy mode is not activated, thanks to Jonathan Pfau for the reports) – please use SVN trunk instead.

Another little project I recently worked on is std.units, an units of measurement implementation for D. This topic came up several times on the NG previously, and every time it was suggested to add units support with Phobos, so I have merged the work into my Phobos fork. Please note, however, that this is in no way a formal review request yet. There are still a couple of items left on my to-do list, but before I am tackling the remaining issues, I’d greatly appreciate some feedback (see the thread on the D newsgroup, RFC: Units of measurement for D).

Finally, a personal note: Yesterday, I received notice that I was accepted to work on my Apache Thrift project under the umbrella of Digital Mars as part of the Google Summer of Code 2011 – thanks a lot to everybody who supported my proposals for their trust in me! I know that the expectations are high, and will do my very best to live up to them.