-
f6c00dac
by ARATA Mizuki at 2025-09-16T14:38:18+05:30
x86 NCG: Make MOVD's output format explicit
The old design led to inference of a wrong format,
losing upper bits of a vector register.
Fixes #25659
Co-authored-by: sheaf <sam.derbyshire@gmail.com>
(cherry picked from commit 62760367dca36da5828875c5423109f9a5523337)
-
e0437900
by Patrick at 2025-09-16T14:38:18+05:30
Fix deadlock/loop in interface rehydration (#25858)
In #25858, GHC hangs when processing modules with class defaults due to a
circular dependency in the interface rehydration process. The deadlock/loop
occurred when eager class defaults rehydration accessed not-yet-complete module details.
To fix the immediate deadlock/loop.
`tcIfaceDefaults` is refactored, we use the class name directly from the iface
and use `forM` for lazy loading the class, which algins with the handling of other fields
of ModDetails. This laziness ensure rehydration waits for HomePackageTable (HPT) to
be updated and prevent premature evaluation of ModDetails inside `fixIO``.
As suggested by Matthew, class defaults importing is also refactored
to align with the compiler's established interface loading conventions.
- add class defaults field to ExternalPackageState (EPS).
- rehydrate and store class defaults in EPS at `loadInterface`.
- Instead of using `tcIfaceDefaults` in `tcRnImports`, we add and use
`tcGetClsDefaults` to read defaults directly from HPT or EPS
when importing modules.
Tests:
- T25858, T25858v1-2: Test class hydration in defaults
- T25858v3-4: Test type list hydration in defaults
New Note [Tricky rehydrating IfaceDefaults loop] is added.
Thanks to @sheaf (Sam), @mpickering (Matthew), and @simonpj (Simon) for their
valuable input and analysis.
Fixes #25858.
(cherry picked from commit d5ea80c6237c735eb1fb8bcce133e009df99beec)
-
4fd881a9
by sheaf at 2025-09-16T14:38:19+05:30
9.12 user's guide: NamedDefault semantic change
This commit documents a semantic change in 9.12 that takes effect as
part of the implementation of the NamedDefaults extension: defaulting
will now take place in more situations than it did before, even when
the extension is not enabled!
Fixes #25777
(cherry picked from commit 0d4d6a272f569f19ce7c723dc21b73b2e0493706)
-
7ddf44a8
by Zubin Duggal at 2025-09-16T14:38:19+05:30
QuickLook: do a shape test before unifying
This commit ensures we do a shape test before unifying. This ensures
we don't try to unify a TyVarTv with a non-tyvar, e.g.
alpha[tyv] := Int
Fixes #25950
(cherry picked from commit a4c0c8d32e8c29364062b199abe19b033e3d4381)
Co-authored-by: sheaf <sam.derbyshire@gmail.com>
(cherry picked from commit 91db1d51d2d53346612fe843e863cd71f8f9d338)
-
04dfd009
by Ben Gamari at 2025-09-16T14:38:19+05:30
rts/linker/LoadArchive: Use bool
Improve type precision by using `bool` instead of `int` and `StgBool`.
(cherry picked from commit 580a33536e6180ce1d623d0922f7de5c975b6b3e)
-
c497468f
by Ben Gamari at 2025-09-16T14:38:19+05:30
rts/linker/LoadArchive: Don't rely on file extensions for identification
Previously archive members would be identified via their file extension,
as described in #13103. We now instead use a more principled approach,
relying on the magic number in the member's header.
As well, we refactor treatment of archive format detection to improve
code clarity and error handling.
Closes #13103.
(cherry picked from commit 76d1041dfa4b96108cfdd22b07f2b3feb424dcbe)
-
02d052f4
by Ben Gamari at 2025-09-16T14:38:19+05:30
rts/LoadArchive: Handle null terminated string tables
As of `llvm-ar` now emits filename tables terminated with null
characters instead of the usual POSIX `/\n` sequence.
Fixes #26150.
(cherry picked from commit 3b63b254cb8b1832f32751aed6d05ceaabdeb826)
-
85d64f46
by Ben Gamari at 2025-09-16T14:38:19+05:30
rts/LoadArchive: Handle string table entries terminated with /
llvm-ar appears to terminate string table entries with `/\n` [1]. This
matters in the case of thin archives, since the filename is used. In the
past this worked since `llvm-ar` would produce archives with "small"
filenames when possible. However, now it appears to always use the
string table.
[1] https://github.com/llvm/llvm-project/blob/bfb686bb5ba503e9386dc899e1ebbe2488e6a0a8/llvm/lib/Object/ArchiveWriter.cpp#L314
(cherry picked from commit 65f19293124acbc2c6493ca9c098fc74150e184a)
-
533853eb
by Andreas Klebinger at 2025-09-16T14:38:19+05:30
rts: Support COFF BigObj files in archives.
(cherry picked from commit 01136779b1d4c1576c925ef673f55c81c45d8551)
-
4064ead7
by Andrew Lelechenko at 2025-09-16T14:38:19+05:30
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.
(cherry picked from commit 57d3b4a82e97f379cc8f41d61675d8c3904f7572)
-
eced323e
by Zubin Duggal at 2025-09-16T14:38:19+05:30
Prepare 9.12.3