[Git][ghc/ghc][ghc-9.10] 63 commits: NCG: AArch64 - Add -finter-module-far-jumps.
Zubin pushed to branch ghc-9.10 at Glasgow Haskell Compiler / GHC Commits: 59629e84 by Andreas Klebinger at 2025-07-22T17:54:57+05:30 NCG: AArch64 - Add -finter-module-far-jumps. When enabled the arm backend will assume jumps to targets outside of the current module are further than 128MB away. This will allow for code to work if: * The current module results in less than 128MB of code. * The whole program is loaded within a 4GB memory region. We have seen a few reports of broken linkers (#24648) where this flag might allow a program to compile/run successfully at a very small performance cost. ------------------------- Metric Increase: T783 ------------------------- (cherry picked from commit f32d6c2b468c67fed619f2fa1fb97eb012afbb6e) - - - - - 4e67ec95 by Andreas Klebinger at 2025-07-22T17:54:58+05:30 SpecConstr: Introduce a separate argument limit for forced specs. We used to put no limit at all on specializations forced via the SPEC argument. This isn't always reasonable so we introduce a very high limit that applies to forced specializations, a flag to control it, and we now emit a warning if we fail a specialization because we exceed the warning. Fixes #25197 (cherry picked from commit da20cac16d0982c982f9d6779dc8174e5184fe15) - - - - - f633ae3f by Jens Petersen at 2025-07-22T17:54:58+05:30 hp2ps Utilities.c: include stdlib.h instead of extern malloc and realloc (cherry picked from commit 7596675e470699f6184e13c08b268972028bc868) - - - - - 33a04bf7 by Simon Peyton Jones at 2025-07-22T17:54:58+05:30 We can't UNPACK multi-constructor GADTs This MR fixes #25672 See Note [Unpacking GADTs and existentials] in GHC.Types.Id.Make (cherry picked from commit b6d5b09103dea97351774c5ab34082165504b997) - - - - - 19d035d2 by Cheng Shao at 2025-07-22T17:54:58+05:30 testsuite: fix InternalCounters test with +debug_ghc The `InternalCounters` test case fails when ghc is built with `+debug_ghc`. This patch skips it in that case and allows the testsuite to pass for the `+debug_ghc` flavour transformer. (cherry picked from commit 59b9307b239f0e1058ccc90ca2fadb86552c0308) - - - - - cd9568dd by sheaf at 2025-07-22T17:54:58+05:30 Propagate long distance info to guarded let binds This commit ensures that we propagate the enclosing long distance information to let bindings inside guards, in order to get accurate pattern-match checking warnings, in particular incomplete record selector warnings. Example: data D = K0 | K1 { fld :: Int } f :: D -> Int f d@(K1 {}) | let i = fld d = i f _ = 3 We now correctly recognise that the field selector 'fld' cannot fail, due to the outer pattern match which guarantees that the value 'd' has the field 'fld'. Fixes #25749 (cherry picked from commit 0f2241e9758e8b74fedfe52269a8fb1ff17858cb) - - - - - dff0870b by Fangyi Zhou at 2025-07-22T17:54:58+05:30 wasm: use primitive opcodes for fabs and sqrt - Add new `WasmInstr` constructor `WasmSqrt` for sqrt, corresponding to primitivie operations in wasm. - When lowering CallishMachOp, use `WasmAbs` and `WasmSqrt` for F32 and F64 fabs and sqrt. (cherry picked from commit 64b0d4d061902c0f7443355fa4877ff6aad946d5) - - - - - 9d129da6 by sheaf at 2025-07-22T17:54:58+05:30 Don't report used duplicate record fields as unused This commit fixes the bug reported in #24035 in which the import of a duplicate record field could be erroneously reported as unused. The issue is that an import of the form "import M (fld)" can import several different 'Name's, and we should only report an error if ALL of those 'Name's are unused, not if ANY are. Note [Reporting unused imported duplicate record fields] in GHC.Rename.Names explains the solution to this problem. Fixes #24035 (cherry picked from commit 0cb1db9270e11469f11a2ccf323219e032c2a312) - - - - - 23789c28 by sheaf at 2025-07-23T18:37:50+05:30 LLVM: fix typo in padLiveArgs This commit fixes a serious bug in the padLiveArgs function, which was incorrectly computing too many padding registers. This caused segfaults, e.g. in the UnboxedTuples test. Fixes #25770 Fixes #25773 (cherry picked from commit 044a6e08c2aee23ef18c60a036e01d3b77168830) - - - - - cf5d5a31 by sheaf at 2025-07-23T18:37:50+05:30 GHC settings: always unescape escaped spaces In #25204, it was noted that GHC didn't properly deal with having spaces in its executable path, as it would compute an invalid path for the C compiler. The original fix in 31bf85ee49fe2ca0b17eaee0774e395f017a9373 used a trick: escape spaces before splitting up flags into a list. This fixed the behaviour with extra flags (e.g. -I), but forgot to also unescape for non-flags, e.g. for an executable path (such as the C compiler). This commit rectifies this oversight by consistently unescaping the spaces that were introduced in order to split up argument lists. Fixes #25204 (cherry picked from commit aa1e3b8b5c9a92592b6a49783083da37dfc69375) - - - - - 0b4316fd by Ben Gamari at 2025-07-23T18:37:50+05:30 llvmGen: Fix built-in variable predicate Previously the predicate to identify LLVM builtin global variables was checking for `$llvm` rather than `@llvm` as it should. (cherry picked from commit 6e67fa083a50684e1cfae546e07cab4d4250e871) - - - - - 4cc84ccf by Ben Gamari at 2025-07-23T18:37:50+05:30 llvmGen: Fix linkage of built-in arrays LLVM now insists that built-in arrays use Appending linkage, not Internal. Fixes #25769. (cherry picked from commit a9d0a22c0777de18446f7f1e31ec0f575d53b290) - - - - - 61267ae6 by Zubin Duggal at 2025-07-23T18:37:50+05:30 get-win32-tarballs.py: List tarball files to be downloaded if we cannot find them Fixes #25929 (cherry picked from commit aba2a4a5913a347f7e11623ac3e6f528cf8d8c39) - - - - - e28490c1 by Matthew Pickering at 2025-07-23T18:37:50+05:30 perf: Replace uses of genericLength with strictGenericLength genericLength is a recursive function and marked NOINLINE. It is not going to specialise. In profiles, it can be seen that 3% of total compilation time when computing bytecode is spend calling this non-specialised function. In addition, we can simplify `addListToSS` to avoid traversing the input list twice and also allocating an intermediate list (after the call to reverse). Overall these changes reduce the time spend in 'assembleBCOs' from 5.61s to 3.88s. Allocations drop from 8GB to 5.3G. Fixes #25706 - - - - - 873c0cdc by Matthew Craven at 2025-07-23T18:37:50+05:30 Fix bytecode generation for `tagToEnum# <LITERAL>` Fixes #25975. (cherry picked from commit a00eeaec8f0b98ec2b8c4630f359fdeb3a6ce04e) - - - - - b5dc8100 by sheaf at 2025-07-23T18:37:50+05:30 Use mkTrAppChecked in ds_ev_typeable This change avoids violating the invariant of mkTrApp according to which the argument should not be a fully saturated function type. This ensures we don't return false negatives for type equality involving function types. Fixes #25998 (cherry picked from commit 9c6d2b1bf54310b6d9755aa2ba67fbe38feeac51) - - - - - 33343357 by Ben Gamari at 2025-07-23T18:37:50+05:30 rts/linker: Don't fail due to RTLD_NOW In !12264 we started using the NativeObj machinery introduced some time ago for loading of shared objects. One of the side-effects of this change is shared objects are now loaded eagerly (i.e. with `RTLD_NOW`). This is needed by NativeObj to ensure full visibility of the mappings of the loaded object, which is in turn needed for safe shared object unloading. Unfortunately, this change subtly regressed, causing compilation failures in some programs. Specifically, shared objects which refer to undefined symbols (e.g. which may be usually provided by either the executable image or libraries loaded via `dlopen`) will fail to load with eager binding. This is problematic as GHC loads all package dependencies while, e.g., evaluating TemplateHaskell splices. This results in compilation failures in programs depending upon (but not using at compile-time) packages with undefined symbol references. To mitigate this NativeObj now first attempts to load an object via eager binding, reverting to lazy binding (and disabling unloading) on failure. See Note [Don't fail due to RTLD_NOW]. Fixes #25943. (cherry picked from commit ce6cf240f4b39371777d484b4de30d746b7abd62) - - - - - 4f3649e5 by Ben Gamari at 2025-07-23T18:37:50+05:30 base: Note strictness changes made in 4.16.0.0 Addresses #25886. (cherry picked from commit 7722232c6f8f0b57db03d0439d77896d38191bf9) - - - - - 6e5b2a4d by kwxm at 2025-07-23T18:37:51+05:30 Fix bugs in `integerRecipMod` and `integerPowMod` This fixes #26017. * `integerRecipMod x 1` now returns `(# 1 | #)` for all x; previously it incorrectly returned `(# | () #)`, indicating failure. * `integerPowMod 0 e m` now returns `(# | () #)` for e<0 and m>1, indicating failure; previously it incorrectly returned `(# 0 | #)`. (cherry picked from commit 8ded23300367c6e032b3c5a635fd506b8915374b) - - - - - 8de483d9 by Ben Gamari at 2025-07-23T18:37:51+05:30 rts/linker: Factor out ProddableBlocks machinery - - - - - f1f75958 by Ben Gamari at 2025-07-23T18:37:51+05:30 rts/linker: Improve efficiency of proddable blocks structure Previously the linker's "proddable blocks" check relied on a simple linked list of spans. This resulted in extremely poor complexity while linking objects with lots of small sections (e.g. objects built with split sections). Rework the mechanism to instead use a simple interval set implemented via binary search. Fixes #26009. - - - - - de2afe15 by Ben Gamari at 2025-07-23T18:37:51+05:30 testsuite: Add simple functional test for ProddableBlockSet - - - - - 09e85c28 by Ben Gamari at 2025-07-23T18:37:51+05:30 rts/linker/PEi386: Drop check for LOAD_LIBRARY_SEARCH_*_DIRS The `LOAD_LIBRARY_SEARCH_USER_DIRS` and `LOAD_LIBRARY_SEARCH_DEFAULT_DIRS` were introduced in Windows Vista and have been available every since. As we no longer support Windows XP we can drop this check. Addresses #26009. - - - - - 992975e9 by Ben Gamari at 2025-07-23T18:37:51+05:30 rts/linker/PEi386: Clean up code style - - - - - 68b36fb7 by Ben Gamari at 2025-07-23T18:37:51+05:30 rts/Hash: Factor out hashBuffer This is a useful helper which can be used for non-strings as well. - - - - - 95c4edff by Ben Gamari at 2025-07-23T18:37:51+05:30 rts/linker/PEi386: Fix incorrect use of break in nested for Previously the happy path of PEi386 used `break` in a double-`for` loop resulting in redundant calls to `LoadLibraryEx`. Fixes #26052. - - - - - ef423f0c by Ben Gamari at 2025-07-23T18:37:51+05:30 rts: Correctly mark const arguments - - - - - b9f49013 by Ben Gamari at 2025-07-23T18:37:51+05:30 rts/linker/PEi386: Don't repeatedly load DLLs Previously every DLL-imported symbol would result in a call to `LoadLibraryEx`. This ended up constituting over 40% of the runtime of `ghc --interactive -e 42` on Windows. Avoid this by maintaining a hash-set of loaded DLL names, skipping the call if we have already loaded the requested DLL. Addresses #26009. - - - - - e308564f by Ben Gamari at 2025-07-23T18:37:51+05:30 rts/linker: Expand comment describing ProddableBlockSet - - - - - 92083d23 by Cheng Shao at 2025-07-23T18:37:51+05:30 rts: fix rts_clearMemory logic when sanity checks are enabled This commit fixes an RTS assertion failure when invoking rts_clearMemory with +RTS -DS. -DS implies -DZ which asserts that free blocks contain 0xaa as the designated garbage value. Also adds the sanity way to rts_clearMemory test to prevent future regression. Closes #26011. ChatGPT Codex automatically diagnosed the issue and proposed the initial patch in a single shot, given a GHC checkout and the following prompt: --- Someone is reporting the following error when attempting to use `rts_clearMemory` with the RTS option `-DS`: ``` test.wasm: internal error: ASSERTION FAILED: file rts/sm/Storage.c, line 1216 (GHC version 9.12.2.20250327 for wasm32_unknown_wasi) Please report this as a GHC bug: https://www.haskell.org/ghc/reportabug ``` What's the culprit? How do I look into this issue? --- I manually reviewed & revised the patch, tested and submitted it. (cherry picked from commit 86406f48659a5ab61ce1fd2a2d427faba2dcdb09) - - - - - 82646560 by Hécate Kleidukos at 2025-07-23T18:37:51+05:30 Expose all of Backtraces' internals for ghc-internal Closes #26049 (cherry picked from commit 16014bf84afa0d009b6254b103033bceca42233a) - - - - - ebd36e61 by ARATA Mizuki at 2025-07-23T18:37:51+05:30 AArch64 NCG: Fix sub-word arithmetic right shift As noted in Note [Signed arithmetic on AArch64], we should zero-extend sub-word values. Fixes #26061 (cherry picked from commit 265d0024abc95be941f8e4769f24af128eedaa10) - - - - - 1d7e7535 by Ben Gamari at 2025-07-23T20:57:32+05:30 base: Expose Backtraces constructor and fields This was specified in the proposal (CLC #199) yet somehow didn't make it into the implementation. Fixes #26049. (cherry picked from commit 17db44c5b32fff82ea988fa4f1a233d1a27bdf57) - - - - - 05545de7 by Cheng Shao at 2025-07-24T07:39:03+05:30 testsuite: add T26120 marked as broken (cherry picked from commit 44b8cee2d5c114b238898ce4ee7b44ecaa0bf491) - - - - - 7fb42ed3 by Cheng Shao at 2025-07-24T07:39:03+05:30 compiler: fix GHC.SysTools.Ar archive member size writing logic This patch fixes a long-standing bug in `GHC.SysTools.Ar` that emits the wrong archive member size in each archive header. It should encode the exact length of the member payload, excluding any padding byte, otherwise malformed archive that extracts a broken object with an extra trailing byte could be created. Apart from the in-tree `T26120` test, I've also created an out-of-tree testsuite at https://github.com/TerrorJack/ghc-ar-quickcheck that contains QuickCheck roundtrip tests for `GHC.SysTools.Ar`. With this fix, simple roundtrip tests and `writeGNUAr`/GNU `ar` roundtrip test passes. There might be more bugs lurking in here, but this patch is still a critical bugfix already. Fixes #26120 #22586. Co-authored-by: Codex <codex@openai.com> (cherry picked from commit 894a04f3a82dd39ecef71619e2032c4dfead556e) - - - - - 41db0a0b by Vladislav Zavialov at 2025-07-24T07:39:03+05:30 Error message with EmptyCase and RequiredTypeArguments (#25004) Fix a panic triggered by a combination of \case{} and forall t -> ghci> let f :: forall (xs :: Type) -> (); f = \case {} panic! (the 'impossible' happened) GHC version 9.10.1: Util: only The new error message looks like this: ghci> let f :: forall (xs :: Type) -> (); f = \case {} <interactive>:5:41: error: [GHC-48010] • Empty list of alternatives in \case expression checked against a forall-type: forall xs -> ... This is achieved as follows: * A new data type, BadEmptyCaseReason, is now used to describe why an empty case has been rejected. Used in TcRnEmptyCase. * HsMatchContextRn is passed to tcMatches, so that the type checker can attach the syntactic context to the error message. * tcMatches now rejects type arguments if the list of alternatives is empty. This is what fixes the bug. (cherry picked from commit cce869ea2439bb16c284ce7ed71a173d54a8c9ad) - - - - - 7f9c7f22 by Vladislav Zavialov at 2025-07-24T07:39:03+05:30 Fix EmptyCase panic in tcMatches (#25960) Due to faulty reasoning in Note [Pattern types for EmptyCase], tcMatches was too keen to panic. * Old (incorrect) assumption: pat_tys is a singleton list. This does not hold when \case{} is checked against a function type preceded by invisible forall. See the new T25960 test case. * New (hopefully correct) assumption: vis_pat_tys is a singleton list. This should follow from: checkArgCounts :: MatchGroup GhcRn ... -> TcM VisArity checkArgCounts (MG { mg_alts = L _ [] }) = return 1 ... (cherry picked from commit b34890c7d4803041caff060391eec298e2b0a098) - - - - - 418bb568 by Vladislav Zavialov at 2025-07-24T07:39:03+05:30 Take subordinate 'type' specifiers into account This patch fixes multiple bugs (#22581, #25983, #25984, #25991) in name resolution of subordinate import lists. Bug #22581 ---------- In subordinate import lists, the use of the `type` namespace specifier used to be ignored. For example, this import statement was incorrectly accepted: import Prelude (Bool(type True)) Now it results in an error message: <interactive>:2:17: error: [GHC-51433] In the import of ‘Prelude’: a data type called ‘Bool’ is exported, but its subordinate item ‘True’ is not in the type namespace. Bug #25983 ---------- In subordinate import lists within a `hiding` clause, non-existent items led to a poor warning message with -Wdodgy-imports. Consider: import Prelude hiding (Bool(X)) The warning message for this import statement used to misreport the cause of the problem: <interactive>:3:24: warning: [GHC-56449] [-Wdodgy-imports] In the import of ‘Prelude’: an item called ‘Bool’ is exported, but it is a type. Now the warning message is correct: <interactive>:2:24: warning: [GHC-10237] [-Wdodgy-imports] In the import of ‘Prelude’: a data type called ‘Bool’ is exported, but it does not export any constructors or record fields called ‘X’. Bug #25984 ---------- In subordinate import lists within a `hiding` clause, non-existent items resulted in the entire import declaration being discarded. For example, this program was incorrectly accepted: import Prelude hiding (Bool(True,X)) t = True Now it results in an error message: <interactive>:2:5: error: [GHC-88464] Data constructor not in scope: True Bug #25991 ---------- In subordinate import lists, it was not possible to refer to a class method if there was an associated type of the same name: module M_helper where class C a b where type a # b (#) :: a -> b -> () module M where import M_helper (C((#))) This import declaration failed with: M.hs:2:28: error: [GHC-10237] In the import of ‘M_helper’: an item called ‘C’ is exported, but it does not export any children (constructors, class methods or field names) called ‘#’. Now it is accepted. Summary ------- The changes required to fix these bugs are almost entirely confined to GHC.Rename.Names. Other than that, there is a new error constructor BadImportNonTypeSubordinates with error code [GHC-51433]. Test cases: T22581a T22581b T22581c T22581d T25983a T25983b T25983c T25983d T25983e T25983f T25983g T25984a T25984b T25991a T25991b1 T25991b2 (cherry picked from commit 282df90570fa9c777c914ae543fea291f7158482) - - - - - 89d6c4ff by Zubin Duggal at 2025-07-24T07:39:03+05:30 fetch_gitlab: Ensure we copy users_guide.pdf and Haddock.pdf to the release docs directory Fixes #24093 (cherry picked from commit 48cf32dbd2cf52e1db7ee68bc79a5511ff52a2a6) - - - - - cf1f18c3 by Ben Gamari at 2025-07-24T07:39:03+05:30 configure: Drop probing of ld.gold As noted in #25716, `gold` has been dropped from binutils-2.44. Fixes #25716. Metric Increase: size_hello_artifact_gzip size_hello_unicode_gzip ghc_prim_so (cherry picked from commit c635f164cb62bcb3f34166adc24e5a9437415311) - - - - - a4123c53 by Ben Gamari at 2025-07-24T07:39:03+05:30 testsuite/recomp015: Ignore stderr This is necessary since ld.bfd complains that we don't have a .note.GNU-stack section, potentially resulting in an executable stack. (cherry picked from commit 637bb53825b9414f7c7dbed4cc3e5cc1ed4d2329) - - - - - e6b14504 by Andreas Klebinger at 2025-07-24T07:39:03+05:30 Add since tag and more docs for do-clever-arg-eta-expansion Fixes #26113 (cherry picked from commit 699deef58bf89ef2f111b35f72d303a3624d219d) - - - - - 0a8dcfb9 by Zubin Duggal at 2025-07-24T07:39:03+05:30 release: copy index.html from correct directory (cherry picked from commit cbfd0829cd61928976c9eb17ba4af18272466063) (cherry picked from commit ea3f7fd5f702d41077fff0a749b9c443d54e4844) - - - - - 1f698c03 by Tamar Christina at 2025-07-24T07:39:03+05:30 rts: Handle API set symbol versioning conflicts (cherry picked from commit 63373b95331f07c16e3eef511379fe3bed484839) - - - - - e5e2f396 by Tamar Christina at 2025-07-24T07:39:03+05:30 rts: Implement WEAK EXTERNAL undef redirection by target symbol name (cherry picked from commit e3bfc62416dd738bfd1a4464f0a622c9d0b7c393) - - - - - 9eefe6ba by Zubin Duggal at 2025-07-24T23:53:12+05:30 bump deepseq to 1.5.2.0 - - - - - add840dc by Zubin Duggal at 2025-07-24T23:53:12+05:30 bump os-string to 2.0.7 - - - - - b00be995 by Zubin Duggal at 2025-07-24T23:53:13+05:30 bump process to 1.6.26.1 - - - - - f3d00969 by Zubin Duggal at 2025-07-24T23:53:13+05:30 bump unix to 2.8.7.0 - - - - - b3899d42 by Jens Petersen at 2025-07-24T23:53:13+05:30 9.10 hadrian can build with Cabal-3.12.1 fixes #25605 (cherry picked from commit 07f17b6ed1bb0ba7134ee8dfd992036e97552c94) - - - - - 3b1ef0ae by sheaf at 2025-07-24T23:53:13+05:30 Don't cache solved [W] HasCallStack constraints This commit ensures we do not add solved Wanted constraints that mention HasCallStack or HasExceptionContext constraints to the set of solved Wanted dictionary constraints: caching them is invalid, because re-using such cached dictionaries means using an old call-stack instead of constructing a new one, as was reported in #25529. Fixes #25529. (cherry picked from commit 256ac29c8df4f17a1d50ea243408d506ebf395d6) - - - - - 7492d007 by Zubin Duggal at 2025-07-24T23:53:13+05:30 In commit "Don't cache solved [W] HasCallStack constraints" (256ac29c8df4f17a1d50ea243408d506ebf395d6), we attempt to use `tryM` to avoid errors when looking up certain known-key names like CallStack while compiling ghc-prim and ghc-internal. Unfortunately, `tryM` doesn't catch module lookup errors. This manifests as a failure to build ghc-prim in `--make` mode on the GHC 9.10 branch. Instead, we explicitly avoid doing lookups when we are compiling ghc-prim or ghc-internal instead of relying on catching the exception. - - - - - ce5f1782 by Zubin Duggal at 2025-07-24T23:53:13+05:30 Consider `PromotedDataCon` in `tyConStupidTheta` Haddock checks data declarations for the stupid theta so as not to pretty-print them as empty contexts. Type data declarations end up as `PromotedDataCon`s by the time Haddock performs this check, causing a panic. This commit extends `tyConStupidTheta` so that it returns an empty list for `PromotedDataCon`s. This decision was guided by the fact that type data declarations never have data type contexts (see (R1) in Note [Type data declarations]). Fixes #25739. (cherry picked from commit 8d33d048dbe159a045a4c304fa92318365a3dfe2) - - - - - a54ae3d5 by Ryan Hendrickson at 2025-07-24T23:53:13+05:30 haddock: Preserve indentation in multiline examples Intended for use with :{ :}, but doesn't look for those characters. Any consecutive lines with birdtracks will only have initial whitespace stripped up to the column of the first line. (cherry picked from commit 2c73250494fd9f48ebda6d6fe72f0cd03182aff1) - - - - - ccd546a9 by Ryan Hendrickson at 2025-07-24T23:53:13+05:30 haddock: Parse math even after ordinary characters Fixes a bug where math sections were not recognized if preceded by a character that isn't special (like space or a markup character). (cherry picked from commit b790d647c1ccdcc9aa8f166c3e0e42d0a5c29625) - - - - - 6c735ac2 by Ryan Hendrickson at 2025-07-24T23:53:13+05:30 haddock: Fix links to type operators (cherry picked from commit a0adc30d892f14f543f39d5c45faccacbc28afb4) - - - - - 68ce2fde by Ryan Hendrickson at 2025-07-24T23:53:13+05:30 haddock: Document instances from other packages When attaching instances to `Interface`s, it isn't enough just to look for instances in the list of `Interface`s being processed. We also need to look in the modules on which they depend, including those outside of this package. Fixes #25147. Fixes #26079. (cherry picked from commit a26243fde4680271712a3d774e17f6cd6da4a652) - - - - - d23694b3 by Zubin Duggal at 2025-07-24T23:53:13+05:30 haddock: Don't warn about missing link destinations for derived names. Fixes #26114 (cherry picked from commit 5dabc718a04bfc4d277c5ff7f815ee3d6b9670cb) - - - - - 539a44bc by Zubin Duggal at 2025-07-24T23:53:13+05:30 Bump haddock version to 2.31.3 - - - - - 90a90dc9 by doyougnu at 2025-07-25T05:28:40+05:30 RTS linker: add support for hidden symbols (#25191) Add linker support for hidden symbols. We basically treat them as weak symbols. Patch upstreamed from haskell.nix Co-authored-by: Sylvain Henry <sylvain@haskus.fr> Co-authored-by: Moritz Angermann <moritz.angermann@gmail.com> (cherry picked from commit 9ca155065b39968d784846902ec1e0bcbe60ee40) - - - - - 4c43fe31 by Tamar Christina at 2025-07-25T05:28:40+05:30 rts: Mark API set symbols as HIDDEN and correct symbol type (cherry picked from commit 48e9aa3ebf5acb950a94addc6e47bfebeabead70) - - - - - 3007a9f4 by Zubin Duggal at 2025-07-25T16:01:44+05:30 Prepare 9.10.3 prerelease - - - - - cc5b5550 by Zubin Duggal at 2025-07-29T01:46:41+05:30 Set -Wno-unused-imports for os-string Metric Increase: T13035 T9198 Metric Decrease: MultiLayerModulesTH_OneShot - - - - - 207 changed files: - .gitlab/generate-ci/gen_ci.hs - .gitlab/jobs.yaml - .gitlab/rel_eng/fetch-gitlab-artifacts/fetch_gitlab.py - compiler/GHC/Builtin/Names.hs - compiler/GHC/ByteCode/Asm.hs - compiler/GHC/CmmToAsm/AArch64/CodeGen.hs - compiler/GHC/CmmToAsm/Config.hs - compiler/GHC/CmmToAsm/Wasm/Asm.hs - compiler/GHC/CmmToAsm/Wasm/FromCmm.hs - compiler/GHC/CmmToAsm/Wasm/Types.hs - compiler/GHC/CmmToLlvm/Base.hs - compiler/GHC/CmmToLlvm/Data.hs - compiler/GHC/Core/Opt/SpecConstr.hs - compiler/GHC/Core/Predicate.hs - compiler/GHC/Core/TyCon.hs - compiler/GHC/Driver/Config/CmmToAsm.hs - compiler/GHC/Driver/DynFlags.hs - compiler/GHC/Driver/Flags.hs - compiler/GHC/Driver/Pipeline/Execute.hs - compiler/GHC/Driver/Session.hs - compiler/GHC/Hs/ImpExp.hs - compiler/GHC/HsToCore/Binds.hs - compiler/GHC/HsToCore/GuardedRHSs.hs - compiler/GHC/Prelude/Basic.hs - compiler/GHC/Rename/Bind.hs - compiler/GHC/Rename/Names.hs - compiler/GHC/Settings/IO.hs - compiler/GHC/StgToByteCode.hs - compiler/GHC/SysTools/Ar.hs - compiler/GHC/SysTools/Process.hs - compiler/GHC/Tc/Errors/Ppr.hs - compiler/GHC/Tc/Errors/Types.hs - compiler/GHC/Tc/Gen/Arrow.hs - compiler/GHC/Tc/Gen/Expr.hs - compiler/GHC/Tc/Gen/Match.hs - compiler/GHC/Tc/Solver/Dict.hs - compiler/GHC/Tc/Solver/Monad.hs - compiler/GHC/Tc/Solver/Types.hs - compiler/GHC/Tc/TyCl.hs - compiler/GHC/Types/Error/Codes.hs - compiler/GHC/Types/Id/Make.hs - compiler/GHC/Utils/Outputable.hs - configure.ac - + docs/users_guide/9.10.3-notes.rst - docs/users_guide/exts/explicit_namespaces.rst - docs/users_guide/using-optimisation.rst - hadrian/hadrian.cabal - hadrian/src/Context.hs - hadrian/src/Hadrian/Haskell/Cabal/Parse.hs - hadrian/src/Hadrian/Haskell/Cabal/Type.hs - hadrian/src/Rules/BinaryDist.hs - hadrian/src/Rules/CabalReinstall.hs - hadrian/src/Rules/Register.hs - hadrian/src/Rules/Rts.hs - hadrian/src/Settings/Builders/Ghc.hs - hadrian/src/Settings/Warnings.hs - libraries/base/base.cabal.in - libraries/base/changelog.md - libraries/base/src/Control/Exception/Backtrace.hs - libraries/deepseq - libraries/ghc-bignum/src/GHC/Num/Integer.hs - libraries/ghc-boot/GHC/Data/SizedSeq.hs - libraries/ghc-internal/src/GHC/Internal/Exception/Backtrace.hs - libraries/os-string - libraries/process - libraries/unix - m4/find_ld.m4 - m4/fp_setup_windows_toolchain.m4 - rts/Hash.c - rts/Hash.h - rts/Linker.c - rts/LinkerInternals.h - rts/PathUtils.c - rts/PathUtils.h - rts/linker/Elf.c - rts/linker/ElfTypes.h - rts/linker/LoadNativeObjPosix.c - rts/linker/MachO.c - rts/linker/PEi386.c - rts/linker/PEi386.h - + rts/linker/ProddableBlocks.c - + rts/linker/ProddableBlocks.h - rts/rts.cabal - rts/sm/Storage.h - testsuite/driver/testlib.py - testsuite/tests/backpack/cabal/bkpcabal08/bkpcabal08.stdout - + testsuite/tests/bytecode/T25975.hs - + testsuite/tests/bytecode/T25975.stdout - testsuite/tests/bytecode/all.T - + testsuite/tests/codeGen/should_run/T26061.hs - + testsuite/tests/codeGen/should_run/T26061.stdout - testsuite/tests/codeGen/should_run/all.T - testsuite/tests/deriving/should_compile/T17324.stderr - testsuite/tests/driver/T20604/T20604.stdout - testsuite/tests/driver/recomp015/all.T - testsuite/tests/ffi/should_run/all.T - + testsuite/tests/ghc-api/T26120.hs - + testsuite/tests/ghc-api/T26120.stdout - testsuite/tests/ghc-api/all.T - testsuite/tests/ghc-api/settings-escape/T11938.hs → testsuite/tests/ghc-api/settings-escape/T24265.hs - testsuite/tests/ghc-api/settings-escape/T11938.stderr → testsuite/tests/ghc-api/settings-escape/T24265.stderr - + testsuite/tests/ghc-api/settings-escape/T25204.hs - + testsuite/tests/ghc-api/settings-escape/T25204.stdout - + testsuite/tests/ghc-api/settings-escape/T25204_C.c - testsuite/tests/ghc-api/settings-escape/all.T - + testsuite/tests/ghc-api/settings-escape/ghc-install-folder/ghc version.h - testsuite/tests/ghc-api/settings-escape/ghc-install-folder/lib/.gitkeep → testsuite/tests/ghc-api/settings-escape/ghc-install-folder/lib with spaces/.gitkeep - testsuite/tests/ghci/scripts/ghci064.stdout - 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/lib/integer/T26017.hs - + testsuite/tests/lib/integer/T26017.stdout - testsuite/tests/lib/integer/all.T - testsuite/tests/lib/integer/integerRecipMod.hs - testsuite/tests/lib/integer/integerRecipMod.stdout - + testsuite/tests/llvm/should_run/T25770.hs - + testsuite/tests/llvm/should_run/T25770.stdout - + testsuite/tests/llvm/should_run/all.T - testsuite/tests/module/T11970A.stderr - testsuite/tests/module/T21826.stderr - testsuite/tests/module/mod176.stderr - testsuite/tests/module/mod81.stderr - testsuite/tests/module/mod91.stderr - testsuite/tests/overloadedrecflds/should_fail/overloadedrecfldsfail06.stderr - testsuite/tests/plugins/plugins10.stdout - testsuite/tests/plugins/static-plugins.stdout - + testsuite/tests/pmcheck/should_compile/T25749.hs - testsuite/tests/pmcheck/should_compile/all.T - testsuite/tests/rename/should_compile/T14881.stderr - + testsuite/tests/rename/should_compile/T22581c.hs - + testsuite/tests/rename/should_compile/T22581c_helper.hs - + testsuite/tests/rename/should_compile/T22581d.script - + testsuite/tests/rename/should_compile/T22581d.stdout - + testsuite/tests/rename/should_compile/T24035.hs - + testsuite/tests/rename/should_compile/T24035_aux.hs - + testsuite/tests/rename/should_compile/T24035b.hs - + testsuite/tests/rename/should_compile/T24035b.stderr - + testsuite/tests/rename/should_compile/T25983a.hs - + testsuite/tests/rename/should_compile/T25983a.stderr - + testsuite/tests/rename/should_compile/T25983b.hs - + testsuite/tests/rename/should_compile/T25983b.stderr - + testsuite/tests/rename/should_compile/T25983c.hs - + testsuite/tests/rename/should_compile/T25983c.stderr - + testsuite/tests/rename/should_compile/T25983d.hs - + testsuite/tests/rename/should_compile/T25983d.stderr - + testsuite/tests/rename/should_compile/T25983e.hs - + testsuite/tests/rename/should_compile/T25983e.stderr - + testsuite/tests/rename/should_compile/T25983f.hs - + testsuite/tests/rename/should_compile/T25983f.stderr - + testsuite/tests/rename/should_compile/T25983g.hs - + testsuite/tests/rename/should_compile/T25983g.stderr - + testsuite/tests/rename/should_compile/T25984a.hs - + testsuite/tests/rename/should_compile/T25984a.stderr - + testsuite/tests/rename/should_compile/T25984a_helper.hs - + testsuite/tests/rename/should_compile/T25991a.hs - + testsuite/tests/rename/should_compile/T25991a_helper.hs - testsuite/tests/rename/should_compile/all.T - + testsuite/tests/rename/should_fail/T22581a.hs - + testsuite/tests/rename/should_fail/T22581a.stderr - + testsuite/tests/rename/should_fail/T22581a_helper.hs - + testsuite/tests/rename/should_fail/T22581b.hs - + testsuite/tests/rename/should_fail/T22581b.stderr - + testsuite/tests/rename/should_fail/T22581b_helper.hs - + testsuite/tests/rename/should_fail/T25984b.hs - + testsuite/tests/rename/should_fail/T25984b.stderr - + testsuite/tests/rename/should_fail/T25991b1.hs - + testsuite/tests/rename/should_fail/T25991b1.stderr - + testsuite/tests/rename/should_fail/T25991b2.hs - + testsuite/tests/rename/should_fail/T25991b2.stderr - + testsuite/tests/rename/should_fail/T25991b_helper.hs - testsuite/tests/rename/should_fail/T9006.stderr - testsuite/tests/rename/should_fail/all.T - testsuite/tests/rts/T13082/Makefile - testsuite/tests/rts/T13082/T13082_fail.stderr → testsuite/tests/rts/T13082/T13082_fail.stdout - + testsuite/tests/rts/TestProddableBlockSet.c - testsuite/tests/rts/all.T - testsuite/tests/rts/linker/Makefile - + testsuite/tests/rts/linker/T25191.hs - + testsuite/tests/rts/linker/T25191.stdout - + testsuite/tests/rts/linker/T25191_foo1.c - + testsuite/tests/rts/linker/T25191_foo2.c - testsuite/tests/rts/linker/all.T - + testsuite/tests/simplCore/should_compile/T21391.stderr - + testsuite/tests/simplCore/should_compile/T25197.hs - + testsuite/tests/simplCore/should_compile/T25197.stderr - + testsuite/tests/simplCore/should_compile/T25197_TH.hs - testsuite/tests/simplCore/should_compile/all.T - + testsuite/tests/simplCore/should_fail/T25672.hs - + testsuite/tests/simplCore/should_fail/T25672.stderr - testsuite/tests/simplCore/should_fail/all.T - + testsuite/tests/typecheck/should_compile/T25960.hs - testsuite/tests/typecheck/should_compile/all.T - + testsuite/tests/typecheck/should_fail/T25004.hs - + testsuite/tests/typecheck/should_fail/T25004.stderr - + testsuite/tests/typecheck/should_fail/T25004k.hs - + testsuite/tests/typecheck/should_fail/T25004k.stderr - testsuite/tests/typecheck/should_fail/all.T - + testsuite/tests/typecheck/should_run/T25529.hs - + testsuite/tests/typecheck/should_run/T25529.stdout - + testsuite/tests/typecheck/should_run/T25998.hs - + testsuite/tests/typecheck/should_run/T25998.stdout - testsuite/tests/typecheck/should_run/all.T - utils/ghc-toolchain/src/GHC/Toolchain/Tools/Link.hs - utils/haddock - utils/hp2ps/Utilities.c The diff was not included because it is too large. View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/e761967a628f1a031dfdfec87d8f040... -- View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/e761967a628f1a031dfdfec87d8f040... You're receiving this email because of your account on gitlab.haskell.org.
participants (1)
-
Zubin (@wz1000)