-
1f9e4f54
by Stephen Morgan at 2025-08-03T15:14:08+10:00
refactor: Modify Data.List.sortOn to use (>) instead of compare. (#26184)
This lets a more efficient (>) operation be used if one exists.
This is technically a breaking change for malformed Ord instances, where
x > y is not equivalent to compare x y == GT.
Discussed by the CLC in issue #332: https://github.com/haskell/core-libraries-committee/issues/332
-
4f6bc9cf
by fendor at 2025-08-04T17:50:06-04:00
Revert "base: Expose Backtraces constructor and fields"
This reverts commit 17db44c5b32fff82ea988fa4f1a233d1a27bdf57.
-
bcdec657
by Zubin Duggal at 2025-08-05T10:37:29+05:30
compiler: Export a version of `newNameCache` that is not prone to footguns.
`newNameCache` must be initialized with both a non-"reserved" unique tag, as well
as a list of known key names. Failing to do so results in hard to debug unique conflicts.
It is difficult for API users to tell which unique tags are safe to use. So instead of leaving
this up to the user to decide, we now export a version of `newNameCache` which uses a guaranteed
non-reserved unique tag. In fact, this is now the way the unique tag is initialized for all invocations
of the compiler.
The original version of `newNameCache` is now exported as `newNameCache'` for advanced users.
We also deprecate `initNameCache` as it is also prone to footguns and is completely subsumed in
functionality by `newNameCache` and `newNameCache'`.
Fixes #26135 and #26055
-
57d3b4a8
by Andrew Lelechenko at 2025-08-05T18:36:31-04:00
hadrian: bump Stackage snapshot to LTS 24.2 / GHC 9.10.2
In line with #25693 we should use GHC 9.10 as a boot compiler,
while Hadrian stack.yaml was stuck on GHC 9.6.
-
c2a78cea
by Peng Fan at 2025-08-05T18:37:27-04:00
NCG/LA64: implement atomic write with finer-grained DBAR hints
Signed-off-by: Peng Fan <fanpeng@loongson.cn>
-
95231c8e
by Teo Camarasu at 2025-08-06T08:35:58-04:00
CODEOWNERS: add CLC as codeowner of base
We also remove hvr, since I think he is no longer active
-
77df0ded
by Andrew Lelechenko at 2025-08-06T08:36:39-04:00
Bump submodule text to 2.1.3
-
8af260d0
by Nikolaos Chatzikonstantinou at 2025-08-06T08:37:23-04:00
docs: fix internal import in getopt examples
This external-facing doc example shouldn't mention GHC internals when
using 'fromMaybe'.
-
69cc16ca
by Marc Scholten at 2025-08-06T15:51:28-04:00
README: Add note on ghc.nix
-
93a2f450
by Daniel Díaz at 2025-08-06T15:52:14-04:00
Link to the "Strict Bindings" docs from the linear types docs
Strict Bidings are relevant for the kinds of multiplicity annotations
linear lets support.
-
246b7853
by Matthew Pickering at 2025-08-07T06:58:30-04:00
level imports: Check the level of exported identifiers
The level imports specification states that exported identifiers have to
be at level 0. This patch adds the requird level checks that all
explicitly mentioned identifiers occur at level 0.
For implicit export specifications (T(..) and module B), only level 0
identifiers are selected for re-export.
ghc-proposal: https://github.com/ghc-proposals/ghc-proposals/pull/705
Fixes #26090
-
358bc4fc
by fendor at 2025-08-07T06:59:12-04:00
Bump GHC on darwin CI to 9.10.1
-
1903ae35
by Matthew Pickering at 2025-08-07T12:21:10+01:00
ipe: Place strings and metadata into specific .ipe section
By placing the .ipe metadata into a specific section it can be stripped
from the final binary if desired.
```
objcopy --remove-section .ipe <binary>
upx <binary>
```
Towards #21766
-
c80dd91c
by Matthew Pickering at 2025-08-07T12:22:42+01:00
ipe: Place magic word at the start of entries in the .ipe section
The magic word "IPE\nIPE\n" is placed at the start of .ipe sections,
then if the section is stripped, we can check whether the section starts
with the magic word or not to determine whether there is metadata
present or not.
Towards #21766
-
cab42666
by Matthew Pickering at 2025-08-07T12:22:42+01:00
ipe: Use stable IDs for IPE entries
IPEs have historically been indexed and reported by their address.
This makes it impossible to compare profiles between runs, since the
addresses may change (due to ASLR) and also makes it tricky to separate
out the IPE map from the binary.
This small patch adds a stable identifier for each IPE entry.
The stable identifier is a single 64 bit word. The high-bits are a
per-module identifier and the low bits identify which entry in each
module.
1. When a node is added into the IPE buffer it is assigned a unique
identifier from an incrementing global counter.
2. Each entry already has an index by it's position in the
`IpeBufferListNode`.
The two are combined together by the `IPE_ENTRY_KEY` macro.
Info table profiling uses the stable identifier rather than the address
of the info table.
The benefits of this change are:
* Profiles from different runs can be easily compared
* The metadata can be extracted from the binary (via the eventlog for
example) and then stripped from the executable.
Fixes #21766
-
2860a9a5
by Simon Peyton Jones at 2025-08-07T20:29:18-04:00
In TcSShortCut, typechecker plugins should get empty Givens
Solving in TcShortCut mode means /ignoring the Givens/. So we
should not pass them to typechecker plugins!
Fixes #26258.
This is a fixup to the earlier MR:
commit 1bd12371feacc52394a0e660ef9349f9e8ee1c06
Author: Simon Peyton Jones <simon.peytonjones@gmail.com>
Date: Mon Jul 21 10:04:49 2025 +0100
Improve treatment of SPECIALISE pragmas -- again!
-
2157db2d
by sterni at 2025-08-08T15:32:39-04:00
hadrian: enable terminfo if --with-curses-* flags are given
The GHC make build system used to support WITH_TERMINFO in ghc.mk which
allowed controlling whether to build GHC with terminfo or not. hadrian
has replaced this with a system where this is effectively controlled by
the cross-compiling setting (the default WITH_TERMINFO value was bassed
on CrossCompiling, iirc).
This behavior is undesireable in some cases and there is not really a
good way to work around it. Especially for downstream packagers,
modifying this via UserSettings is not really feasible since such a
source file has to be kept in sync with Settings/Default.hs manually
since it can't import Settings.Default or any predefined Flavour
definitions.
To avoid having to add a new setting to cfg/system.config and/or a new
configure flag (though I'm happy to implement both if required), I've
chosen to take --with-curses-* being set explicitly as an indication
that the user wants to have terminfo enabled. This would work for
Nixpkgs which sets these flags [1] as well as haskell.nix [2] (which
goes to some extreme measures [3] [4] to force terminfo in all scenarios).
In general, I'm an advocate for making the GHC build be the same for
native and cross insofar it is possible since it makes packaging GHC and
Haskell related things while still supporting cross much less
compilicated. A more minimal GHC with reduced dependencies should
probably be a specific flavor, not the default.
Partially addresses #26288 by forcing terminfo to be built if the user
explicitly passes configure flags related to it. However, it isn't built
by default when cross-compiling yet nor is there an explicit way to
control the package being built.
[1]: https://github.com/NixOS/nixpkgs/blob/3a7266fcefcb9ce353df49ba3f292d06443760bb/pkgs/development/compilers/ghc/common-hadrian.nix#L513-L515
[2]: https://github.com/input-output-hk/haskell.nix/blob/6eaafcdf04bab7be745d1aa4f74d2cc85700042b/compiler/ghc/default.nix#L185
[3]: https://github.com/input-output-hk/haskell.nix/blob/6eaafcdf04bab7be745d1aa4f74d2cc85700042b/compiler/ghc/default.nix#L678-L682
[4]: https://github.com/input-output-hk/haskell.nix/blob/6eaafcdf04bab7be745d1aa4f74d2cc85700042b/compiler/ghc/default.nix#L772-L773
-
b3c31488
by David Feuer at 2025-08-08T15:33:21-04:00
Add default QuasiQuoters
Add `defaultQuasiQuoter` and `namedDefaultQuasiQuoter` to make it easier
to write `QuasiQuoters` that give helpful error messages when they're
used in inappropriate contexts.
Closes #24434.
-
695d6aa8
by Apoorv Ingle at 2025-08-10T11:47:10-05:00
- Remove one `SrcSpan` field from `VAExpansion`. It is no longer needed.
- Make `tcExpr` take a `Maybe HsThingRn` which will be passed on to tcApp and used by splitHsApps to determine a more accurate `AppCtx`
- `tcXExpr` is less hacky now
- do not look through HsExpansion applications
- kill OrigPat and remove HsThingRn From VAExpansion
- look through XExpr ExpandedThingRn while inferring type of head
- always set in generated code after stepping inside a ExpandedThingRn
- fixing record update error messages
- remove special case of tcbody from tcLambdaMatches
- wrap last stmt expansion in a HsPar so that the error messages are prettier
- remove special case of dsExpr for ExpandedThingTc
- make EExpand (HsExpr GhcRn) instead of EExpand HsThingRn
- fixing error messages for rebindable
-
4f9b04d2
by Apoorv Ingle at 2025-08-10T11:47:10-05:00
fix the case where head of the application chain is an expanded expression and the argument is a type application c.f. T19167.hs
-
f81ef1b9
by Apoorv Ingle at 2025-08-10T11:47:10-05:00
move setQLInstLevel inside tcInstFun
-
c920bda7
by Apoorv Ingle at 2025-08-10T11:47:10-05:00
ignore ds warnings originating from gen locations
-
50498466
by Apoorv Ingle at 2025-08-10T11:47:10-05:00
filter expr stmts error msgs
-
6142b89e
by Apoorv Ingle at 2025-08-10T11:47:10-05:00
exception for AppDo while making error ctxt
-
afcdcc39
by Apoorv Ingle at 2025-08-10T11:47:10-05:00
moving around things for locations and error ctxts
-
e6d92598
by Apoorv Ingle at 2025-08-10T11:47:10-05:00
popErrCtxt doesn't push contexts and popErrCtxts in the first argument to bind and >> in do expansion statements
-
32d4aa90
by Apoorv Ingle at 2025-08-10T11:47:10-05:00
accept test cases with changed error messages
-------------------------
Metric Decrease:
T9020
-------------------------
-
bbbf717f
by Apoorv Ingle at 2025-08-10T11:47:10-05:00
look through PopErrCtxt while splitting exprs in application chains
-
a9b52860
by Apoorv Ingle at 2025-08-10T11:47:10-05:00
check the right origin for record selector incomplete warnings
-
4518fb1a
by Apoorv Ingle at 2025-08-10T11:47:10-05:00
kill VAExpansion
-
ff7c53b1
by Apoorv Ingle at 2025-08-10T11:47:10-05:00
pass CtOrigin to tcApp for instantiateSigma
-
9802dc8e
by Apoorv Ingle at 2025-08-10T11:47:10-05:00
do not suppress pprArising
-
78ce8783
by Apoorv Ingle at 2025-08-10T11:47:10-05:00
kill VACall
-
0b2ff42b
by Apoorv Ingle at 2025-08-10T11:47:10-05:00
kill AppCtxt
-
e745d321
by Apoorv Ingle at 2025-08-10T11:47:10-05:00
remove addHeadCtxt
-
e3055cd3
by Apoorv Ingle at 2025-08-10T11:47:10-05:00
fix pprArising for MonadFailErrors
-
eb69d1b0
by Apoorv Ingle at 2025-08-10T11:47:10-05:00
rename ctxt to sloc
-
f40490bc
by Apoorv Ingle at 2025-08-10T11:47:10-05:00
fix RepPolyDoBind error message herald
-
eb8f3bab
by Apoorv Ingle at 2025-08-10T11:47:10-05:00
SrcCodeCtxt
more changes
-
eded19cd
by Apoorv Ingle at 2025-08-10T11:47:11-05:00
make tcl_in_gen_code a SrcCodeCtxt and rename DoOrigin to DoStmtOrigin
-
7b483c64
by Apoorv Ingle at 2025-08-10T11:47:11-05:00
make error messages for records saner
-
1a864e50
by Apoorv Ingle at 2025-08-10T11:47:11-05:00
accept the right test output
-
f932a32e
by Apoorv Ingle at 2025-08-10T11:47:11-05:00
make make sure to set inGenerated code for RecordUpdate checks
-
851d9c7f
by Apoorv Ingle at 2025-08-10T11:47:11-05:00
rename HsThingRn to SrcCodeOrigin
-
38ae2380
by Apoorv Ingle at 2025-08-10T11:47:11-05:00
minor lclenv getter setter changes
-
55435fcd
by Apoorv Ingle at 2025-08-10T11:47:11-05:00
fix exprCtOrigin for HsProjection case. It was assigned to be SectionOrigin, but it should be GetFieldOrigin
-
a9208611
by Apoorv Ingle at 2025-08-10T11:47:11-05:00
undo test changes
-
b509a565
by Apoorv Ingle at 2025-08-10T11:47:11-05:00
fix unused do binding warning error location
-
47a8e1b5
by Apoorv Ingle at 2025-08-10T11:47:11-05:00
FRRRecordUpdate message change
-
972e0d7d
by Apoorv Ingle at 2025-08-10T11:47:11-05:00
- kill tcl_in_gen_code
- It is subsumed by `ErrCtxtStack` which keep tracks of `ErrCtxt` and code ctxt
-
f95855f3
by Apoorv Ingle at 2025-08-10T11:47:11-05:00
kill ExpectedFunTyOrig
-
6fa77ee9
by Apoorv Ingle at 2025-08-10T11:47:11-05:00
update argument position number of CtOrigin
-
35a55cc5
by Apoorv Ingle at 2025-08-10T11:47:11-05:00
fix suggestion in error message for record field and modify herald everywhere
-
6dc8f1e0
by Apoorv Ingle at 2025-08-10T11:47:11-05:00
new CtOrigin ExpectedTySyntax
-
8e15ec91
by Apoorv Ingle at 2025-08-10T11:47:11-05:00
more changes to printing origin
-
edf7ce71
by Apoorv Ingle at 2025-08-10T11:47:11-05:00
rep poly test case error messages
-
e44cd495
by Apoorv Ingle at 2025-08-10T11:47:11-05:00
OrigPat pprCtO says a do statement to mimic DoPatOrigin
-
88473c1a
by Apoorv Ingle at 2025-08-10T11:47:11-05:00
remove location from OrigPat