I recently upgraded EMSI's internal data processing library[1] so that it will be compatible with the upcoming 2.066 release and thought it might be useful to share my experience.

1. There was a redundant @property attribute on the (unreleased) std.allocator. Really easy to fix.

2. std.metastrings was removed. I deleted the import statement and everything worked fine. Apparently the import was unused.

3. The compiler more correctly checked mutable/immutable with type tuples and caught a bug in our code. The fix for this was also very easy.

4. isNaN is now a template. This broke some templated code that would (depending on template instantiations) rely on uint being converted to real. The new isFloatingPoint template constraint kept this from compiling. I ended up placing a static if around our call to isNaN to work around this. Maybe it would be useful to add a template specialization for isNaN that checks isNumeric && !isFloatingPoint and always returns false.

5. A change to object.d broke a line of code that used "[]" as the "defaultValue" argument to the get() function for AAs. Casting "[]" to the expected type worked around this issue.

Once these compile issues were resolved all of the unit tests ran without errors.

The only time-consuming part of the process was dealing with a linker bug that only seems to be present on Ubuntu machines running ld 2.24. I'll file an issue for this soon.

[1] http://dconf.org/2014/talks/crapuchettes.html

Reply via email to