On Wed, 28 Nov 2018 at 22:44, Johannes Pfau <johannesp...@gmail.com> wrote: > > Hashing of complex types where the floating point type used > for the real and imaginary parts has padding (such as X86 80 bit reals) > has padding, is currently broken in druntime. > > Fixed by backporting https://github.com/dlang/druntime/pull/2356 > from druntime commit 29ce0543cb62229f005b2bc8540416dbccd1130e > > Tested at https://github.com/D-Programming-GDC/GDC/pull/768 > > -- > Johannes > > --- > libphobos/ChangeLog: > > 2018-11-28 Johannes Pfau <johannesp...@gmail.com> > > * libdruntime/core/internal/convert.d: Backport from latest druntime. > * libdruntime/core/internal/hash.d: Likewise. > * libdruntime/core/internal/traits.d: Likewise. > * libdruntime/rt/util/typeinfo.d: Likewise. > > libphobos/libdruntime/core/internal/convert.d | 136 ++- > libphobos/libdruntime/core/internal/hash.d | 1044 +++++++++++------ > libphobos/libdruntime/core/internal/traits.d | 19 + > libphobos/libdruntime/rt/util/typeinfo.d | 33 +- > 4 files changed, 815 insertions(+), 417 deletions(-) >
I had a quick look at the associated druntime PRs, and this looks like we're only selectively applying many partial patches. It would be better to apply each dependent patch one at a time, so we don't have a half complete backport. These would be for instance PRs 2197, 2202, 2210, 2200, 2227, 2209, 2198, 2243, 2240, 2246, 2311 - I stopped here but there are a few more to catch up with the internal/hash implementation, and maybe a few more in-between that I didn't spot. This would make transition from this 2.076+backports to 2.08x or 2.09x a little simpler, and we can test these for any problems ahead of time. -- Iain