[Git][ghc/ghc][wip/js-th] 102 commits: codeowners: Add Ben, Matt, and Bryan to CI

Sylvain Henry (@hsyl20) gitlab at gitlab.haskell.org
Thu Jan 26 09:11:11 UTC 2023



Sylvain Henry pushed to branch wip/js-th at Glasgow Haskell Compiler / GHC


Commits:
2c6deb18 by Bryan Richter at 2023-01-23T14:12:22+02:00
codeowners: Add Ben, Matt, and Bryan to CI

- - - - -
eee3bf05 by Matthew Craven at 2023-01-23T21:46:41-05:00
Do not collect compile-time metrics for T21839r

...the testsuite doesn't handle this properly since it
also collects run-time metrics.  Compile-time metrics
for this test are already tracked via T21839c.

Metric Decrease:
    T21839r

- - - - -
1d1dd3fb by Matthew Pickering at 2023-01-24T05:37:52-05:00
Fix recompilation checking for multiple home units

The key part of this change is to store a UnitId in the
`UsageHomeModule` and `UsageHomeModuleInterface`.

* Fine-grained dependency tracking is used if the dependency comes from
  any home unit.
* We actually look up the right module when checking whether we need to
  recompile in the `UsageHomeModuleInterface` case.

These scenarios are both checked by the new tests (
multipleHomeUnits_recomp and multipleHomeUnits_recomp_th )

Fixes #22675

- - - - -
7bfb30f9 by Matthew Pickering at 2023-01-24T05:37:52-05:00
Augment target filepath by working directory when checking if module satisfies target

This fixes a spurious warning in -Wmissing-home-modules.

This is a simple oversight where when looking for the target in the
first place we augment the search by the -working-directory flag but
then fail to do so when checking this warning.

Fixes #22676

- - - - -
69500dd4 by Matthew Pickering at 2023-01-24T05:37:52-05:00
Use NodeKey rather than ModuleName in pruneCache

The `pruneCache` function assumes that the list of `CachedInfo` all have unique `ModuleName`, this is not true:

* In normal compilation, the same module name can appear for a file and it's boot file.
* In multiple home unit compilation the same ModuleName can appear in different units

The fix is to use a `NodeKey` as the actual key for the interfaces which includes `ModuleName`, `IsBoot` and `UnitId`.

Fixes #22677

- - - - -
336b2b1c by Matthew Pickering at 2023-01-24T05:37:52-05:00
Recompilation checking: Don't try to find artefacts for Interactive & hs-boot combo

In interactive mode we don't produce any linkables for hs-boot files. So
we also need to not going looking for them when we check to see if we
have all the right objects needed for recompilation.

Ticket #22669

- - - - -
6469fea7 by Matthew Pickering at 2023-01-24T05:37:52-05:00
Don't write o-boot files in Interactive mode

We should not be producing object files when in interactive mode but we
still produced the dummy o-boot files. These never made it into a
`Linkable` but then confused the recompilation checker.

Fixes #22669

- - - - -
06cc0a95 by Matthew Pickering at 2023-01-24T05:37:52-05:00
Improve driver diagnostic messages by including UnitId in message

Currently the driver diagnostics don't give any indication about which unit they correspond to.

For example `-Wmissing-home-modules` can fire multiple times for each different home unit and gives no indication about which unit it's actually reporting about.

Perhaps a longer term fix is to generalise the providence information away from a SrcSpan so that these kind of whole project errors can be reported with an accurate provenance. For now we can just include the `UnitId` in the error message.

Fixes #22678

- - - - -
4fe9eaff by Matthew Pickering at 2023-01-24T05:37:52-05:00
Key ModSummary cache by UnitId as well as FilePath

Multiple units can refer to the same files without any problem. Just
another assumption which needs to be updated when we may have multiple
home units.

However, there is the invariant that within each unit each file only
maps to one module, so as long as we also key the cache by UnitId then
we are all good.

This led to some confusing behaviour in GHCi when reloading,
multipleHomeUnits_shared distils the essence of what can go wrong.

Fixes #22679

- - - - -
ada29f5c by Matthew Pickering at 2023-01-24T05:37:52-05:00
Finder: Look in current unit before looking in any home package dependencies

In order to preserve existing behaviour it's important to look within the current component before consideirng a module might come from an external component.

This already happened by accident in `downsweep`, (because roots are used to repopulated the cache) but in the `Finder` the logic was the wrong way around.

Fixes #22680

-------------------------
Metric Decrease:
    MultiComponentModules
    MultiComponentModulesRecomp
-------------------------p

- - - - -
be701cc6 by Matthew Pickering at 2023-01-24T05:37:52-05:00
Debug: Print full NodeKey when pretty printing ModuleGraphNode

This is helpful when debugging multiple component issues.

- - - - -
34d2d463 by Krzysztof Gogolewski at 2023-01-24T05:38:32-05:00
Fix Lint check for duplicate external names

Lint was checking for duplicate external names by calling removeDups,
which needs a comparison function that is passed to Data.List.sortBy.
But the comparison was not a valid ordering - it returned LT
if one of the names was not external.
For example, the previous implementation won't find a duplicate in
[M.x, y, M.x].
Instead, we filter out non-external names before looking for duplicates.

- - - - -
1c050ed2 by Matthew Pickering at 2023-01-24T05:39:08-05:00
Add test for T22671

This was fixed by b13c6ea5

Closes #22671

- - - - -
05e6a2d9 by Tom Ellis at 2023-01-24T12:10:52-05:00
Clarify where `f` is defined

- - - - -
d151546e by Cheng Shao at 2023-01-24T12:11:29-05:00
CmmToC: fix CmmRegOff for 64-bit register on a 32-bit target

We used to print the offset value to a platform word sized integer.
This is incorrect when the offset is negative (e.g. output of cmm
constant folding) and the register is 64-bit but on a 32-bit target,
and may lead to incorrect runtime result (e.g. #22607).

The fix is simple: just treat it as a proper MO_Add, with the correct
width info inferred from the register itself.

Metric Increase:
    T12707
    T13379
    T4801
    T5321FD
    T5321Fun

- - - - -
e5383a29 by Wander Hillen at 2023-01-24T20:02:26-05:00
Allow waiting for timerfd to be interrupted during rts shutdown

- - - - -
1957eda1 by Ryan Scott at 2023-01-24T20:03:01-05:00
Restore Compose's Read/Show behavior to match Read1/Show1 instances

Fixes #22816.

- - - - -
30972827 by Matthew Pickering at 2023-01-25T03:54:14-05:00
docs: Update INSTALL.md

Removes references to make.

Fixes #22480

- - - - -
bc038c3b by Cheng Shao at 2023-01-25T03:54:50-05:00
compiler: fix handling of MO_F_Neg in wasm NCG

In the wasm NCG, we used to compile MO_F_Neg to 0.0-x. It was an
oversight, there actually exists f32.neg/f64.neg opcodes in the wasm
spec and those should be used instead! The old behavior almost works,
expect when GHC compiles the -0.0 literal, which will incorrectly
become 0.0.

- - - - -
e987e345 by Sylvain Henry at 2023-01-25T14:47:41-05:00
Hadrian: correctly detect AR at-file support

Stage0's ar may not support at-files. Take it into account.

Found while cross-compiling from Darwin to Windows.

- - - - -
48131ee2 by Sylvain Henry at 2023-01-25T14:47:41-05:00
Hadrian: fix Windows cross-compilation

Decision to build either unix or Win32 package must be stage specific
for cross-compilation to be supported.

- - - - -
288fa017 by Sylvain Henry at 2023-01-25T14:47:41-05:00
Fix RTS build on Windows

This change fixes a cross-compilation issue from ArchLinux to Windows
because these symbols weren't found.

- - - - -
2fdf22ae by Sylvain Henry at 2023-01-25T14:47:41-05:00
configure: support "windows" as an OS

- - - - -
13a0566b by Simon Peyton Jones at 2023-01-25T14:48:16-05:00
Fix in-scope set in specImports

Nothing deep here; I had failed to bring some
floated dictionary binders into scope.

Exposed by -fspecialise-aggressively

Fixes #22715.

- - - - -
b7efdb24 by Matthew Pickering at 2023-01-25T14:48:51-05:00
ci: Disable HLint job due to excessive runtime

The HLint jobs takes much longer to run (20 minutes) after "Give the RTS it's own configure script" eb5a6b91

Now the CI job will build the stage0 compiler before it generates the necessary RTS headers.

We either need to:

* Fix the linting rules so they take much less time
* Revert the commit
* Remove the linting of base from the hlint job
* Remove the hlint job

This is highest priority as it is affecting all CI pipelines.

For now I am just disabling the job because there are many more pressing
matters at hand.

Ticket #22830

- - - - -
1821ca78 by Sylvain Henry at 2023-01-26T10:14:45+01:00
WIP: add support for a third TH runner for JS

- - - - -
21b4f160 by Sylvain Henry at 2023-01-26T10:14:45+01:00
Install THRunner.js

- - - - -
0757cd32 by Sylvain Henry at 2023-01-26T10:14:45+01:00
Put JS interp in its own module

- - - - -
77d74259 by Sylvain Henry at 2023-01-26T10:14:45+01:00
Refactor a bit to make IServ and JSInterp more alike

- - - - -
8bd121df by Sylvain Henry at 2023-01-26T10:14:45+01:00
Fix warning

- - - - -
c263b5eb by Sylvain Henry at 2023-01-26T10:14:45+01:00
Add placeholders

- - - - -
b2ce2c7c by Sylvain Henry at 2023-01-26T10:14:45+01:00
Initialize JS interpreter

- - - - -
cf5c45ff by Sylvain Henry at 2023-01-26T10:14:45+01:00
Interpret one dumb message :D

- - - - -
f63a402e by Sylvain Henry at 2023-01-26T10:14:45+01:00
WIP: rts linking function

- - - - -
9fcc17e7 by Sylvain Henry at 2023-01-26T10:14:45+01:00
Spawn NodeJS

- - - - -
27e63245 by Sylvain Henry at 2023-01-26T10:14:45+01:00
WIP: start interacting with interpreter

Failing because we can't use readSync with stdin...

- - - - -
668a377b by Sylvain Henry at 2023-01-26T10:14:45+01:00
Load the RTS

- - - - -
9ab26777 by Sylvain Henry at 2023-01-26T10:14:45+01:00
Implement MallocStrings

- - - - -
7a856dac by Sylvain Henry at 2023-01-26T10:14:45+01:00
Support InitLinker command

- - - - -
73d5294b by Sylvain Henry at 2023-01-26T10:14:45+01:00
More commands

- - - - -
88208f9c by Sylvain Henry at 2023-01-26T10:14:45+01:00
Pass jsLookupSymbol

- - - - -
426ed442 by Sylvain Henry at 2023-01-26T10:14:45+01:00
Codegen CoreExpr into JS

- - - - -
43fb4fb4 by Sylvain Henry at 2023-01-26T10:14:45+01:00
Correctly export symbol

- - - - -
d1012909 by Sylvain Henry at 2023-01-26T10:14:45+01:00
Refactor computeLinkDepenencies

- Better input/output types
- Remove side-effects (ppr)
- Prepare for two-phase linking: plan, link
- Prepare for three-phase linking: plan, remove already linked, link

- - - - -
8317b51e by Sylvain Henry at 2023-01-26T10:14:45+01:00
Rename LinkableUnit duplicated type into BlockRef

- - - - -
b64c756d by Sylvain Henry at 2023-01-26T10:14:45+01:00
Implement two-phase linking: plan, link

- - - - -
52a1f960 by Sylvain Henry at 2023-01-26T10:14:45+01:00
Rename JS Unit into Block for clarity.

Also add LocatedBlockInfo type instead of using tuple

- - - - -
03165b20 by Sylvain Henry at 2023-01-26T10:14:45+01:00
Always include global blocks in LinkPlan

- - - - -
259201c7 by Sylvain Henry at 2023-01-26T10:14:45+01:00
Replace predicate with declarative list of blocks to link (easier to diff)

- - - - -
5688c3f8 by Sylvain Henry at 2023-01-26T10:14:45+01:00
Use sets instead of lists (easier to diff)

- - - - -
5a57e83b by Sylvain Henry at 2023-01-26T10:14:45+01:00
Implement incremental linking

- - - - -
c3af0891 by Sylvain Henry at 2023-01-26T10:14:45+01:00
Ensure that we link all blocks

- - - - -
d0720b36 by Sylvain Henry at 2023-01-26T10:14:45+01:00
Remove useless link plan field and fix root symbol

- - - - -
d3c7afa1 by Sylvain Henry at 2023-01-26T10:14:45+01:00
Remove import

- - - - -
27424248 by Sylvain Henry at 2023-01-26T10:14:45+01:00
Link with implicit TH unit

- - - - -
9bf8cb9f by Sylvain Henry at 2023-01-26T10:14:45+01:00
Remove some debug info

- - - - -
c5878bac by Sylvain Henry at 2023-01-26T10:14:45+01:00
Remove unused iservmain.c

- - - - -
742153a8 by Sylvain Henry at 2023-01-26T10:14:45+01:00
WIP: use JS interp in runTH

- - - - -
18b1dcd0 by Sylvain Henry at 2023-01-26T10:14:45+01:00
Merge libiserv with ghci

- - - - -
9dba6ea0 by Sylvain Henry at 2023-01-26T10:14:45+01:00
Wire ghci unit

- - - - -
cf7727bd by Sylvain Henry at 2023-01-26T10:14:45+01:00
Load interpreter server

- - - - -
9f5d6b0a by Sylvain Henry at 2023-01-26T10:14:45+01:00
Renamed LinkSpec fields for clarity

- - - - -
9a0e20ed by Sylvain Henry at 2023-01-26T10:14:45+01:00
Disable MkConInfoTable command and InfoTable module with JS

- - - - -
502db12f by Sylvain Henry at 2023-01-26T10:14:45+01:00
Run the server!

- - - - -
41e0e315 by Sylvain Henry at 2023-01-26T10:14:45+01:00
Pass some commands to the server

- - - - -
cfc91c4a by Sylvain Henry at 2023-01-26T10:14:45+01:00
Reuse more of IServ for the JS interp

- - - - -
ce0a8b16 by Sylvain Henry at 2023-01-26T10:14:45+01:00
Fix fdGetMode

- - - - -
dcc889b8 by Sylvain Henry at 2023-01-26T10:14:45+01:00
Implement LoadJS iserv message

Still failing to find the h$loadJS function for some reason

- - - - -
dfdfc270 by Sylvain Henry at 2023-01-26T10:14:45+01:00
Give access to h$loadJS to loaded code

- - - - -
61c5736b by Sylvain Henry at 2023-01-26T10:14:45+01:00
Move log message into h$loadJS

- - - - -
f009bdfa by Sylvain Henry at 2023-01-26T10:14:45+01:00
Handle more messages

- - - - -
8bafe620 by Sylvain Henry at 2023-01-26T10:14:45+01:00
Replace HValue with Any

- - - - -
d4e67bc3 by Sylvain Henry at 2023-01-26T10:14:45+01:00
s/RemoteRef/HeapRef

- - - - -
c35ad0a9 by Sylvain Henry at 2023-01-26T10:14:46+01:00
Implement LookupClosure message

- - - - -
ab1aca3e by Sylvain Henry at 2023-01-26T10:14:46+01:00
Don't forget to eval() the given string

- - - - -
014e6746 by Sylvain Henry at 2023-01-26T10:14:46+01:00
HValue renaming leftovers

- - - - -
ea830b3b by Sylvain Henry at 2023-01-26T10:14:46+01:00
Implement RunModFinalizers

- - - - -
17996faa by Sylvain Henry at 2023-01-26T10:14:46+01:00
Remove delays

- - - - -
676adaab by Sylvain Henry at 2023-01-26T10:14:46+01:00
Replace iservCall with sendMessage

- - - - -
440a761f by Sylvain Henry at 2023-01-26T10:14:46+01:00
Start making Iserv and JS interp closer

- - - - -
142a6ab9 by Sylvain Henry at 2023-01-26T10:14:46+01:00
Remove useless/unused commands

- - - - -
409c22f8 by Sylvain Henry at 2023-01-26T10:14:46+01:00
More factorization

- - - - -
62bfb5ec by Sylvain Henry at 2023-01-26T10:14:46+01:00
Cleanup

- - - - -
653d9c75 by Sylvain Henry at 2023-01-26T10:14:46+01:00
Remove now useless HasInterpProcess class

- - - - -
80ff3b92 by Sylvain Henry at 2023-01-26T10:14:46+01:00
Don't use Interp when we already have an interp instance

- - - - -
78c6c342 by Sylvain Henry at 2023-01-26T10:14:46+01:00
Refactor hptModulesBelow

- - - - -
ec9679d1 by Sylvain Henry at 2023-01-26T10:14:46+01:00
More refactoring

- - - - -
5763d13f by Sylvain Henry at 2023-01-26T10:14:46+01:00
Add jsLinkObjects to prepare for loading home-unit objects

- - - - -
d008dd17 by Sylvain Henry at 2023-01-26T10:14:46+01:00
Allow getDeps to update module info during its traversal

- - - - -
5defa107 by Sylvain Henry at 2023-01-26T10:14:46+01:00
Load home unit dependencies too

- - - - -
60d48e19 by Luite Stegeman at 2023-01-26T10:14:46+01:00
make thrunner stdin asynchronous, fixing macOS/Windows

warning: buffering very inefficient

- - - - -
04b03b6d by Sylvain Henry at 2023-01-26T10:14:46+01:00
Testsuite: enable TH for the JS target

- - - - -
86735ce8 by Sylvain Henry at 2023-01-26T10:14:46+01:00
Disable verbose messages

- - - - -
2a645368 by Sylvain Henry at 2023-01-26T10:14:46+01:00
Simplify JS protocole a great deal (use strings)

- - - - -
30572cb4 by Sylvain Henry at 2023-01-26T10:14:46+01:00
Revert "More refactoring"

This reverts commit 1942705b24f7c956a2dc15028daed41e24c9d31d.

- - - - -
f8f2739b by Sylvain Henry at 2023-01-26T10:14:46+01:00
Revert "Refactor hptModulesBelow"

This reverts commit 9840d044dec76cd3a6fb34af0bb6121d7ce933b8.

- - - - -
a9bb3569 by Sylvain Henry at 2023-01-26T10:14:46+01:00
Rename stuff

- - - - -
a3050956 by Sylvain Henry at 2023-01-26T10:14:46+01:00
Fix typo

- - - - -
87b645c6 by Sylvain Henry at 2023-01-26T10:14:46+01:00
Make whitespace linter happy

- - - - -
4276f198 by Sylvain Henry at 2023-01-26T10:15:25+01:00
Revert renamings

- - - - -
b039c39c by Sylvain Henry at 2023-01-26T10:15:30+01:00
Remove mkFreshInterpSymbol

- - - - -
00ed5505 by Sylvain Henry at 2023-01-26T10:15:30+01:00
Remove GhcjsEnv

Subsumed by incremental linker state

- - - - -


30 changed files:

- .gitlab-ci.yml
- CODEOWNERS
- INSTALL.md
- cabal.project-reinstall
- compiler/GHC.hs
- compiler/GHC/CmmToAsm/Wasm/Asm.hs
- compiler/GHC/CmmToAsm/Wasm/FromCmm.hs
- compiler/GHC/CmmToAsm/Wasm/Types.hs
- compiler/GHC/CmmToC.hs
- compiler/GHC/Core/Lint.hs
- compiler/GHC/Core/Opt/Specialise.hs
- compiler/GHC/Driver/Backend.hs
- compiler/GHC/Driver/Errors/Ppr.hs
- compiler/GHC/Driver/Errors/Types.hs
- compiler/GHC/Driver/Main.hs
- compiler/GHC/Driver/Make.hs
- compiler/GHC/Driver/Pipeline/Execute.hs
- compiler/GHC/HsToCore/Usage.hs
- compiler/GHC/Iface/Load.hs
- compiler/GHC/Iface/Recomp.hs
- compiler/GHC/Runtime/Interpreter.hs
- + compiler/GHC/Runtime/Interpreter/JS.hs
- + compiler/GHC/Runtime/Interpreter/Process.hs
- compiler/GHC/Runtime/Interpreter/Types.hs
- + compiler/GHC/Runtime/Utils.hs
- compiler/GHC/StgToJS/CodeGen.hs
- compiler/GHC/StgToJS/Deps.hs
- compiler/GHC/StgToJS/Linker/Linker.hs
- compiler/GHC/StgToJS/Linker/Types.hs
- compiler/GHC/StgToJS/Object.hs


The diff was not included because it is too large.


View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/b06707c942058095f8d4546521086698270ad098...00ed5505c8247c11cd6bc6420ddd2f6482eee823

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/b06707c942058095f8d4546521086698270ad098...00ed5505c8247c11cd6bc6420ddd2f6482eee823
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/20230126/76b5cbfc/attachment-0001.html>


More information about the ghc-commits mailing list