Simon Peyton Jones pushed to branch wip/T23162-spj at Glasgow Haskell Compiler / GHC Commits: 5ae89054 by Sylvain Henry at 2025-09-24T17:07:00-04:00 Allow disabling builtin rules (#20298) Add a way to disable built-in rules programmatically and with a debug flag. I also took the opportunity to add a debug flag to disable bignum rules, which was only possible programmatically (e.g. in a plugin). - - - - - 135242ca by Rodrigo Mesquita at 2025-09-24T17:07:44-04:00 Don't use build CFLAGS and friends as target settings In the GHC in tree configure, `CFLAGS`, `CXXFLAGS`, and similar tool configuration flags apply to the BUILD phase of the compiler, i.e. to the tools run to compile GHC itself. Notably, they should /not/ be carried over to the Target settings, i.e. these flags should /not/ apply to the tool which GHC invokes at runtime. Fixes #25637 - - - - - b418408b by Irene Knapp at 2025-09-25T09:47:54-04:00 Document etymology of "bind" as the name for `>>=` It took me twenty years of contemplation to realize why it's called that. I therefore feel that it may not be obvious to beginners. - - - - - e9c5e46f by Brandon Chinn at 2025-09-25T09:48:36-04:00 Fix tabs in string gaps (#26415) Tabs in string gaps were broken in bb030d0d because previously, string gaps were manually parsed, but now it's lexed by the usual Alex grammar and post-processed after successful lexing. It broke because of a discrepancy between GHC's lexer grammar and the Haskell Report. The Haskell Report includes tabs in whitechar: whitechar → newline | vertab | space | tab | uniWhite $whitechar used to include tabs until 18 years ago, when it was removed in order to exclude tabs from $white_no_nl in order to warn on tabs: 6e202120. In this MR, I'm adding \t back into $whitechar, and explicitly excluding \t from the $white_no_nl+ rule ignoring all whitespace in source code, which more accurately colocates the "ignore all whitespace except tabs, which is handled in the next line" logic. As a side effect of this MR, tabs are now allowed in pragmas; currently, a pragma written as {-# \t LANGUAGE ... #-} is interpreted as the tab character being the pragma name, and GHC warns "Unrecognized pragma". With this change, tabs are ignored as whitespace, which more closely matches the Report anyway. - - - - - 8bf5b309 by Cheng Shao at 2025-09-25T09:49:18-04:00 wasm: remove the --no-turbo-fast-api-calls hack from dynamic linker shebang This patch removes the `--no-turbo-fast-api-calls` hack from the dyld script shebang; it was used to workaround v8 fast call coredumps in nodejs and no longer needed, and comes with a performance penalty, hence the removal. - - - - - f0aa9041 by Richard Eisenberg at 2025-09-26T17:16:01+01:00 Move some fundep solving to new spot Work in progress...[skip ci] This completes moving dict fundeps to the main loop We need wanted/wanted fundeps too ...and some other refactors Wibbles Make FunDeps into a new module Solve new_eqs rather than adding them to WantedConstraints Wibble Import wibbles Comments only [skip ci] WIP on FunDeps [skip ci] Work in progress [skip ci] More WIP Wibbles to fundeps [skip ci] Kill off kickOutAfterUnification More wibbles Need to remove the unification-count stuff entirely and do more tidying up -- this commit is mainly for CI Wibbles solver Iterate the simples more often than plugins Start to extend to equalities Whitespace only Small improvements Wibbles - - - - - d5cc2868 by Simon Peyton Jones at 2025-09-26T17:16:01+01:00 Improved error messages from fundep changes - - - - - 8613cbba by Simon Peyton Jones at 2025-09-26T17:16:01+01:00 Wibbles - - - - - c949c8be by Simon Peyton Jones at 2025-09-26T17:16:01+01:00 Fix typo - - - - - c39db9b6 by Simon Peyton Jones at 2025-09-26T17:16:01+01:00 Wibbles - - - - - 21df47fe by Simon Peyton Jones at 2025-09-26T17:16:01+01:00 Nuke FunDepOrigin1 and 2 - - - - - 15254924 by Simon Peyton Jones at 2025-09-26T17:16:01+01:00 Wibble - - - - - 92dd9ead by Simon Peyton Jones at 2025-09-26T17:16:02+01:00 More refactoring - - - - - df72a283 by Simon Peyton Jones at 2025-09-26T17:16:02+01:00 More tidying up - - - - - 4993153d by Simon Peyton Jones at 2025-09-26T17:16:02+01:00 Yet more - - - - - 2656dc08 by Simon Peyton Jones at 2025-09-26T17:16:02+01:00 Wibbles - - - - - 9a96f472 by Simon Peyton Jones at 2025-09-26T17:16:02+01:00 Wibbles [skip ci] - - - - - 6d560e2b by Simon Peyton Jones at 2025-09-26T17:16:02+01:00 Naming and comments only [skip ci] - - - - - 0a4f786e by Simon Peyton Jones at 2025-09-26T17:16:02+01:00 Progress [skip ci]x - - - - - c41b5938 by Simon Peyton Jones at 2025-09-26T17:16:02+01:00 Make it compile .. with now story on WhatUnifications - - - - - b3dd75a1 by Simon Peyton Jones at 2025-09-26T17:16:02+01:00 Stop putting QLInstVar into the tc_lvl environment [skip ci] This is really a bug! See (TCAPP2) Not done yet - - - - - 6a5eb4a9 by Simon Peyton Jones at 2025-09-26T17:16:02+01:00 Now it compiles - - - - - ea57abeb by Simon Peyton Jones at 2025-09-26T17:16:02+01:00 Accept error message changes Plus compile time improvement Metrics: compile_time/bytes allocated Baseline Test value New value Change ---------------------- -------------------------------------- T5030(normal) 173,839,232 148,115,248 -14.8% GOOD hard_hole_fits(normal) 286,768,048 284,015,416 -1.0% geo. mean -0.2% minimum -14.8% maximum +0.3% Metric Decrease: T5030 - - - - - 69eec23e by Simon Peyton Jones at 2025-09-26T17:16:02+01:00 QuickLook's tcInstFun should make instantiation variables directly tcInstFun must make "instantiation variables", not regular unification variables, when instantiating function types. That was previously implemented by a hack: set the /ambient/ level to QLInstTyVar. But the hack finally bit me, when I was refactoring WhatUnifications. And it was always wrong: see the now-expunged (TCAPP2) note. This commit does it right, by making tcInstFun call its own instantiation functions. That entails a small bit of duplication, but the result is much, much cleaner. - - - - - 7c68ae04 by Simon Peyton Jones at 2025-09-26T17:16:02+01:00 Wibbles - - - - - 80 changed files: - compiler/GHC/Core/Opt/ConstantFold.hs - compiler/GHC/Core/Rules.hs - compiler/GHC/Core/Rules/Config.hs - compiler/GHC/Core/TyCon.hs - compiler/GHC/Driver/Config/Core/Rules.hs - compiler/GHC/Driver/Flags.hs - compiler/GHC/Driver/Session.hs - compiler/GHC/Parser/Lexer.x - compiler/GHC/Parser/Lexer/String.x - compiler/GHC/Tc/Errors.hs - compiler/GHC/Tc/Errors/Ppr.hs - compiler/GHC/Tc/Errors/Types.hs - compiler/GHC/Tc/Gen/App.hs - compiler/GHC/Tc/Instance/FunDeps.hs - compiler/GHC/Tc/Solver/Default.hs - compiler/GHC/Tc/Solver/Dict.hs - compiler/GHC/Tc/Solver/Equality.hs - + compiler/GHC/Tc/Solver/FunDeps.hs - compiler/GHC/Tc/Solver/InertSet.hs - compiler/GHC/Tc/Solver/Monad.hs - compiler/GHC/Tc/Solver/Solve.hs - compiler/GHC/Tc/Types/Constraint.hs - compiler/GHC/Tc/Types/Origin.hs - compiler/GHC/Tc/Utils/Instantiate.hs - compiler/GHC/Tc/Utils/Monad.hs - compiler/GHC/Tc/Utils/TcMType.hs - compiler/GHC/Tc/Utils/TcType.hs - compiler/GHC/Tc/Utils/Unify.hs - compiler/GHC/Tc/Zonk/TcType.hs - compiler/GHC/Types/Basic.hs - compiler/ghc.cabal.in - configure.ac - docs/users_guide/debugging.rst - libraries/ghc-internal/src/GHC/Internal/Base.hs - m4/fp_setup_windows_toolchain.m4 - m4/ghc_toolchain.m4 - + testsuite/tests/codeGen/should_compile/T20298a.hs - + testsuite/tests/codeGen/should_compile/T20298a.stderr - + testsuite/tests/codeGen/should_compile/T20298b.hs - + testsuite/tests/codeGen/should_compile/T20298b.stderr - + testsuite/tests/codeGen/should_compile/T20298c.hs - + testsuite/tests/codeGen/should_compile/T20298c.stderr - testsuite/tests/codeGen/should_compile/all.T - testsuite/tests/default/default-fail05.stderr - testsuite/tests/dependent/should_fail/T13135_simple.stderr - testsuite/tests/deriving/should_fail/T3621.stderr - testsuite/tests/indexed-types/should_fail/T14369.stderr - testsuite/tests/indexed-types/should_fail/T1897b.stderr - testsuite/tests/parser/should_fail/RecordDotSyntaxFail10.stderr - testsuite/tests/parser/should_fail/RecordDotSyntaxFail13.stderr - testsuite/tests/parser/should_fail/T20654a.stderr - + testsuite/tests/parser/should_run/T26415.hs - + testsuite/tests/parser/should_run/T26415.stdout - testsuite/tests/parser/should_run/all.T - testsuite/tests/polykinds/T6068.stdout - testsuite/tests/rep-poly/RepPolyRightSection.stderr - testsuite/tests/typecheck/should_compile/T13651.hs - − testsuite/tests/typecheck/should_compile/T13651.stderr - + testsuite/tests/typecheck/should_compile/T14745.hs - testsuite/tests/typecheck/should_compile/all.T - testsuite/tests/typecheck/should_compile/tc126.hs - testsuite/tests/typecheck/should_fail/AmbigFDs.hs - − testsuite/tests/typecheck/should_fail/AmbigFDs.stderr - testsuite/tests/typecheck/should_fail/FD3.stderr - testsuite/tests/typecheck/should_fail/FDsFromGivens2.stderr - testsuite/tests/typecheck/should_fail/T13506.stderr - testsuite/tests/typecheck/should_fail/T16512a.stderr - testsuite/tests/typecheck/should_fail/T18851b.hs - − testsuite/tests/typecheck/should_fail/T18851b.stderr - testsuite/tests/typecheck/should_fail/T18851c.hs - − testsuite/tests/typecheck/should_fail/T18851c.stderr - testsuite/tests/typecheck/should_fail/T19415.stderr - testsuite/tests/typecheck/should_fail/T19415b.stderr - testsuite/tests/typecheck/should_fail/T25325.stderr - testsuite/tests/typecheck/should_fail/T5246.stderr - testsuite/tests/typecheck/should_fail/T5978.stderr - testsuite/tests/typecheck/should_fail/T9612.stderr - testsuite/tests/typecheck/should_fail/all.T - testsuite/tests/typecheck/should_fail/tcfail143.stderr - utils/jsffi/dyld.mjs The diff was not included because it is too large. View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/e61cec2ab4aed4b049d29121d8f7dbd... -- View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/e61cec2ab4aed4b049d29121d8f7dbd... You're receiving this email because of your account on gitlab.haskell.org.