[Git][ghc/ghc][wip/winio] 133 commits: Use dumpStyle when printing inlinings

Ben Gamari gitlab at gitlab.haskell.org
Wed Jul 15 14:08:00 UTC 2020



Ben Gamari pushed to branch wip/winio at Glasgow Haskell Compiler / GHC


Commits:
9ad072b4 by Simon Peyton Jones at 2020-07-13T14:52:49-04:00
Use dumpStyle when printing inlinings

This just makes debug-printing consistent,
and more informative.

- - - - -
e78c4efb by Simon Peyton Jones at 2020-07-13T14:52:49-04:00
Comments only

- - - - -
7ccb760b by Simon Peyton Jones at 2020-07-13T14:52:49-04:00
Reduce result discount in conSize

Ticket #18282 showed that the result discount given by conSize
was massively too large.  This patch reduces that discount to
a constant 10, which just balances the cost of the constructor
application itself.

Note [Constructor size and result discount] elaborates, as
does the ticket #18282.

Reducing result discount reduces inlining, which affects perf.  I
found that I could increase the unfoldingUseThrehold from 80 to 90 in
compensation; in combination with the result discount change I get
these overall nofib numbers:

        Program           Size    Allocs   Runtime   Elapsed  TotalMem
--------------------------------------------------------------------------------
          boyer          -0.2%     +5.4%     -3.2%     -3.4%      0.0%
       cichelli          -0.1%     +5.9%    -11.2%    -11.7%      0.0%
      compress2          -0.2%     +9.6%     -6.0%     -6.8%      0.0%
   cryptarithm2          -0.1%     -3.9%     -6.0%     -5.7%      0.0%
         gamteb          -0.2%     +2.6%    -13.8%    -14.4%      0.0%
         genfft          -0.1%     -1.6%    -29.5%    -29.9%      0.0%
             gg          -0.0%     -2.2%    -17.2%    -17.8%    -20.0%
           life          -0.1%     -2.2%    -62.3%    -63.4%      0.0%
           mate          +0.0%     +1.4%     -5.1%     -5.1%    -14.3%
         parser          -0.2%     -2.1%     +7.4%     +6.7%      0.0%
      primetest          -0.2%    -12.8%    -14.3%    -14.2%      0.0%
         puzzle          -0.2%     +2.1%    -10.0%    -10.4%      0.0%
            rsa          -0.2%    -11.7%     -3.7%     -3.8%      0.0%
         simple          -0.2%     +2.8%    -36.7%    -38.3%     -2.2%
   wheel-sieve2          -0.1%    -19.2%    -48.8%    -49.2%    -42.9%
--------------------------------------------------------------------------------
            Min          -0.4%    -19.2%    -62.3%    -63.4%    -42.9%
            Max          +0.3%     +9.6%     +7.4%    +11.0%    +16.7%
 Geometric Mean          -0.1%     -0.3%    -17.6%    -18.0%     -0.7%

I'm ok with these numbers, remembering that this change removes
an *exponential* increase in code size in some in-the-wild cases.

I investigated compress2.  The difference is entirely caused by this
function no longer inlining

WriteRoutines.$woutputCodes
  = \ (w :: [CodeEvent]) ->
      let result_s1Sr
            = case WriteRoutines.outputCodes_$s$woutput w 0# 0# 8# 9# of
                (# ww1, ww2 #) -> (ww1, ww2)
      in (# case result_s1Sr of (x, _) ->
              map @Int @Char WriteRoutines.outputCodes1 x
         , case result_s1Sr of { (_, y) -> y } #)

It was right on the cusp before, driven by the excessive result
discount.  Too bad!

Happily, the compiler/perf tests show a number of improvements:
    T12227     compiler bytes-alloc  -6.6%
    T12545     compiler bytes-alloc  -4.7%
    T13056     compiler bytes-alloc  -3.3%
    T15263     runtime  bytes-alloc -13.1%
    T17499     runtime  bytes-alloc -14.3%
    T3294      compiler bytes-alloc  -1.1%
    T5030      compiler bytes-alloc -11.7%
    T9872a     compiler bytes-alloc  -2.0%
    T9872b     compiler bytes-alloc  -1.2%
    T9872c     compiler bytes-alloc  -1.5%

Metric Decrease:
    T12227
    T12545
    T13056
    T15263
    T17499
    T3294
    T5030
    T9872a
    T9872b
    T9872c

- - - - -
7f0b671e by Ben Gamari at 2020-07-13T14:52:49-04:00
testsuite: Widen acceptance threshold on T5837

This test is positively tiny and consequently the bytes allocated
measurement will be relatively noisy. Consequently I have seen this
fail spuriously quite often.

- - - - -
118e1c3d by Alp Mestanogullari at 2020-07-14T21:30:52-04:00
compiler: re-engineer the treatment of rebindable if

Executing on the plan described in #17582, this patch changes the way if expressions
are handled in the compiler in the presence of rebindable syntax. We get rid of the
SyntaxExpr field of HsIf and instead, when rebindable syntax is on, we rewrite the HsIf
node to the appropriate sequence of applications of the local `ifThenElse` function.

In order to be able to report good error messages, with expressions as they were
written by the user (and not as desugared by the renamer), we make use of TTG
extensions to extend GhcRn expression ASTs with an `HsExpansion` construct, which
keeps track of a source (GhcPs) expression and the desugared (GhcRn) expression that
it gives rise to. This way, we can typecheck the latter while reporting the former in
error messages.

In order to discard the error context lines that arise from typechecking the desugared
expressions (because they talk about expressions that the user has not written), we
carefully give a special treatment to the nodes fabricated by this new renaming-time
transformation when typechecking them. See Note [Rebindable syntax and HsExpansion]
for more details. The note also includes a recipe to apply the same treatment to
other rebindable constructs.

Tests 'rebindable11' and 'rebindable12' have been added to make sure we report
identical error messages as before this patch under various circumstances.

We also now disable rebindable syntax when processing untyped TH quotes, as per
the discussion in #18102 and document the interaction of rebindable syntax and
Template Haskell, both in Note [Template Haskell quotes and Rebindable Syntax]
and in the user guide, adding a test to make sure that we do not regress in
that regard.

- - - - -
64c774b0 by Andreas Klebinger at 2020-07-14T21:31:27-04:00
Explain why keeping DynFlags in AnalEnv saves allocation.

- - - - -
254245d0 by Ben Gamari at 2020-07-14T21:32:03-04:00
docs/users-guide: Update default -funfolding-use-threshold value

This was changed in 3d2991f8 but I neglected to update the
documentation. Fixes #18419.

- - - - -
4c259f86 by Andreas Klebinger at 2020-07-14T21:32:41-04:00
Escape backslashes in json profiling reports properly.

I also took the liberty to do away the fixed buffer size for escaping.
Using a fixed size here can only lead to issues down the line.

Fixes #18438.

- - - - -
23797224 by Sergei Trofimovich at 2020-07-14T21:33:19-04:00
.gitlab: re-enable integer-simple substitute (BIGNUM_BACKEND)

Recently build system migrated from INTEGER_LIBRARY to BIGNUM_BACKEND.
But gitlab CI was never updated. Let's enable BIGNUM_BACKEND=native.

Bug: https://gitlab.haskell.org/ghc/ghc/-/issues/18437
Signed-off-by: Sergei Trofimovich <slyfox at gentoo.org>

- - - - -
e0db878a by Sergei Trofimovich at 2020-07-14T21:33:19-04:00
ghc-bignum: bring in sync .hs-boot files with module declarations

Before this change `BIGNUM_BACKEND=native` build was failing as:

```
libraries/ghc-bignum/src/GHC/Num/BigNat/Native.hs:708:16: error:
    * Variable not in scope: naturalFromBigNat# :: WordArray# -> t
    * Perhaps you meant one of these:
        `naturalFromBigNat' (imported from GHC.Num.Natural),
        `naturalToBigNat' (imported from GHC.Num.Natural)
    |
708 |           m' = naturalFromBigNat# m
    |
```

This happens because `.hs-boot` files are slightly out of date.
This change brings in data and function types in sync.

Bug: https://gitlab.haskell.org/ghc/ghc/-/issues/18437
Signed-off-by: Sergei Trofimovich <slyfox at gentoo.org>

- - - - -
c9f65c36 by Stefan Schulze Frielinghaus at 2020-07-14T21:33:57-04:00
rts/Disassembler.c: Use FMT_HexWord for printing values in hex format

- - - - -
58ae62eb by Matthias Andreas Benkard at 2020-07-14T21:34:35-04:00
macOS: Load frameworks without stating them first.

macOS Big Sur makes the following change to how frameworks are shipped
with the OS:

> New in macOS Big Sur 11 beta, the system ships with a built-in
> dynamic linker cache of all system-provided libraries. As part of
> this change, copies of dynamic libraries are no longer present on
> the filesystem. Code that attempts to check for dynamic library
> presence by looking for a file at a path or enumerating a directory
> will fail. Instead, check for library presence by attempting to
> dlopen() the path, which will correctly check for the library in the
> cache. (62986286)

https://developer.apple.com/documentation/macos-release-notes/macos-big-sur-11-beta-release-notes/

Therefore, the previous method of checking whether a library exists
before attempting to load it makes GHC.Runtime.Linker.loadFramework
fail to find frameworks installed at /System/Library/Frameworks.

GHC.Runtime.Linker.loadFramework now opportunistically loads the
framework libraries without checking for their existence first,
failing only if all attempts to load a given framework from any of the
various possible locations fail.

- - - - -
cdc4a6b0 by Matthias Andreas Benkard at 2020-07-14T21:34:35-04:00
loadFramework: Output the errors collected in all loading attempts.

With the recent change away from first finding and then loading a
framework, loadFramework had no way of communicating the real reason
why loadDLL failed if it was any reason other than the framework
missing from the file system.  It now collects all loading attempt
errors into a list and concatenates them into a string to return to
the caller.

- - - - -
51dbfa52 by Ben Gamari at 2020-07-15T04:05:34-04:00
StgToCmm: Use CmmRegOff smart constructor

Previously we would generate expressions of the form
`CmmRegOff BaseReg 0`. This should do no harm (and really should be
handled by the NCG anyways) but it's better to just generate a plain
`CmmReg`.

- - - - -
ae11bdfd by Ben Gamari at 2020-07-15T04:06:08-04:00
testsuite: Add regression test for #17744

Test due to @monoidal.

- - - - -
f01bb58b by Ben Gamari at 2020-07-15T10:07:02-04:00
Bump Cabal submodule

Updates a variety of tests as Cabal is now more strict about Cabal file
form.

- - - - -
56e898b5 by Tamar Christina at 2020-07-15T10:07:11-04:00
winio: Drop Windows Vista support, require Windows 7

- - - - -
734357c5 by Tamar Christina at 2020-07-15T10:07:11-04:00
winio: Update Windows FileSystem wrapper utilities.

- - - - -
92d5db44 by Tamar Christina at 2020-07-15T10:07:11-04:00
winio: Use SlimReaderLocks and ConditonalVariables provided by the OS instead of emulated ones

- - - - -
750dde43 by Tamar Christina at 2020-07-15T10:07:11-04:00
winio: Small linker comment and ifdef cleanups

- - - - -
703ddf53 by Tamar Christina at 2020-07-15T10:07:11-04:00
winio: Flush event logs eagerly.

- - - - -
7dfb6e2c by Tamar Christina at 2020-07-15T10:07:11-04:00
winio: Refactor Buffer structures to be able to track async operations

- - - - -
3bdad474 by Tamar Christina at 2020-07-15T10:07:12-04:00
winio: Implement new Console API

- - - - -
eb0685f0 by Tamar Christina at 2020-07-15T10:07:12-04:00
winio: Add IOPort synchronization primitive

- - - - -
b7f92624 by Tamar Christina at 2020-07-15T10:07:12-04:00
winio: Add new io-manager cmdline options

- - - - -
90aa8ccd by Tamar Christina at 2020-07-15T10:07:12-04:00
winio: Init Windows console Codepage to UTF-8.

- - - - -
2e75228f by Tamar Christina at 2020-07-15T10:07:12-04:00
winio: Add unsafeSplat to GHC.Event.Array

- - - - -
d9c96472 by Tamar Christina at 2020-07-15T10:07:12-04:00
winio: Add size and iterate to GHC.Event.IntTable.

- - - - -
b574f72f by Tamar Christina at 2020-07-15T10:07:12-04:00
winio: Switch Testsuite to test winio by default

- - - - -
b53894a6 by Tamar Christina at 2020-07-15T10:07:12-04:00
winio: Multiple refactorings and support changes.

- - - - -
2a9f74c5 by Tamar Christina at 2020-07-15T10:07:12-04:00
winio: core threaded I/O manager

- - - - -
9c8c8220 by Tamar Christina at 2020-07-15T10:07:13-04:00
winio: core non-threaded I/O manager

- - - - -
6c8793dd by Tamar Christina at 2020-07-15T10:07:13-04:00
winio: Fix a scheduler bug with the threaded-runtime.

- - - - -
ac3ec238 by Tamar Christina at 2020-07-15T10:07:13-04:00
winio: Relaxing some constraints in io-manager.

- - - - -
46b352ef by Tamar Christina at 2020-07-15T10:07:13-04:00
winio: Fix issues with non-threaded I/O manager after split.

- - - - -
db5207b2 by Tamar Christina at 2020-07-15T10:07:13-04:00
winio: Remove some barf statements that are a bit strict.

- - - - -
d2c1d3d3 by Andreas Klebinger at 2020-07-15T10:07:13-04:00
winio: Expand comments describing non-threaded loop

- - - - -
2dd81508 by Tamar Christina at 2020-07-15T10:07:13-04:00
winio: fix FileSize unstat-able handles

- - - - -
94b0ce97 by Tamar Christina at 2020-07-15T10:07:13-04:00
winio: Implement new tempfile routines for winio

- - - - -
e6e5e74d by Andreas Klebinger at 2020-07-15T10:07:13-04:00
winio: Fix input truncation when reading from handle.

This was caused by not upholding the read buffer invariant
that bufR == bufL == 0 for empty read buffers.

- - - - -
5bab211e by Andreas Klebinger at 2020-07-15T10:07:13-04:00
winio: Fix output truncation for writes larger than buffer size

- - - - -
19b4b95a by Andreas Klebinger at 2020-07-15T10:07:13-04:00
winio: Rewrite bufWrite.

I think it's far easier to follow the code now.
It's also correct now as I had still missed a spot
where we didn't update the offset.

- - - - -
c025dc0a by Andreas Klebinger at 2020-07-15T10:07:13-04:00
winio: Fix offset set by bufReadEmpty.

bufReadEmpty returns the bytes read *including* content that
was already buffered,
But for calculating the offset we only care about the number
of bytes read into the new buffer.

- - - - -
a0745334 by Andreas Klebinger at 2020-07-15T10:07:13-04:00
winio: Clean up code surrounding IOPort primitives.

According to phyx these should only be read and written once per
object. Not neccesarily in that order.

To strengthen that guarantee the primitives will now throw an
exception if we violate this invariant.

As a consequence we can eliminate some code from their primops.
In particular code dealing with multiple queued readers/writers
now simply checks the invariant and throws an exception if it
was violated. That is in contrast to mvars which will do things
like wake up all readers, queue multi writers etc.

- - - - -
e04d6ad7 by Andreas Klebinger at 2020-07-15T10:07:13-04:00
winio: Fix multi threaded threadDelay and a few other small changes.

Multithreaded threadDelay suffered from a race condition
based on the ioManagerStatus. Since the status isn't needed
for WIO I removed it completely.

This resulted in a light refactoring, as consequence we will always
wake up the IO manager using interruptSystemManager, which uses
`postQueuedCompletionStatus` internally.

I also added a few comments which hopefully makes the code easier to
dive into for the next person diving in.

- - - - -
28018610 by Andreas Klebinger at 2020-07-15T10:07:13-04:00
wionio: Make IO subsystem check a no-op on non-windows platforms.

- - - - -
0387643d by Andreas Klebinger at 2020-07-15T10:07:13-04:00
winio: Set handle offset when opening files in Append mode.

Otherwise we would truncate the file.

- - - - -
e0881756 by Andreas Klebinger at 2020-07-15T10:07:13-04:00
winio: Remove debug event log trace

- - - - -
1423e25e by Andreas Klebinger at 2020-07-15T10:07:14-04:00
winio: Fix sqrt and openFile009 test cases

- - - - -
9e3e992d by Andreas Klebinger at 2020-07-15T10:07:14-04:00
winio: Allow hp2ps to build with -DDEBUG

- - - - -
9e707b4b by Andreas Klebinger at 2020-07-15T10:07:14-04:00
winio: Update output of T9681 since we now actually run it.

- - - - -
ef15cfaa by Andreas Klebinger at 2020-07-15T10:07:14-04:00
winio: A few more improvements to the IOPort primitives.

- - - - -
b52555e3 by Andreas Klebinger at 2020-07-15T10:07:14-04:00
winio: Fix expected tempfiles output.

Tempfiles now works properly on windows, as such we can
delete the win32 specific output.

- - - - -
be254ea3 by Andreas Klebinger at 2020-07-15T10:07:14-04:00
winio: Assign thread labels to IOManager threads.

- - - - -
efe74586 by Andreas Klebinger at 2020-07-15T10:07:14-04:00
winio: Properly check for the tso of an incall to be zero.

- - - - -
f3dbf47f by Andreas Klebinger at 2020-07-15T10:07:14-04:00
winio: Mark FD instances as unsupported under WINIO.

- - - - -
017675ab by Andreas Klebinger at 2020-07-15T10:07:14-04:00
winio: Fix threadDelay maxBound invocations.

Instead of letting the ns timer overflow now clamp it at
(maxBound :: Word64) ns. That still gives a few hundred
years.

- - - - -
05165f61 by Andreas Klebinger at 2020-07-15T10:07:14-04:00
winio: Add comments/cleanup an import in base

- - - - -
2b9b1b79 by Andreas Klebinger at 2020-07-15T10:07:14-04:00
winio: Mark outstanding_service_requests volatile.

As far as I know C(99) gives no guarantees for code like

    bool condition;

    ...

    while(condition)
        sleep();

that condition will be updated if it's changed by another thread.
So we are explicit here and mark it as volatile, this will force
a reload from memory on each iteration.

- - - - -
47eb6529 by Andreas Klebinger at 2020-07-15T10:07:14-04:00
winio: Make last_event a local variable

- - - - -
06a7e5c0 by Andreas Klebinger at 2020-07-15T10:07:14-04:00
winio: Add comment about thread safety of processCompletion.

- - - - -
69942bd9 by Andreas Klebinger at 2020-07-15T10:07:14-04:00
winio: nonthreaded: Create io processing threads in main thread.

We now set a flag in the IO thread. The scheduler when looking for work
will check the flag and create/queue threads accordingly.

We used to create these in the IO thread. This improved performance
but caused frequent segfaults. Thread creation/allocation is only safe to
do if nothing currently accesses the storeagemanager. However without
locks in the non-threaded runtime this can't be guaranteed.

This shouldn't change performance all too much.

In the past we had:
* IO: Create/Queue thread.
* Scheduler: Runs a few times. Eventually picks up IO processing thread.

Now it's:
* IO: Set flag to queue thread.
* Scheduler: Pick up flag, if set create/queue thread. Eventually picks up IO processing thread.

- - - - -
8474ed10 by Andreas Klebinger at 2020-07-15T10:07:14-04:00
winio: Add an exported isHeapAlloced function to the RTS

- - - - -
f3098c35 by Andreas Klebinger at 2020-07-15T10:07:14-04:00
winio: Queue IO processing threads at the front of the queue.

This will unblock the IO thread sooner hopefully leading to higher
throughput in some situations.

- - - - -
b5e0793b by Andreas Klebinger at 2020-07-15T10:07:14-04:00
winio: ThreadDelay001: Use higher resolution timer.

- - - - -
63f8bcc4 by Andreas Klebinger at 2020-07-15T10:07:15-04:00
winio: Update T9681 output, disable T4808 on windows.

T4808 tests functionality of the FD interface which won't be supported
under WINIO.

T9681 just has it's expected output tweaked.

- - - - -
24fd01e4 by Andreas Klebinger at 2020-07-15T10:07:15-04:00
winio: Wake io manager once per registerTimeout.

Which is implicitly done in editTimeouts, so need to wake it
up twice.

- - - - -
71bd74be by Andreas Klebinger at 2020-07-15T10:07:15-04:00
winio: Update placeholder comment with actual function name.

- - - - -
3af6274f by Andreas Klebinger at 2020-07-15T10:07:15-04:00
winio: Always lock win32 event queue

- - - - -
81bf51fa by Andreas Klebinger at 2020-07-15T10:07:15-04:00
winio: Display thread labels when tracing scheduler events.

- - - - -
9dcb46d2 by Andreas Klebinger at 2020-07-15T10:07:15-04:00
winio: Refactor non-threaded runner thread and scheduler interface.

Only use a single communication point (registerAlertableWait) to inform
the C side aobut both timeouts to use as well as outstanding requests.

Also queue a haskell processing thread after each return from alertable
waits. This way there is no risk of us missing a timer event.

- - - - -
3c813de3 by Andreas Klebinger at 2020-07-15T10:07:15-04:00
winio: Remove outstanding_requests from runner.

We used a variable to keep track of situations where we got
entries from the IO port, but all of them had already been
canceled. While we can avoid some work that way this case
seems quite rare.

So we give up on tracking this and instead always assume at
least one of the returned entries is valid.

If that's not the case no harm is done, we just perform some
additional work. But it makes the runner easier to reason about.

In particular we don't need to care if another thread modifies
oustanding_requests after we return from waiting on the IO Port.

- - - - -
db4e2293 by Tamar Christina at 2020-07-15T10:07:15-04:00
winio: Various fixes related to rebase and testdriver

- - - - -
abab0ab1 by Tamar Christina at 2020-07-15T10:07:15-04:00
winio: Fix rebase artifacts

- - - - -
2bf6f425 by Andreas Klebinger at 2020-07-15T10:07:15-04:00
winio: Rename unsafeSplat to unsafeCopyFromBuffer

- - - - -
2efbbb02 by Andreas Klebinger at 2020-07-15T10:07:15-04:00
winio: Remove unused size/iterate operations from IntTable

- - - - -
396ef150 by Andreas Klebinger at 2020-07-15T10:07:15-04:00
winio: Detect running IO Backend via peeking at RtsConfig

- - - - -
f50b6ae0 by Tamar Christina at 2020-07-15T10:07:15-04:00
winio: update temp path so GCC etc can handle it.

Also fix PIPE support, clean up error casting, fix memory leaks

- - - - -
da48d0e8 by Ben Gamari at 2020-07-15T10:07:15-04:00
winio: Minor comments/renamings

- - - - -
928f6462 by Andreas Klebinger at 2020-07-15T10:07:15-04:00
winio: Checking if an error code indicates completion is now a function.

- - - - -
555ec3a0 by Andreas Klebinger at 2020-07-15T10:07:16-04:00
winio: Small refactor in withOverlappedEx

- - - - -
ad8c6b54 by Andreas Klebinger at 2020-07-15T10:07:16-04:00
winio: A few comments and commented out dbxIO

- - - - -
c6b96ba4 by Andreas Klebinger at 2020-07-15T10:07:16-04:00
winio: Don't drop buffer offset in byteView/cwcharView

- - - - -
3d404cce by Tamar Christina at 2020-07-15T10:07:16-04:00
winio: revert BHandle changes.

- - - - -
7bd1d16d by Ben Gamari at 2020-07-15T10:07:16-04:00
winio: Fix imports

- - - - -
5ff47b0a by Tamar Christina at 2020-07-15T10:07:16-04:00
winio: update ghc-cabal to handle new Cabal submodule bump

- - - - -
564e5c7f by Ben Gamari at 2020-07-15T10:07:16-04:00
winio: Only compile sources on Windows

- - - - -
c1299149 by Andreas Klebinger at 2020-07-15T10:07:16-04:00
winio: Actually return Nothing on EOF for non-blocking read

- - - - -
9df13b96 by Andreas Klebinger at 2020-07-15T10:07:16-04:00
winio: Deduplicate logic in encodeMultiByte[Raw]IO.

- - - - -
72d37ac3 by Andreas Klebinger at 2020-07-15T10:07:16-04:00
winio: Deduplicate openFile logic

- - - - -
584e50d5 by Tamar Christina at 2020-07-15T10:07:16-04:00
winio: fix -werror issue in encoding file

- - - - -
51fbb022 by Andreas Klebinger at 2020-07-15T10:07:16-04:00
winio: Don't mention windows specific functions when building on Linux.

- - - - -
c1577409 by Andreas Klebinger at 2020-07-15T10:07:16-04:00
winio: add a note about file locking in the RTS.

- - - - -
0db9dbf1 by Andreas Klebinger at 2020-07-15T10:07:16-04:00
winio: Add version to @since annotation

- - - - -
3ba07510 by Andreas Klebinger at 2020-07-15T10:07:16-04:00
winio: Rename GHC.Conc.IOCP -> GHC.Conc.WinIO

- - - - -
084e303d by Andreas Klebinger at 2020-07-15T10:07:17-04:00
winio: Expand GHC.Conc.POSIX description

It now explains users may not use these functions when
using the old IO manager.

- - - - -
537ee1cb by Andreas Klebinger at 2020-07-15T10:07:17-04:00
winio: Fix potential spaceleak in __createUUIDTempFileErrNo

- - - - -
2f8a5009 by Andreas Klebinger at 2020-07-15T10:07:17-04:00
winio: Remove redundant -Wno-missing-signatures pragmas

- - - - -
4722b04a by Andreas Klebinger at 2020-07-15T10:07:17-04:00
winio: Make it explicit that we only create one IO manager

- - - - -
25eb478d by Andreas Klebinger at 2020-07-15T10:07:17-04:00
winio: Note why we don't use blocking waits.

- - - - -
f0535881 by Andreas Klebinger at 2020-07-15T10:07:17-04:00
winio: Remove commented out pragma

- - - - -
b0bab0ec by Andreas Klebinger at 2020-07-15T10:07:17-04:00
winio: Remove redundant buffer write in Handle/Text.hs:bufReadEmpty

- - - - -
ba18e20a by Andreas Klebinger at 2020-07-15T10:07:17-04:00
winio: Rename SmartHandles to StdHandles

- - - - -
a050d144 by Andreas Klebinger at 2020-07-15T10:07:17-04:00
winio: add comment stating failure behaviour for getUniqueFileInfo.

- - - - -
634e2a57 by Andreas Klebinger at 2020-07-15T10:07:17-04:00
winio: Update IOPort haddocks.

- - - - -
8a2333b3 by Andreas Klebinger at 2020-07-15T10:07:17-04:00
winio: Add a note cross reference

- - - - -
14052f31 by Andreas Klebinger at 2020-07-15T10:07:17-04:00
winio: Name Haskell/OS I/O Manager explicitly in Note

- - - - -
d154bbe0 by Andreas Klebinger at 2020-07-15T10:07:17-04:00
winio: Expand BlockedOnIOCompletion description.

- - - - -
14c8b0a6 by Andreas Klebinger at 2020-07-15T10:07:17-04:00
winio: Remove historical todos

- - - - -
542004ac by Andreas Klebinger at 2020-07-15T10:07:17-04:00
winio: Update note, remove debugging pragma.

- - - - -
f4411c81 by Andreas Klebinger at 2020-07-15T10:07:17-04:00
winio: flushCharReadBuffer shouldn't need to adjust offsets.

- - - - -
006102d9 by Andreas Klebinger at 2020-07-15T10:07:17-04:00
winio: Remove obsolete comment about cond. variables

- - - - -
1812a2e9 by Andreas Klebinger at 2020-07-15T10:07:17-04:00
winio: fix initial linux validate build

- - - - -
2f9c2f72 by Andreas Klebinger at 2020-07-15T10:07:18-04:00
winio: Fix ThreadDelay001 CPP

- - - - -
eec25db9 by Andreas Klebinger at 2020-07-15T10:07:18-04:00
winio: Fix openFile009 merge conflict leftover

- - - - -
b186dbc2 by Andreas Klebinger at 2020-07-15T10:07:18-04:00
winio: Accept T9681 output.

GHC now reports String instead of [Char].

- - - - -
69da3095 by Andreas Klebinger at 2020-07-15T10:07:18-04:00
winio: Fix cabal006 after upgrading cabal submodule

Demand cabal 2.0 syntax instead of >= 1.20 as required by newer cabal versions.

- - - - -
3177416b by Andreas Klebinger at 2020-07-15T10:07:18-04:00
winio: Fix stderr output for ghci/linking/dyn tests.

We used to filter rtsopts, i opted to instead just accept the warning of it having no effect.
This works both for -rtsopts, as well as -with-rtsopts which winio adds.

- - - - -
30502b52 by Andreas Klebinger at 2020-07-15T10:07:18-04:00
winio: Adjust T15261b stdout for --io-manager flag.

- - - - -
fe83623c by Andreas Klebinger at 2020-07-15T10:07:18-04:00
winio: Adjust T5435_dyn_asm stderr

The warning about rtsopts having no consequences is expected.
So accept new stderr.

- - - - -
208833c1 by Andreas Klebinger at 2020-07-15T10:07:18-04:00
winio: Also accept T7037 stderr

- - - - -
1c5b024a by Andreas Klebinger at 2020-07-15T10:07:18-04:00
winio: fix cabal04 by filtering rts args

- - - - -
85b8f8e8 by Andreas Klebinger at 2020-07-15T10:07:18-04:00
winio: fix cabal01 by accepting expected stderr

- - - - -
e093bc0b by Andreas Klebinger at 2020-07-15T10:07:18-04:00
winio: fix safePkg01 by accepting expected stderr

- - - - -
e06c93cd by Andreas Klebinger at 2020-07-15T10:07:18-04:00
winio: fix T5435_dyn_gcc by accepting expected stderr

- - - - -
251b3962 by Andreas Klebinger at 2020-07-15T10:07:18-04:00
winio: fix tempfiles test on linux

- - - - -
5e00db58 by Andreas Klebinger at 2020-07-15T10:07:18-04:00
winio: Accept accepted stderr for T3807

- - - - -
e1b10e9f by Andreas Klebinger at 2020-07-15T10:07:18-04:00
winio: Accept accepted stderr for linker_unload

- - - - -
72b4541c by Andreas Klebinger at 2020-07-15T10:07:18-04:00
winio: Accept accepted stderr for linker_unload_multiple_objs

- - - - -
29fe8fe3 by Tamar Christina at 2020-07-15T10:07:18-04:00
winio: clarify wording on conditional variables.

- - - - -
2e46072f by Tamar Christina at 2020-07-15T10:07:19-04:00
winio: clarify comment on cooked mode.

- - - - -
926c6147 by Tamar Christina at 2020-07-15T10:07:19-04:00
winio: update lockfile signature and remove mistaken symbol in rts.

- - - - -
867843e0 by Ben Gamari at 2020-07-15T10:07:19-04:00
testsuite: Add winio and winio_threaded ways

Reverts many of the testsuite changes

- - - - -


30 changed files:

- .gitlab-ci.yml
- .gitlab/ci.sh
- Makefile
- compiler/GHC/Builtin/Names.hs
- + compiler/GHC/Builtin/RebindableNames.hs
- compiler/GHC/Builtin/Types/Prim.hs
- compiler/GHC/Builtin/primops.txt.pp
- compiler/GHC/Core/Opt/DmdAnal.hs
- compiler/GHC/Core/Opt/Simplify.hs
- compiler/GHC/Core/Unfold.hs
- compiler/GHC/Driver/Pipeline.hs
- compiler/GHC/Driver/Session.hs
- compiler/GHC/Hs/Expr.hs
- compiler/GHC/Hs/Instances.hs
- compiler/GHC/Hs/Utils.hs
- compiler/GHC/HsToCore/Coverage.hs
- compiler/GHC/HsToCore/Expr.hs
- compiler/GHC/HsToCore/Match.hs
- compiler/GHC/HsToCore/Quote.hs
- compiler/GHC/Iface/Ext/Ast.hs
- compiler/GHC/Rename/Env.hs
- compiler/GHC/Rename/Expr.hs
- compiler/GHC/Rename/Splice.hs
- compiler/GHC/Runtime/Linker.hs
- compiler/GHC/StgToCmm/CgUtils.hs
- compiler/GHC/StgToCmm/Prim.hs
- compiler/GHC/SysTools/Info.hs
- compiler/GHC/Tc/Gen/Expr.hs
- compiler/GHC/Tc/Solver/Flatten.hs
- compiler/GHC/Tc/Types.hs


The diff was not included because it is too large.


View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/180f07a91a3b91225c178a7a9faf432fc1c9c976...867843e0d2d7edcaa1906c8b7fffb89a0a4e92eb

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/180f07a91a3b91225c178a7a9faf432fc1c9c976...867843e0d2d7edcaa1906c8b7fffb89a0a4e92eb
You're receiving this email because of your account on gitlab.haskell.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-commits/attachments/20200715/1759322a/attachment-0001.html>


More information about the ghc-commits mailing list