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