[Git][ghc/ghc][master] Hadrian: deprecate --bignum and automatically enable +native_bignum for JS
Marge Bot pushed to branch master at Glasgow Haskell Compiler / GHC Commits: c8238375 by Sylvain Henry at 2026-03-06T06:34:23-05:00 Hadrian: deprecate --bignum and automatically enable +native_bignum for JS Deprecate --bignum=... to select the bignum backend. It's only used to select the native backend, and this can be done with the +native_bignum flavour transformer. Additionally, we automatically enable +native_bignum for the JS target because the GMP backend isn't supported. - - - - - 4 changed files: - hadrian/README.md - hadrian/src/CommandLine.hs - hadrian/src/Main.hs - hadrian/src/Settings.hs Changes: ===================================== hadrian/README.md ===================================== @@ -101,7 +101,9 @@ Stage2 GHC. * `--skip-depends`: skips rebuilding Haskell module dependency files. -* `--bignum={native,gmp,check-gmp,ffi}`: choose which bignum implementation to use. The default is `gmp`. +* `--bignum={native,gmp,check-gmp,ffi}`: **Deprecated.** Use the `+native_bignum` flavour + transformer instead (e.g. `--flavour=default+native_bignum`). When building for the + JavaScript target, the native bignum backend is enabled automatically. * `--color` and `--no-color`: choose whether to use colors when printing build progress info. By default, Hadrian tries to determine if the terminal supports ===================================== hadrian/src/CommandLine.hs ===================================== @@ -1,5 +1,6 @@ module CommandLine ( optDescrs, cmdLineArgsMap, cmdFlavour, lookupFreeze1, lookupFreeze2, lookupSkipDepends, + lookupBignum, cmdBignum, cmdBignumCheck, cmdProgressInfo, cmdCompleteSetting, cmdDocsArgs, cmdUnitIdHash, lookupBuildRoot, TestArgs(..), TestSpeed(..), defaultTestArgs, cmdPrefix, DocArgs(..), defaultDocArgs @@ -389,6 +390,9 @@ lookupFreeze2 = freeze2 . lookupExtra defaultCommandLineArgs lookupSkipDepends :: Map.HashMap TypeRep Dynamic -> Bool lookupSkipDepends = skipDepends . lookupExtra defaultCommandLineArgs +lookupBignum :: Map.HashMap TypeRep Dynamic -> Maybe String +lookupBignum = bignum . lookupExtra defaultCommandLineArgs + cmdUnitIdHash :: Action Bool cmdUnitIdHash = unitIdHash <$> cmdLineArgs ===================================== hadrian/src/Main.hs ===================================== @@ -34,6 +34,13 @@ main = do -- Provide access to command line arguments and some user settings through -- Shake's type-indexed map 'shakeExtra'. argsMap <- CommandLine.cmdLineArgsMap + case CommandLine.lookupBignum argsMap of + Just _ -> hPutStrLn stderr $ unlines + [ "Warning: --bignum is deprecated." + , " Use the '+native_bignum' flavour transformer instead (e.g. --flavour=default+native_bignum)." + , " When building for the JavaScript target, native bignum is now enabled automatically." + ] + Nothing -> return () let extra = insertExtra UserSettings.buildProgressColour $ insertExtra UserSettings.successColour $ argsMap ===================================== hadrian/src/Settings.hs ===================================== @@ -30,6 +30,7 @@ import Settings.Flavours.Release import Hadrian.Oracles.TextFile import GHC.Toolchain.Target import GHC.Platform.ArchOS +import Oracles.Setting (isJsTarget) getExtraArgs :: Args getExtraArgs = expr flavour >>= extraArgs @@ -44,9 +45,7 @@ getRtsWays :: Ways getRtsWays = expr flavour >>= rtsWays getBignumBackend :: Expr String -getBignumBackend = expr $ cmdBignum >>= \case - Nothing -> bignumBackend <$> flavour - Just b -> pure b +getBignumBackend = bignumBackend <$> expr flavour getBignumCheck :: Expr Bool getBignumCheck = expr $ cmdBignum >>= \case @@ -90,9 +89,17 @@ flavour = do $ "failed to apply key-value settings:\n\t" ++ unlines (map (" - " ++) settingErrs) ++ "\t Entries should look something like \"stage1.containers.ghc.hs.opts += -Werror\"" + -- Handle --bignum (deprecated) and JS auto-detection + bignumTweak <- cmdBignum >>= \case + Just "native" -> return useNativeBignum + Just b -> return $ \f -> f { bignumBackend = b } + Nothing -> do + js <- isJsTarget + return $ if js then useNativeBignum else id + case parseFlavour flavours flavourTransformers flavourName of Left err -> fail err - Right f -> return $ flagsTweak (tweak f) + Right f -> return $ bignumTweak (flagsTweak (tweak f)) -- TODO: switch to Set Package as the order of packages should not matter? -- Otherwise we have to keep remembering to sort packages from time to time. View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/c8238375562a6c003b62dcccd452ed32... -- View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/c8238375562a6c003b62dcccd452ed32... You're receiving this email because of your account on gitlab.haskell.org.
participants (1)
-
Marge Bot (@marge-bot)