[Git][ghc/ghc][wip/t21766] Update user's guide and release notes, small fixes

Finley McIlwaine (@FinleyMcIlwaine) gitlab at gitlab.haskell.org
Fri May 26 02:47:03 UTC 2023



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


Commits:
afd7c274 by Finley McIlwaine at 2023-05-25T20:44:25-06:00
Update user's guide and release notes, small fixes

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.

Change IpeBufferListNode compression check so only the value `1`
indicates compression.

See ticket #21766

- - - - -


6 changed files:

- .gitlab/gen_ci.hs
- .gitlab/jobs.yaml
- compiler/GHC/StgToCmm/InfoTableProv.hs
- docs/users_guide/9.8.1-notes.rst
- docs/users_guide/debug-info.rst
- rts/IPE.c


Changes:

=====================================
.gitlab/gen_ci.hs
=====================================
@@ -233,10 +233,6 @@ debug = vanilla { buildFlavour = SlowValidate
                 , withAssertions = True
                 -- WithNuma so at least one job tests Numa
                 , withNuma = True
-
-                -- Build with IPE in debug so at least one job tests
-                -- uncompressed IPE data
-                , withIpe = True
                 }
 
 ipe :: BuildConfig


=====================================
.gitlab/jobs.yaml
=====================================
@@ -1091,7 +1091,7 @@
       "XZ_OPT": "-9"
     }
   },
-  "nightly-x86_64-linux-deb10-numa-slow-validate+ipe": {
+  "nightly-x86_64-linux-deb10-numa-slow-validate": {
     "after_script": [
       ".gitlab/ci.sh save_cache",
       ".gitlab/ci.sh clean",
@@ -1101,7 +1101,7 @@
     "artifacts": {
       "expire_in": "8 weeks",
       "paths": [
-        "ghc-x86_64-linux-deb10-numa-slow-validate+ipe.tar.xz",
+        "ghc-x86_64-linux-deb10-numa-slow-validate.tar.xz",
         "junit.xml"
       ],
       "reports": {
@@ -1143,11 +1143,11 @@
     ],
     "variables": {
       "BIGNUM_BACKEND": "gmp",
-      "BIN_DIST_NAME": "ghc-x86_64-linux-deb10-numa-slow-validate+ipe",
-      "BUILD_FLAVOUR": "slow-validate+ipe",
+      "BIN_DIST_NAME": "ghc-x86_64-linux-deb10-numa-slow-validate",
+      "BUILD_FLAVOUR": "slow-validate",
       "CONFIGURE_ARGS": "",
       "ENABLE_NUMA": "1",
-      "TEST_ENV": "x86_64-linux-deb10-numa-slow-validate+ipe",
+      "TEST_ENV": "x86_64-linux-deb10-numa-slow-validate",
       "XZ_OPT": "-9"
     }
   },
@@ -4072,7 +4072,7 @@
       "TEST_ENV": "x86_64-linux-deb10-no_tntc-validate"
     }
   },
-  "x86_64-linux-deb10-numa-slow-validate+ipe": {
+  "x86_64-linux-deb10-numa-slow-validate": {
     "after_script": [
       ".gitlab/ci.sh save_cache",
       ".gitlab/ci.sh clean",
@@ -4082,7 +4082,7 @@
     "artifacts": {
       "expire_in": "2 weeks",
       "paths": [
-        "ghc-x86_64-linux-deb10-numa-slow-validate+ipe.tar.xz",
+        "ghc-x86_64-linux-deb10-numa-slow-validate.tar.xz",
         "junit.xml"
       ],
       "reports": {
@@ -4124,11 +4124,11 @@
     ],
     "variables": {
       "BIGNUM_BACKEND": "gmp",
-      "BIN_DIST_NAME": "ghc-x86_64-linux-deb10-numa-slow-validate+ipe",
-      "BUILD_FLAVOUR": "slow-validate+ipe",
+      "BIN_DIST_NAME": "ghc-x86_64-linux-deb10-numa-slow-validate",
+      "BUILD_FLAVOUR": "slow-validate",
       "CONFIGURE_ARGS": "",
       "ENABLE_NUMA": "1",
-      "TEST_ENV": "x86_64-linux-deb10-numa-slow-validate+ipe"
+      "TEST_ENV": "x86_64-linux-deb10-numa-slow-validate"
     }
   },
   "x86_64-linux-deb10-unreg-validate": {


=====================================
compiler/GHC/StgToCmm/InfoTableProv.hs
=====================================
@@ -10,13 +10,11 @@ import qualified Data.ByteString.Internal as BSI
 import GHC.IO (unsafePerformIO)
 #endif
 
-import GHC.Data.FastString (fastStringToShortText)
 import GHC.Prelude
 import GHC.Platform
 import GHC.Types.SrcLoc (pprUserRealSpan, srcSpanFile)
 import GHC.Unit.Module
 import GHC.Utils.Outputable
-import GHC.Types.SrcLoc (pprUserRealSpan, srcSpanFile)
 import GHC.Data.FastString (fastStringToShortText, unpackFS, LexicalFastString(..))
 
 import GHC.Cmm


=====================================
docs/users_guide/9.8.1-notes.rst
=====================================
@@ -119,6 +119,17 @@ Compiler
 
   GHC used to accept the contradictory ``Int~Bool`` in the type signature, but reject the ``Int~Bool`` constraint that arises from typechecking the definition itself.  Now it accepts both.  More details in `GHC ticket #23413 <https://gitlab.haskell.org/ghc/ghc/-/issues/23413>`_, which gives examples of the previous inconsistency.  GHC now implements the "PermissivePlan" described in that ticket.
 
+- The compiler may now be configured to compress the debugging information
+  included in :ghc-flag:`-finfo-table-map` enabled binaries. To do so, one must
+  build GHC from source (see
+  `here<https://gitlab.haskell.org/ghc/ghc/-/wikis/building>` for directions)
+  and supply the ``--enable-ipe-data-compression`` flag to the ``configure``
+  script. **Note**: This feature requires that the machine building GHC has
+  `libzstd <https://github.com/facebook/zstd/>`_ installed.
+
+  In a test compiling GHC itself, the size of the :ghc-flag:`-finfo-table-map`
+  enabled build results was reduced by over 20% when compression was enabled.
+
 GHCi
 ~~~~
 


=====================================
docs/users_guide/debug-info.rst
=====================================
@@ -370,9 +370,23 @@ to a source location. This lookup table is generated by using the ``-finfo-table
     also want more precise information about constructor info tables then you
     should also use :ghc-flag:`-fdistinct-constructor-tables`.
 
-    This flag will increase the binary size by quite a lot, depending on how
-    big your project is. For compiling a project the size of GHC the overhead was
-    about 200 megabytes.
+    The :ghc-flag:`-finfo-table-map` flag will increase the binary size by quite
+    a lot, depending on how big your project is. For compiling a project the
+    size of GHC the overhead was about 200 megabytes.
+
+    :since: 9.8
+
+    If you wish to reduce the size of :ghc-flag:`-finfo-table-map` enabled
+    binaries, consider building GHC from source and supplying the
+    ``--enable-ipe-data-compression`` flag to the ``configure`` script. This
+    will cause GHC to compress the :ghc-flag:`-finfo-table-map` related
+    debugging information included in binaries using the `libzstd
+    <https://github.com/facebook/zstd/>`_ compression library. **Note**: This
+    feature requires that the machine building GHC has
+    `libzstd <https://github.com/facebook/zstd/>`_ installed.
+
+    In a test compiling GHC itself, the size of the :ghc-flag:`-finfo-table-map`
+    enabled build results was reduced by over 20% when compression was enabled.
 
 .. ghc-flag:: -fdistinct-constructor-tables
     :shortdesc: Generate a fresh info table for each usage


=====================================
rts/IPE.c
=====================================
@@ -218,7 +218,7 @@ the decompressed IPE data and string table for the given node, respectively,
 upon return from this function.
 */
 void decompressIPEBufferListNodeIfCompressed(IpeBufferListNode *node, IpeBufferEntry **entries_dst, char **string_table_dst) {
-    if (node->compressed) {
+    if (node->compressed == 1) {
         // The IPE list buffer node indicates that the strings table and
         // entries list has been compressed. If zstd is not available, fail.
         // If zstd is available, decompress.



View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/afd7c274c156ab6bf01d1a3ab0abe2cea7f4f597

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/afd7c274c156ab6bf01d1a3ab0abe2cea7f4f597
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/20230525/2e428cb7/attachment-0001.html>


More information about the ghc-commits mailing list