Upgrading a codebase from 2.065 to 2.066

Brian Schott via Digitalmars-d digitalmars-d at puremagic.com
Wed Jul 2 15:34:35 PDT 2014


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


More information about the Digitalmars-d mailing list