Cheng Shao pushed to branch wip/deepseq-primop at Glasgow Haskell Compiler / GHC Commits: 414b9593 by Cheng Shao at 2026-01-24T07:11:51-05:00 ci: remove duplicate keys in .gitlab-ci.yml This patch removes accidentally duplicate keys in `.gitlab-ci.yml`. The YAML spec doesn't allow duplicate keys in the first place, and according to GitLab docs (https://docs.gitlab.com/ci/yaml/yaml_optimization/#anchors), the latest key overrides the earlier entries. - - - - - e5cb5491 by Cheng Shao at 2026-01-24T07:12:34-05:00 hadrian: drop obsolete configure/make builder logic for libffi This patch drops obsolete hadrian logic around `Configure libffiPath`/`Make libffiPath` builders, they are no longer needed after libffi-clib has landed. Closes #26815. - - - - - 2d160222 by Simon Hengel at 2026-01-24T07:13:17-05:00 Fix typo in roles.rst - - - - - 56db94f7 by Peter Trommler at 2026-01-26T11:26:18+01:00 PPC NCG: Generate clear right insn at arch width The clear right immediate (clrrxi) is only available in word and doubleword width. Generate clrrxi instructions at architecture width for all MachOp widths. Fixes #24145 - - - - - 5957a8ad by Wolfgang Jeltsch at 2026-01-27T06:11:40-05:00 Add operations for obtaining operating-system handles This contribution implements CLC proposal #369. It adds operations for obtaining POSIX file descriptors and Windows handles that underlie Haskell handles. Those operating system handles can also be obtained without such additional operations, but this is more involved and, more importantly, requires using internals. - - - - - 86a0510c by Greg Steuck at 2026-01-27T06:12:34-05:00 Move flags to precede patterns for grep and read files directly This makes the tests pass with non-GNU (i.e. POSIX-complicant) tools. There's no reason to use cat and pipe where direct file argument works. - - - - - 50761451 by Cheng Shao at 2026-01-27T21:51:23-05:00 ci: update darwin boot ghc to 9.10.3 This patch updates darwin boot ghc to 9.10.3, along with other related updates, and pays off some technical debt here: - Update `nixpkgs` and use the `nixpkgs-25.05-darwin` channel. - Update the `niv` template. - Update LLVM to 21 and update `llvm-targets` to reflect LLVM 21 layout changes for arm64/x86_64 darwin targets. - Use `stdenvNoCC` to prevent nix packaged apple sdk from being used by boot ghc, and manually set `DEVELOPER_DIR`/`SDKROOT` to enforce the usage of system-wide command line sdk for macos. - When building nix derivation for boot ghc, run `configure` via the `arch` command so that `configure` and its subprocesses pick up the manually specified architecture. - Remove the previous horrible hack that obliterates `configure` to make autoconf test result in true. `configure` now properly does its job. - Remove the now obsolete configure args and post install settings file patching logic. - Use `scheme-small` for texlive to avoid build failures in certain unused texlive packages, especially on x86_64-darwin. - - - - - 94dcd15e by Matthew Pickering at 2026-01-27T21:52:05-05:00 Evaluate backtraces for "error" exceptions at the moment they are thrown See Note [Capturing the backtrace in throw] and Note [Hiding precise exception signature in throw] which explain the implementation. This commit makes `error` and `throw` behave the same with regard to backtraces. Previously, exceptions raised by `error` would not contain useful IPE backtraces. I did try and implement `error` in terms of `throw` but it started to involve putting diverging functions into hs-boot files, which seemed to risky if the compiler wouldn't be able to see if applying a function would diverge. CLC proposal: https://github.com/haskell/core-libraries-committee/issues/383 Fixes #26751 - - - - - ef35e3ea by Teo Camarasu at 2026-01-27T21:52:46-05:00 ghc-internal: move all Data instances to Data.Data Most instances of Data are defined in GHC.Internal.Data.Data. Let's move all remaining instance there. This moves other modules down in the dependency hierarchy allowing for more parallelism, and it decreases the likelihood that we would need to load this heavy .hi file if we don't actually need it. Resolves #26830 Metric Decrease: T12227 T16875 - - - - - 5e0ec555 by sheaf at 2026-01-28T06:56:38-05:00 Add test case for #25679 This commit adds the T25679 test case. The test now passes, thanks to commit 1e53277af36d3f0b6ad5491f70ffc5593a49dcfd. Fixes #25679 - - - - - f1cd1611 by sheaf at 2026-01-28T06:56:38-05:00 Improve defaulting of representational equalities This commit makes the defaulting of representational equalities, introduced in 1e53277a, a little bit more robust. Now, instead of calling the eager unifier, it calls the full-blown constraint solver, which means that it can handle some subtle situations, e.g. involving functional dependencies and type-family injectivity annotations, such as: type family F a = r | r -> a type instance F Int = Bool [W] F beta ~R Bool - - - - - 25edf516 by sheaf at 2026-01-28T06:56:38-05:00 Improve errors for unsolved representational equalities This commit adds a new field of CtLoc, CtExplanations, which allows the typechecker to leave some information about what it has done. For the moment, it is only used to improve error messages for unsolved representational equalities. The typechecker will now accumulate, when unifying at representational role: - out-of-scope newtype constructors, - type constructors that have nominal role in a certain argument, - over-saturated type constructors, - AppTys, e.g. `c a ~R# c b`, to report that we must assume that 'c' has nominal role in its parameters, - data family applications that do not reduce, potentially preventing newtype unwrapping. Now, instead of having to re-construct the possible errors after the fact, we simply consult the CtExplanations field. Additionally, this commit modifies the typechecker error messages that concern out-of-scope newtype constructors. The error message now depends on whether we have an import suggestion to provide to the user: - If we have an import suggestion for the newtype constructor, the message will be of the form: The data constructor MkN of the newtype N is out of scope Suggested fix: add 'MkN' to the import list in the import of 'M' - If we don't have any import suggestions, the message will be of the form: NB: The type 'N' is an opaque newtype, whose constructor is hidden Fixes #15850, #20289, #20468, #23731, #25949, #26137 - - - - - 4d0e6da1 by Simon Peyton Jones at 2026-01-28T06:57:19-05:00 Fix two bugs in short-cut constraint solving There are two main changes here: * Use `isSolvedWC` rather than `isEmptyWC` in `tryShortCutSolver` The residual constraint may have some fully-solved, but still-there implications, and we don't want them to abort short cut solving! That bug caused #26805. * In the short-cut solver, we abandon the fully-solved residual constraint; but we may thereby lose track of Givens that are needed, and either report them as redundant or prune evidence bindings that are in fact needed. This bug stopped the `constraints` package from compiling; see the trail in !15389. The second bug led me to (another) significant refactoring of the mechanism for tracking needed EvIds. See the new Note [Tracking needed EvIds] in GHC.Tc.Solver.Solve It's simpler and much less head-scratchy now. Some particulars: * An EvBindsVar now tracks NeededEvIds * We deal with NeededEvIds for an implication only when it is fully solved. Much simpler! * `tryShortCutTcS` now takes a `TcM WantedConstraints` rather than `TcM Bool`, so that is can plumb the needed EvIds correctly. * Remove `ic_need` and `ic_need_implic` from Implication (hooray), and add `ics_dm` and `ics_non_dm` to `IC_Solved`. Pure refactor * Shorten data constructor `CoercionHole` to `CH`, following general practice in GHC. * Rename `EvBindMap` to `EvBindsMap` for consistency - - - - - 662480b7 by Cheng Shao at 2026-01-28T06:58:00-05:00 ci: use debian validate bindists instead of fedora release bindists in testing stage This patch changes the `abi-test`, `hadrian-multi` and `perf` jobs in the full-ci pipeline testing stage to use debian validate bindists instead of fedora release bindists, to increase pipeline level parallelism and allow full-ci pipelines to complete earlier. Closes #26818. - - - - - 39581ec6 by Cheng Shao at 2026-01-28T06:58:40-05:00 ci: run perf test with -j$cores This patch makes the perf ci job compile Cabal with -j$cores to speed up the job. - - - - - 53681e5a by Cheng Shao at 2026-01-29T03:30:57+01:00 WIP - - - - - 141 changed files: - .gitlab-ci.yml - .gitlab/ci.sh - .gitlab/darwin/nix/sources.json - .gitlab/darwin/toolchain.nix - compiler/GHC/CmmToAsm/PPC/CodeGen.hs - compiler/GHC/Core/Coercion.hs - compiler/GHC/Core/FamInstEnv.hs - compiler/GHC/Core/Predicate.hs - compiler/GHC/Core/TyCo/Rep.hs - compiler/GHC/Core/TyCo/Subst.hs - compiler/GHC/Core/TyCo/Tidy.hs - compiler/GHC/Core/TyCon/RecWalk.hs - compiler/GHC/Data/Maybe.hs - compiler/GHC/HsToCore/Pmc/Solver.hs - compiler/GHC/Rename/Unbound.hs - compiler/GHC/Tc/Errors.hs - compiler/GHC/Tc/Errors/Ppr.hs - compiler/GHC/Tc/Errors/Types.hs - compiler/GHC/Tc/Gen/Default.hs - compiler/GHC/Tc/Gen/Expr.hs - compiler/GHC/Tc/Instance/Family.hs - compiler/GHC/Tc/Solver/Default.hs - compiler/GHC/Tc/Solver/Dict.hs - compiler/GHC/Tc/Solver/Equality.hs - compiler/GHC/Tc/Solver/InertSet.hs - compiler/GHC/Tc/Solver/Monad.hs - compiler/GHC/Tc/Solver/Solve.hs - compiler/GHC/Tc/TyCl/Instance.hs - compiler/GHC/Tc/Types/Constraint.hs - compiler/GHC/Tc/Types/CtLoc.hs - compiler/GHC/Tc/Types/Evidence.hs - compiler/GHC/Tc/Types/Origin.hs - compiler/GHC/Tc/Utils/Monad.hs - compiler/GHC/Tc/Utils/TcMType.hs - compiler/GHC/Tc/Utils/Unify.hs - compiler/GHC/Tc/Zonk/TcType.hs - compiler/GHC/Tc/Zonk/Type.hs - compiler/GHC/Types/Error/Codes.hs - compiler/GHC/Types/RepType.hs - compiler/GHC/Types/Var.hs - compiler/GHC/Utils/Monad.hs - compiler/GHC/Utils/Trace.hs - docs/users_guide/exts/roles.rst - hadrian/src/Context.hs - hadrian/src/Settings/Builders/Configure.hs - hadrian/src/Settings/Builders/Make.hs - libraries/base/base.cabal.in - libraries/base/changelog.md - + libraries/base/src/System/IO/OS.hs - libraries/base/tests/IO/all.T - + libraries/base/tests/IO/osHandles001FileDescriptors.hs - + libraries/base/tests/IO/osHandles001FileDescriptors.stdout - + libraries/base/tests/IO/osHandles001WindowsHandles.hs - + libraries/base/tests/IO/osHandles001WindowsHandles.stdout - + libraries/base/tests/IO/osHandles002FileDescriptors.hs - + libraries/base/tests/IO/osHandles002FileDescriptors.stderr - + libraries/base/tests/IO/osHandles002FileDescriptors.stdin - + libraries/base/tests/IO/osHandles002FileDescriptors.stdout - + libraries/base/tests/IO/osHandles002WindowsHandles.hs - + libraries/base/tests/IO/osHandles002WindowsHandles.stderr - + libraries/base/tests/IO/osHandles002WindowsHandles.stdin - + libraries/base/tests/IO/osHandles002WindowsHandles.stdout - libraries/base/tests/T23454.stderr - libraries/base/tests/perf/Makefile - + libraries/ghc-experimental/cbits/DeepSeq.cmm - libraries/ghc-experimental/ghc-experimental.cabal.in - + libraries/ghc-experimental/src/GHC/DeepSeq.hs - libraries/ghc-internal/ghc-internal.cabal.in - libraries/ghc-internal/src/GHC/Internal/Data/Data.hs - libraries/ghc-internal/src/GHC/Internal/Err.hs - libraries/ghc-internal/src/GHC/Internal/Exts.hs - libraries/ghc-internal/src/GHC/Internal/Functor/ZipList.hs - + libraries/ghc-internal/src/GHC/Internal/System/IO/OS.hs - libraries/ghc-internal/tests/stack-annotation/all.T - + libraries/ghc-internal/tests/stack-annotation/ann_frame005.hs - + libraries/ghc-internal/tests/stack-annotation/ann_frame005.stdout - llvm-targets - + testsuite/tests/default/T25825.hs - testsuite/tests/default/all.T - testsuite/tests/deriving/should_fail/T1496.stderr - testsuite/tests/deriving/should_fail/T4846.stderr - testsuite/tests/deriving/should_fail/T5498.stderr - testsuite/tests/deriving/should_fail/T6147.stderr - testsuite/tests/deriving/should_fail/T7148.stderr - testsuite/tests/deriving/should_fail/T7148a.stderr - testsuite/tests/deriving/should_fail/T8984.stderr - testsuite/tests/deriving/should_fail/deriving-via-fail.stderr - testsuite/tests/deriving/should_fail/deriving-via-fail4.stderr - testsuite/tests/deriving/should_fail/deriving-via-fail5.stderr - testsuite/tests/driver/T16318/Makefile - testsuite/tests/driver/T18125/Makefile - testsuite/tests/gadt/CasePrune.stderr - testsuite/tests/ghci.debugger/scripts/T8487.stdout - testsuite/tests/ghci.debugger/scripts/break011.stdout - testsuite/tests/ghci.debugger/scripts/break017.stdout - testsuite/tests/ghci.debugger/scripts/break025.stdout - testsuite/tests/indexed-types/should_fail/T9580.stderr - testsuite/tests/interface-stability/base-exports.stdout - testsuite/tests/interface-stability/base-exports.stdout-javascript-unknown-ghcjs - testsuite/tests/interface-stability/base-exports.stdout-mingw32 - testsuite/tests/interface-stability/base-exports.stdout-ws-32 - testsuite/tests/interface-stability/ghc-experimental-exports.stdout - testsuite/tests/interface-stability/ghc-experimental-exports.stdout-mingw32 - testsuite/tests/linear/should_fail/LinearRole.stderr - + testsuite/tests/primops/should_run/DeepSeqPrimOp.hs - + testsuite/tests/primops/should_run/DeepSeqPrimOp.stdout - testsuite/tests/primops/should_run/all.T - testsuite/tests/roles/should_fail/RolesIArray.stderr - + testsuite/tests/simplCore/should_compile/T26805.hs - + testsuite/tests/simplCore/should_compile/T26805.stderr - testsuite/tests/simplCore/should_compile/all.T - + testsuite/tests/typecheck/should_compile/T26805a.hs - testsuite/tests/typecheck/should_compile/all.T - testsuite/tests/typecheck/should_fail/T10285.stderr - testsuite/tests/typecheck/should_fail/T10534.stderr - testsuite/tests/typecheck/should_fail/T10715b.stderr - testsuite/tests/typecheck/should_fail/T11347.stderr - testsuite/tests/typecheck/should_fail/T15801.stderr - + testsuite/tests/typecheck/should_fail/T15850.hs - + testsuite/tests/typecheck/should_fail/T15850.stderr - + testsuite/tests/typecheck/should_fail/T15850_Lib.hs - + testsuite/tests/typecheck/should_fail/T20289.hs - + testsuite/tests/typecheck/should_fail/T20289.stderr - + testsuite/tests/typecheck/should_fail/T20289_A.hs - testsuite/tests/typecheck/should_fail/T22645.stderr - testsuite/tests/typecheck/should_fail/T22924a.stderr - + testsuite/tests/typecheck/should_fail/T23731.hs - + testsuite/tests/typecheck/should_fail/T23731.stderr - + testsuite/tests/typecheck/should_fail/T23731b.hs - + testsuite/tests/typecheck/should_fail/T23731b.stderr - + testsuite/tests/typecheck/should_fail/T23731b_aux.hs - + testsuite/tests/typecheck/should_fail/T25679.hs - + testsuite/tests/typecheck/should_fail/T25679.stderr - + testsuite/tests/typecheck/should_fail/T25949.hs - + testsuite/tests/typecheck/should_fail/T25949.stderr - + testsuite/tests/typecheck/should_fail/T25949_aux.hs - + testsuite/tests/typecheck/should_fail/T26137.hs - + testsuite/tests/typecheck/should_fail/T26137.stderr - testsuite/tests/typecheck/should_fail/TcCoercibleFail.stderr - testsuite/tests/typecheck/should_fail/TcCoercibleFail3.stderr - testsuite/tests/typecheck/should_fail/all.T The diff was not included because it is too large. View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/50f8212ee9491e09ef642718bc37180... -- View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/50f8212ee9491e09ef642718bc37180... You're receiving this email because of your account on gitlab.haskell.org.