Skip to content
Snippets Groups Projects
  1. May 22, 2024
  2. May 20, 2024
  3. May 19, 2024
  4. May 18, 2024
  5. May 17, 2024
    • Ben Gamari's avatar
      43274677
    • Hécate Moonlight's avatar
      Add haddock to the whitespace lint ignore list · 527bfbfb
      Hécate Moonlight authored and Ben Gamari's avatar Ben Gamari committed
      527bfbfb
    • Hécate Moonlight's avatar
      Add exceptions to the dangling notes list · aba1d304
      Hécate Moonlight authored and Ben Gamari's avatar Ben Gamari committed
      aba1d304
    • Ben Gamari's avatar
      Add 'utils/haddock/' from commit 'a7dcf13b' · 0ea6017b
      Ben Gamari authored
      git-subtree-dir: utils/haddock
      git-subtree-mainline: 7eb9f184
      git-subtree-split: a7dcf13b
      0ea6017b
    • Ben Gamari's avatar
      Reformat with fourmolu · a7dcf13b
      Ben Gamari authored
      Using previously-added configuration and `fourmolu -i .`
      Note that we exclude the test-cases
      (`./{hoogle,html-hypsrc,latex}-test`) as they are sensitive to
      formatting.
      a7dcf13b
    • Ben Gamari's avatar
      Makefile: Rework for use by haddock developers · 151b1736
      Ben Gamari authored
      Previously the Makefile was present only for GHC's old make-based build
      system. Now since the make-based build system is gone we can use it for
      more useful ends.
      151b1736
    • Ben Gamari's avatar
      fourmolu: Add configuration · 074e7d8f
      Ben Gamari authored
      074e7d8f
    • Ben Gamari's avatar
      ghc-tags.yaml: Initial commit · b9721206
      Ben Gamari authored
      b9721206
    • Hannes Siebenhandl's avatar
      Add IfaceType deduplication table to interface file serialisation · 6cc6681d
      Hannes Siebenhandl authored and Ben Gamari's avatar Ben Gamari committed
      Although we do not really need it in the interface file serialisation,
      as the deserialisation uses `getWithUserData`, we need to mirror the
      structure `getWithUserData` expects. Thus, we write essentially an empty
      `IfaceType` table at the end of the file, as the interface file doesn't
      reference `IfaceType`.
      
      (cherry picked from commit c9bc29c6a708483d2abc3d8ec9262510ce87ca61)
      6cc6681d
    • Hannes Siebenhandl's avatar
      Adapt to `IfLclName` newtype changes · 47b14dcc
      Hannes Siebenhandl authored and Ben Gamari's avatar Ben Gamari committed
      (cherry picked from commit a711607e29b925f3d69e27c5fde4ba655c711ff1)
      47b14dcc
    • Ben Gamari's avatar
      Remove haddock submodule · 7eb9f184
      Ben Gamari authored
      In preparation for merge into the GHC, as proposed in #23178.
      7eb9f184
    • Andreas Klebinger's avatar
      TagAnalysis: Treat all bottom ids as tagged during analysis. · 0962b50d
      Andreas Klebinger authored and Marge Bot's avatar Marge Bot committed
      Ticket #24806 showed that we also need to treat dead end thunks as
      tagged during the analysis.
      0962b50d
    • jeffrey young's avatar
      testsuite: make find_so regex less general · 04179044
      jeffrey young authored and Marge Bot's avatar Marge Bot committed
      Closes #24759
      
      Background. In MR !12372 we began tracking shared object files and
      directories sizes for dependencies. However, this broke  release builds
      because release builds alter the filenames swapping "in-place" for a
      hash. This was not considered in the MR and thus broke release
      pipelines. Furthermore, the rts_so test was found to be wildly varying
      and was therefore disabled in !12561.
      
      This commit fixes both of these issues:
      
      - fix the rts_so test by making the regex less general, now the rts_so
      test and all other foo.so tests must match
      "libHS<some-lib>-<version>-<hash|'in-place>-<ghc>". This prevents the
      rts_so test from accidentally matching different rts variants such as
      rts_threaded, which was the cause of the wild swings after !12372.
      
      - add logic to match either a hash or the string in-place. This should
      make the find_so function build agnostic.
      04179044
    • Andreas Klebinger's avatar
      Ensure `tcHasFixedRuntimeRep (# #)` returns True. · 8927e0c3
      Andreas Klebinger authored and Marge Bot's avatar Marge Bot committed
      8927e0c3
    • Rodrigo Mesquita's avatar
      configure: Check C99-compat for Cmm preprocessor · 28b9cee0
      Rodrigo Mesquita authored and Marge Bot's avatar Marge Bot committed
      Fixes #24815
      28b9cee0
    • Cheng Shao's avatar
      rts: fix I/O manager compilation errors for win32 target · 710665bd
      Cheng Shao authored and Marge Bot's avatar Marge Bot committed
      This patch fixes I/O manager compilation errors for win32 target
      discovered when cross-compiling to win32 using recent clang:
      
      ```
      rts/win32/ThrIOManager.c:117:7: error:
           error: call to undeclared function 'is_io_mng_native_p'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
            117 |   if (is_io_mng_native_p ()) {
                |       ^
          |
      117 |   if (is_io_mng_native_p ()) {
          |       ^
      
      1 error generated.
      `x86_64-w64-mingw32-clang' failed in phase `C Compiler'. (Exit code: 1)
      
      rts/fs.c:143:28: error:
           error: a function declaration without a prototype is deprecated in all versions of C [-Werror,-Wstrict-prototypes]
            143 | int setErrNoFromWin32Error () {
                |                            ^
                |                             void
          |
      143 | int setErrNoFromWin32Error () {
          |                            ^
      
      1 error generated.
      `x86_64-w64-mingw32-clang' failed in phase `C Compiler'. (Exit code: 1)
      
      rts/win32/ConsoleHandler.c:227:9: error:
           error: call to undeclared function 'interruptIOManagerEvent'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
            227 |         interruptIOManagerEvent ();
                |         ^
          |
      227 |         interruptIOManagerEvent ();
          |         ^
      
      rts/win32/ConsoleHandler.c:227:9: error:
           note: did you mean 'getIOManagerEvent'?
          |
      227 |         interruptIOManagerEvent ();
          |         ^
      
      rts/include/rts/IOInterface.h:27:10: error:
           note: 'getIOManagerEvent' declared here
             27 | void *   getIOManagerEvent  (void);
                |          ^
         |
      27 | void *   getIOManagerEvent  (void);
         |          ^
      
      1 error generated.
      `x86_64-w64-mingw32-clang' failed in phase `C Compiler'. (Exit code: 1)
      
      rts/win32/ConsoleHandler.c:196:9: error:
           error: call to undeclared function 'setThreadLabel'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
            196 |         setThreadLabel(cap, t, "signal handler thread");
                |         ^
          |
      196 |         setThreadLabel(cap, t, "signal handler thread");
          |         ^
      
      rts/win32/ConsoleHandler.c:196:9: error:
           note: did you mean 'postThreadLabel'?
          |
      196 |         setThreadLabel(cap, t, "signal handler thread");
          |         ^
      
      rts/eventlog/EventLog.h:118:6: error:
           note: 'postThreadLabel' declared here
            118 | void postThreadLabel(Capability    *cap,
                |      ^
          |
      118 | void postThreadLabel(Capability    *cap,
          |      ^
      
      1 error generated.
      `x86_64-w64-mingw32-clang' failed in phase `C Compiler'. (Exit code: 1)
      ```
      710665bd
    • Teo Camarasu's avatar
      rts: Allocate non-moving segments with megablocks · b38dcf39
      Teo Camarasu authored and Marge Bot's avatar Marge Bot committed
      Non-moving segments are 8 blocks long and need to be aligned.
      Previously we serviced allocations by grabbing 15 blocks, finding
      an aligned 8 block group in it and returning the rest.
      This proved to lead to high levels of fragmentation as a de-allocating a segment
      caused an 8 block gap to form, and this could not be reused for allocation.
      
      This patch introduces a segment allocator based around using entire
      megablocks to service segment allocations in bulk.
      
      When there are no free segments, we grab an entire megablock and fill it
      with aligned segments. As the megablock is free, we can easily guarantee
      alignment. Any unused segments are placed on a free list.
      
      It only makes sense to free segments in bulk when all of the segments in
      a megablock are freeable. After sweeping, we grab the free list, sort it,
      and find all groups of segments where they cover the megablock and free
      them.
      This introduces a period of time when free segments are not available to
      the mutator, but the risk that this would lead to excessive allocation
      is low. Right after sweep, we should have an abundance of partially full
      segments, and this pruning step is relatively quick.
      
      In implementing this we drop the logic that kept NONMOVING_MAX_FREE
      segments on the free list.
      
      We also introduce an eventlog event to log the amount of pruned/retained
      free segments.
      
      See Note [Segment allocation strategy]
      
      Resolves #24150
      
      -------------------------
      Metric Decrease:
          T13253
          T19695
      -------------------------
      b38dcf39
Loading