Marge Bot pushed to branch master at Glasgow Haskell Compiler / GHC Commits: b3ddee95 by Andreas Klebinger at 2026-08-28T13:57:46-04:00 hadrian: Deprecate quickest flavour. It was more of a trap for new users than actually beneficial so we deprecate it and suggest quick+no_dynamic_libs to users instead. - - - - - 11 changed files: - hadrian/README.md - hadrian/doc/cross-compile.md - hadrian/doc/flavours.md - hadrian/doc/make.md - hadrian/doc/windows.md - hadrian/hadrian.cabal - hadrian/src/CommandLine.hs - hadrian/src/Flavour.hs - hadrian/src/Settings.hs - − hadrian/src/Settings/Flavours/Quickest.hs - utils/ghc-toolchain/src/GHC/Toolchain/Target.hs Changes: ===================================== hadrian/README.md ===================================== @@ -55,10 +55,9 @@ changes. Build results are placed into `_build` by default. There are many different ways to build a compiler, each way is called a flavour. * `--flavour=FLAVOUR`: choose a build flavour. The following settings are -currently supported: `default`, `quick`, `quickest`, `perf`, `prof`, `devel1` -and `devel2`. As an example, the `quickest` flavour adds `-O0` flag to all GHC -invocations and builds libraries only in the `vanilla` way, which speeds up -builds by 3-4x. +currently supported: `default`, `quick`, `perf`, `prof`, `devel1` +and `devel2`. As an example, the `quick` flavour builds the GHC binary with `-O0` +which speeds up builds and rebuilds significantly. In addition to the overall build flavour there are also "flavour transformers" which can slightly modify the build settings for a flavour. Some common flavour ===================================== hadrian/doc/cross-compile.md ===================================== @@ -16,7 +16,7 @@ After all the dependencies are in place: - `git submodule update --init` - `./configure --target=arm-linux-gnueabihf` - `cd hadrian` -- Build the compiler by e.g. `./build.sh --flavour=quickest --integer-simple -V -j` +- Build the compiler by e.g. `./build.sh --flavour=quick --integer-simple -V -j` After that, you should have built `inplace/bin/ghc-stage1` cross compiler. We will go to the next section to validate this. ===================================== hadrian/doc/flavours.md ===================================== @@ -82,18 +82,6 @@ when compiling the `compiler` library, and `hsGhc` when compiling/linking the GH <td>-O</td> <td>-debug (link)</td> </tr> - <tr> - <th>quickest</td> - <td></td> - <td>-O0<br>+RTS<br>-O64M<br>-RTS</td> - <td>-O0<br>+RTS<br>-O64M<br>-RTS</td> - <td></td> - <td></td> - <td>-O</td> - <td></td> - <td>-O</td> - <td></td> - </tr> <tr> <th>perf</td> <td> Yes (on supported platforms) </td> @@ -367,11 +355,4 @@ information. The following table lists ways that are built in different flavours <td>debug<br>threaded<br>threadedDebug<br>debugDynamic<br>threadedDynamic<br>threadedDebugDynamic</td> <td>debug<br>threaded<br>threadedDebug<br>debugDynamic<br>threadedDynamic<br>threadedDebugDynamic</td> </tr> -<tr> - <th>quickest</th> - <td>vanilla</td> - <td>vanilla</td> - <td>vanilla<br>threaded</td> - <td>vanilla<br>threaded</td> -</tr> </table> ===================================== hadrian/doc/make.md ===================================== @@ -80,15 +80,15 @@ time you fire up a build. This is not possible with the Make build system. build _build/stage1/lib/package.conf.d/text-1.2.3.0.conf # OR actual path ``` -- Building with a particular flavour (e.g `quickest`) +- Building with a particular flavour (e.g `quick`) ``` sh # Make - echo "BuildFlavour=quickest" >> mk/build.mk + echo "BuildFlavour=quick" >> mk/build.mk make # Hadrian - build --flavour=quickest + build --flavour=quick ``` See [flavours documentation](https://gitlab.haskell.org/ghc/ghc/blob/master/hadrian/doc/flavours.md) for info on flavours. ===================================== hadrian/doc/windows.md ===================================== @@ -20,7 +20,7 @@ stack exec -- pacman -S autoconf automake-wrapper make patch python tar --noconf stack build # Build GHC -stack exec hadrian -- --directory ".." -j --flavour=quickest +stack exec hadrian -- --directory ".." -j --flavour=quick # Test GHC cd .. @@ -28,7 +28,7 @@ _build\stage1\bin\ghc -e 1+2 ``` The entire process should take about 20 minutes. Note, this will build GHC -without optimisations. If you need an optimised GHC, drop the `--flavour=quickest` +without optimisations. If you need an optimised GHC, drop the `--flavour=quick` flag from the build command line (this will slow down the build to about an hour). These are currently not the @@ -37,7 +37,7 @@ but are much simpler and may also be more robust. The `stack build` and `stack exec hadrian` commands can be replaced by an invocation of Hadrian's Stack-based build script: -`build-stack.bat -j --flavour=quickest`. Use this script if you plan to work on +`build-stack.bat -j --flavour=quick`. Use this script if you plan to work on Hadrian and/or rebuild GHC often. ## Prerequisites ===================================== hadrian/hadrian.cabal ===================================== @@ -125,7 +125,6 @@ executable hadrian , Settings.Flavours.Performance , Settings.Flavours.Quick , Settings.Flavours.QuickCross - , Settings.Flavours.Quickest , Settings.Flavours.Validate , Settings.Flavours.Release , Settings.Packages ===================================== hadrian/src/CommandLine.hs ===================================== @@ -281,7 +281,7 @@ optDescrs = , Option ['o'] ["build-root"] (ReqArg readBuildRoot "BUILD_ROOT") "Where to store build artifacts. (Default _build)." , Option [] ["flavour"] (OptArg readFlavour "FLAVOUR") - "Build flavour (Default, Devel1, Devel2, Perf, Prof, Quick or Quickest)." + "Build flavour (Default, Devel1, Devel2, Perf, Prof or Quick)." , Option [] ["freeze1"] (NoArg readFreeze1) "Freeze Stage1 GHC." , Option [] ["freeze2"] (NoArg readFreeze2) ===================================== hadrian/src/Flavour.hs ===================================== @@ -531,7 +531,7 @@ It now also offers a more "old-school" interface, in the form of @foo.bar.baz = v@ or @foo.bar.baz += v@ expressions, that one can pass on the command line that invokes hadrian: -> $ hadrian/build --flavour=quickest -j "stage1.ghc-bin.ghc.link.opts += -v3" +> $ hadrian/build --flavour=quick -j "stage1.ghc-bin.ghc.link.opts += -v3" or in a file at <build root>/hadrian.settings, where <build root> is the build root to be used for the build, which is _build by default. ===================================== hadrian/src/Settings.hs ===================================== @@ -19,7 +19,6 @@ import Settings.Flavours.Development import Settings.Flavours.GhcInGhci import Settings.Flavours.Performance import Settings.Flavours.Quick -import Settings.Flavours.Quickest import Settings.Flavours.QuickCross import Settings.Flavours.Validate import Settings.Flavours.Release @@ -55,7 +54,6 @@ hadrianFlavours = , developmentFlavour Stage2, performanceFlavour , releaseFlavour , quickFlavour, quickValidateFlavour, quickDebugFlavour - , quickestFlavour , quickCrossFlavour , ghcInGhciFlavour, validateFlavour, slowValidateFlavour ] @@ -69,6 +67,10 @@ hadrianFlavours = flavour :: Action Flavour flavour = do flavourName <- fromMaybe userDefaultFlavour <$> cmdFlavour + when ("quickest" `isPrefixOf` flavourName) $ + fail $ "The `quickest` flavour has been deprecated. Use `quick` instead.\n" + ++ "Skip building dynamic libraries with `quick+no_dynamic_libs`\n" + ++ "to get closer to the old quickest behaviour." kvs <- userSetting ([] :: [KeyVal]) let flavours = hadrianFlavours ++ userFlavours (settingErrs, tweak) = applySettings kvs ===================================== hadrian/src/Settings/Flavours/Quickest.hs deleted ===================================== @@ -1,21 +0,0 @@ -module Settings.Flavours.Quickest (quickestFlavour) where - -import Expression -import Flavour -import {-# SOURCE #-} Settings.Default - --- Please update doc/flavours.md when changing this file. -quickestFlavour :: Flavour -quickestFlavour = disableDynamicLibs $ disableProfiledLibs $ defaultFlavour - { name = "quickest" - , extraArgs = quickestArgs - } - -quickestArgs :: Args -quickestArgs = sourceArgs SourceArgs - { hsDefault = mconcat $ - [ pure ["-O0", "+RTS", "-O64M", "-RTS"] - ] - , hsLibrary = mempty - , hsCompiler = stage0 ? arg "-O" - , hsGhc = stage0 ? arg "-O" } ===================================== utils/ghc-toolchain/src/GHC/Toolchain/Target.hs ===================================== @@ -199,7 +199,7 @@ tgtSupportsSMP Target{..} = do -- 5. The testsuite driver will use dyn way for TH/ghci tests even -- when host GHC is static. -- 6. TH/ghci doesn't work if stage1 is built without shared libraries --- (e.g. quickest/fully_static). +-- (e.g. no_dynamic_libs/fully_static). tgtRTSLinkerOnlySupportsSharedLibs :: Target -> Bool tgtRTSLinkerOnlySupportsSharedLibs Target{tgtArchOs} = archOS_arch tgtArchOs `elem` View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/b3ddee95feaf827e67f08ba327f0c742... -- View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/b3ddee95feaf827e67f08ba327f0c742... You're receiving this email because of your account on gitlab.haskell.org. Manage all notifications: https://gitlab.haskell.org/-/profile/notifications | Help: https://gitlab.haskell.org/help