- we can't really solve Issue 15316 w/ signaling NaNs
b/c any optimization, copying et.al. might turn signaling into
quiet NaNs, therefor we want to solve Issue 15316 by switching
Float.init to use quiet NaNs
- the workaround depends on a specific dmd bug (see #6163)
that looses SNaNs when writing struct initializers but keeps
them for Float.init
- this workaround might not be portable to GDC/LDC and
will easily break w/ slightly different dmd optimizations
(it's responsible for the test failure of the gdc-built dmd)
- this PR will reopen https://issues.dlang.org/show_bug.cgi?id=11135
this partially reverts commit 0efa1d3bf9
- add EncodingScheme.register overload that references the registered class
- just adding the FQN name of a class does not reference that class, so
it must not end up in the binary and subsequently EncodingScheme.create failed
- This used to work by chance b/c all the EncodingScheme implementations
were in a module w/ static ctor. Any user of std.encoding did drag in
that ModuleInfo, which in turn referenced all classes of std.encoding.
Since moving the static ctor to std.internal.phobosinit to break a
cycle, the classes were no longer referenced by a ModuleInfo w/ shared
ctor, so they wouldn't end up in the binary unless explicitly
referenced elsewhere.
- deprecate the old EncodingScheme.register(string fqn) b/c relying on
Object.factory is slow, error prone (linkage), and really unnecessary
- import encodinginit in std.encoding so that the
std_encoding_shared_static_this callback actually gets run
- partially Revert "Merge pull request #4493 from schveiguy/fixcycles2"
- recreate processinit (and import it from std.process)
to call std.process shared ctor w/o creating a cycle
- keep it separate from phobosinit to not drag std.encoding
into any binary using std.process
The `Thread.opApply` static method will use `realloc` from `core.stdc.stdlib` instead of `gc.gc.GC.malloc` which sometimes fails with `onInvalidMemoryOperationError` when run within a `static ~this` module dtor