Signed-off-by: Paolo Capriotti <email@example.com>
This avoids the duplication of types and classes for each separate type of literal: before we had two copies of most functions, one for numbers and one for strings. Now we just have one polymorphic (both at the type and the kind level!) version, which uses a type function and polymorphic kinds in an interesting way.
This follows a change in GHC and ghc-events. The previous name was misleading. From commit "Change the presentation of parallel GC work balance in +RTS -s": Also rename internal variables to make the names match what they hold. The parallel GC work balance is calculated using the total amount of memory copied by all GC threads, and the maximum copied by any individual thread. You have serial GC when the max is the same as copied, and perfectly balanced GC when total/max == n_caps.
Given (T ty1) and ty2, we were computing the fingerprint of the application (T ty1 ty2) by combining the two fingerprints from (T ty1) and ty2. But that gives a different answer to combinging the three fingerprints from T, ty1, and ty2, which is what happens if you build the type all at once. Urk! Fixes Trac #5962
When there is data in a handle buffer, never fetch more than the available number of elements, since that can cause a blocking read on Windows.
See the comment for details.
The report says that it isn't meant to.