[Git][ghc/ghc][wip/t21766] 23 commits: Add `Data.Functor.unzip`

Finley McIlwaine (@FinleyMcIlwaine) gitlab at gitlab.haskell.org
Wed Mar 8 16:56:46 UTC 2023



Finley McIlwaine pushed to branch wip/t21766 at Glasgow Haskell Compiler / GHC


Commits:
fa559c28 by Ollie Charles at 2023-03-07T20:56:21+00:00
Add `Data.Functor.unzip`

This function is currently present in `Data.List.NonEmpty`, but `Data.Functor`
is a better home for it. This change was discussed and approved by the CLC
at https://github.com/haskell/core-libraries-committee/issues/88.

- - - - -
2aa07708 by MorrowM at 2023-03-07T21:22:22-05:00
Fix documentation for traceWith and friends

- - - - -
f3ff7cb1 by David Binder at 2023-03-08T01:24:17-05:00
Remove utils/hpc subdirectory and its contents

- - - - -
cf98e286 by David Binder at 2023-03-08T01:24:17-05:00
Add git submodule for utils/hpc

- - - - -
605fbbb2 by David Binder at 2023-03-08T01:24:18-05:00
Update commit for utils/hpc git submodule

- - - - -
606793d4 by David Binder at 2023-03-08T01:24:18-05:00
Update commit for utils/hpc git submodule

- - - - -
4158722a by Sylvain Henry at 2023-03-08T01:24:58-05:00
linker: fix linking with aligned sections (#23066)

Take section alignment into account instead of assuming 16 bytes (which
is wrong when the section requires 32 bytes, cf #23066).

- - - - -
1e0d8fdb by Greg Steuck at 2023-03-08T08:59:05-05:00
Change hostSupportsRPaths to report False on OpenBSD

OpenBSD does support -rpath but ghc build process relies on some
related features that don't work there. See ghc/ghc#23011

- - - - -
bed3a292 by Alexis King at 2023-03-08T08:59:53-05:00
bytecode: Fix bitmaps for BCOs used to tag tuples and prim call args

fixes #23068

- - - - -
01b5968d by Finley McIlwaine at 2023-03-08T09:50:42-07:00
Restructure IPE buffer layout

Reference ticket #21766

This commit restructures IPE buffer list entries to not contain
references to their corresponding info tables. IPE buffer list nodes now
point to two lists of equal length, one holding the list of info table
pointers and one holding the corresponding entries for each info table.
This will allow the entry data to be compressed without losing the
references to the info tables.

- - - - -
6636b1c0 by Finley McIlwaine at 2023-03-08T09:50:42-07:00
Add IPE compression to configure

Reference ticket #21766

Adds an `--enable-ipe-data-compreesion` flag to the configure script
which will check for libzstd and set the appropriate flags to allow for
IPE data compression in the compiler

- - - - -
88043af8 by Finley McIlwaine at 2023-03-08T09:50:42-07:00
IPE data compression

Reference ticket #21766

When IPE data compression is enabled, compress the emitted IPE buffer
entries and decompress them in the RTS.

- - - - -
5d784ecc by Finley McIlwaine at 2023-03-08T09:50:42-07:00
Fix libzstd detection in configure and RTS

Ensure that `HAVE_LIBZSTD` gets defined to either 0 or 1 in all cases
and properly check that before IPE data decompression in the RTS. See
ticket #21766.

- - - - -
da430b63 by Finley McIlwaine at 2023-03-08T09:50:42-07:00
Add note describing IPE data compression

See ticket #21766

- - - - -
0bc041dd by Finley McIlwaine at 2023-03-08T09:50:42-07:00
Fix byte order of IPE data, fix IPE tests

Make sure byte order of written IPE buffer entries matches target.

Make sure the IPE-related tests properly access the fields of IPE buffer
entry nodes with the new IPE layout.

This commit also introduces checks to avoid importing modules if IPE
compression is not enabled.

See ticket #21766.

- - - - -
1a88bd41 by Finley McIlwaine at 2023-03-08T09:50:42-07:00
Fix IPE data decompression buffer allocation

Capacity of buffers allocated for decompressed IPE data was
incorrect due to a misuse of the `ZSTD_findFrameCompressedSize`
function. Fix by always storing decompressed size of IPE data in IPE
buffer list nodes and using `ZSTD_findFrameCompressedSize` to determine
the size of the compressed data.

See ticket #21766

- - - - -
158f7168 by Finley McIlwaine at 2023-03-08T09:50:42-07:00
Add optional dependencies to ./configure output

Changes the configure script to indicate whether libnuma, libzstd, or
libdw are being used as dependencies due to their optional features
being enabled.

- - - - -
d8f35c53 by Finley McIlwaine at 2023-03-08T09:50:42-07:00
Add IPE-enabled builds to CI

- Adds an IPE job to the CI pipeline which is triggered by the ~IPE label
- Introduces CI logic to enable IPE data compression
- Enables uncompressed IPE data on debug CI job
- Regenerates jobs.yaml

MR https://gitlab.haskell.org/ghc/ci-images/-/merge_requests/112 on the
images repository is meant to ensure that the proper images have
libzstd-dev installed.

- - - - -
528bb8dd by Finley McIlwaine at 2023-03-08T09:50:42-07:00
Update user's guide and release notes

Add mention of IPE data compression to user's guide and the release
notes for 9.8.1. Also note the impact compression has on binary size in
both places.

See ticket #21766

- - - - -
6bdab8c8 by Finley McIlwaine at 2023-03-08T09:50:42-07:00
Fix multiline string in `IPE.c`

- - - - -
7ba01a5a by Finley McIlwaine at 2023-03-08T09:50:42-07:00
Optional static linking of libzstd

Allow for libzstd to be statically linked with a
`--enable-static-libzstd` configure flag. Not supported on darwin due to
incompatibility with `:x.a` linker flags.

- - - - -
d96ce5a4 by Finley McIlwaine at 2023-03-08T09:50:42-07:00
Detect darwin for `--enable-static-libzstd`

Update users guide to note the optional static linking of libzstd, and
update ci-images rev to get libzstd in debian images on CI

- - - - -
4a809594 by Finley McIlwaine at 2023-03-08T09:56:12-07:00
Revert `+ipe` enabled CI jobs for ~IPE label

- - - - -


30 changed files:

- .gitlab-ci.yml
- .gitlab/gen_ci.hs
- .gitlab/jobs.yaml
- .gitmodules
- compiler/GHC/ByteCode/Instr.hs
- compiler/GHC/StgToByteCode.hs
- compiler/GHC/StgToCmm/InfoTableProv.hs
- compiler/ghc.cabal.in
- configure.ac
- docs/users_guide/9.8.1-notes.rst
- docs/users_guide/debug-info.rst
- hadrian/cfg/system.config.in
- hadrian/src/Oracles/Flag.hs
- hadrian/src/Oracles/Setting.hs
- hadrian/src/Rules/Generate.hs
- hadrian/src/Settings/Packages.hs
- libraries/base/Data/Functor.hs
- libraries/base/Debug/Trace.hs
- libraries/base/changelog.md
- m4/fp_find_libnuma.m4
- + m4/fp_find_libzstd.m4
- rts/IPE.c
- rts/IPE.h
- rts/include/rts/IPE.h
- rts/linker/Elf.c
- rts/rts.cabal.in
- + testsuite/tests/bytecode/T23068.hs
- + testsuite/tests/bytecode/T23068.script
- + testsuite/tests/bytecode/T23068.stdout
- + testsuite/tests/bytecode/all.T


The diff was not included because it is too large.


View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/0232df2f562260fa1b025fa1df91b03f5cc1bd40...4a8095948fdfb562f6802869a506eb4cd572ab43

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/0232df2f562260fa1b025fa1df91b03f5cc1bd40...4a8095948fdfb562f6802869a506eb4cd572ab43
You're receiving this email because of your account on gitlab.haskell.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-commits/attachments/20230308/54e62080/attachment-0001.html>


More information about the ghc-commits mailing list