All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
1.0 2024-09-23
- Support for unit-based hie-bios script for ghc 9.4+ (See #2218)
- Preliminary support for GHC 9.10.x (See #2198)
- Use ghc 9.4.6 by default
- Use Bazel 6.5.0 by default (See #2117)
- Update nixpkgs revision to nixos-24.05, note*: requires rules_nixpkgs version >= 0.12 (See #2217)
- Asterius is deprecated and not tested anymore (See #2182)
- No longer create empty libraries (See #2158)
- Make static linking of haskell_cabal_binary explicit (See #2148)
- Testing GHC 9.2.x on CI
0.19 2024-02-07
- Fix toolchain libraries creation when using
ghcWithPackages(#2098)
- Ghc 9.6.4 (#2108)
- Upgrade
rules_shto0.4.0(#2103)
- Add
darwin_x86_64to theis_darwincheck (https://github.com/tweag/rules_haskell/pull/2109/files)
0.18 2023-12-21
- Use GHC 9.2.8 by default (See #1994)
- Use Bazel 6.4.0 by default (See #2063)
startscript supports bzlmod with bindists (See #2046)- Support Python Windows App aliases (See #2060)
- Error using
snapshottag from stack_snapshot module extension (See #2001) - Build gi-gtk from stackage (See #1752)
- X is not a toolchain library (See #1920)
- GHC versions < 8.10 are no longer supported (see #2093)
- remove
compiler_flagsoption which was deprecated since 0.14 from macros and rules - remove
<name>-replaliases for repl targets introduced in 0.7 - remove deprecated nixpkgs platform aliases introduced in 0.13
0.17 2023-10-19
- Support Bazel's new "bzlmod" dependency system
- Support GHC 9.2.x and 9.4.x
- The minimum supported Bazel version is now 6.0.
- IDE support : Output absolute paths in hie-bios flags (See #1862)
haskell_replnow defines an extra runable targetname@biosthat outputs the hie-bios flags.hie_bios_path_prefixattribute forhaskell_replis a no-op now that we use absolute paths.
build_bazel_rules_nodejsdependency is replaced byrules_jswhich induces some changes to the experimental Asterius support (See [#1884]).- Replace use of
exec_toolswith semantically-identicaltools(see #1925) - GHC 9.2 and 9.4 are supported and tested, older GHC releases only supported on a best effort basis (see #1878)
- Make the flags passed to Stack match Cabal (see #1913)
- Fix include directories passed to hsc2hs (see #1922)
- Add support for Bazel 6
- Add support for bzlmod (see #1864)
- The provided
cc_toolchainused for windows can now be used with--incompatible_enable_cc_toolchain_resolutionso using thecrosstool_topoption is no longer necessary. - Add support for GHC 9.2.5 (see [#1869])
- Add support for GHC 9.4.5 (linux, macOS) and GHC 9.6.1 (see #1890)
- Remove support for Bazel 4
0.16 2022-12-06
- haskell_module: Avoid recompilation when ABI file did not change (see #1771)
- Improved support for aarch64 on Darwin and Linux (see #1825)
- Add support for GHC 9.2.3 (see #1791)
- Add support for GHC 9.2.4 (see #1814)
- Add support for GHC 9.2.5 (see #1831)
- Remove support for bindists of GHC versions 7.10.3, 8.0.2, 8.6.2, 8.6.3, 8.6.4, 8.8.1, 8.8.2, 8.8.3, 8.10.1 and 8.10.2 (see #1790)
- Use node version 16 when compiling with asterius, and update
rules_nodejsdependency to version 5.0.0 (see #1810) - Validate hidden modules (see #1796)
- Use
-pgml-supports-no-piewith GHC >= 9.4.1 (see #1804) - Fail with an error if package is declard twice in
stack_snapshot(see #1815)
- Respect
main_functionwhen building a haskell module (see #1740) - Validate hidden modules (see #1796)
0.15 2022-07-22
- Support for Bazel version 5.x (see #1781)
- By default, the
stack_snapshotrule now relies on stack to determine toolchain libraries. This can be a breaking change on windows if we rely on a stack snapshot containingWin32 <= 2.13.2.0, as we encounter this issue. In this case, to ensure the toolchainWin32library is used (instead of trying to compile a new one), it can be droped from a custom stack snapshot as in the ./stackage_snapshot.yaml file. - Handle CPU value darwin_arm64 (see #1739)
- Support Bazel 4.2.2 (see #1695)
- haskell_module: Enable optimizations in opt mode (see #1708)
- haskell_module: Pass cc toolchain linker flags when using the interpreter (see #1686)
- Add more documentation for haskell_module (see #1688)
- Reproducible interface files for Cabal packages with C dependencies (see #1689)
- Handling of toolchain libraries in stack_snapshot (see #1685)
- Expose object files of transitive dependencies when using TH (see #1680)
- Expose dependencies of cross-library dependencies in the inputs of the build action of haskell_module (see #1678)
- HaskellC2Hs fails with clang: error: no input files (see #1778)
- Fix build problems with GHC 9.x (see #1749)
- Fix the error message in the stack version check (see #1722)
- Fix all_files captures "bazel-*" directories (see #1674)
- Fix computation of transitive dependencies (see #1669)
- Don't discard
dead_strip_dylibsin macos (see #1718) - Fix haskell_module when dependencies appear both as narrowed and not-narrowed (see #1691)
- Fix stripPrefix for ghc 9.0.2 of win (see #1677)
0.14.0 2021-12-21
- Moved to exclusive support of Bazel 4
- Support for GHC 8.8, 8.10, 9.0 and 9.2
- Asterius support (experimental)
- Cross-compilation support
haskell_modulerule (experimental)
- Support for Bazel 4.1.0 and 4.2.1
- Support for GHC 8.8.4, 8.10.3, 8.10.4, 8.10.7, 9.0.1 and 9.2.1.
- Blacklisted empty
ghc-byteorderpackage. - More reproducible GHC bindist on macOS. See #1462.
- Track GHC's
lib/settingsas an action input by exposing afilesattribute in thehaskell_toolchainrule, which is used in downstream actions. See #1478. - Added
ghc-bignumto the list of core packages (since GHC 9.0.1). - Provided a Bazel-compatible version of
ghc-paths. See #1508. - Allow different repository names when registering Haskell toolchains for cross-compiling.
- Added
hsc2hsinto the inputs ofcabal_wrapperso it can be found when cross-compiling. - Support for platform constraints for GHCs in Nixpkgs.
- Added
hie_bios_path_prefixto thehaskell_replrule to allow hie-bios to output paths relative to a directory besides the workspace root. - Experimental
haskell_modulerule, with profiling, hs-boot, plugin, preprocessor, package database, dynamic build and Template Haskell support. See #1553. - Support for Cabal sublibraries, using the
sublibrary_nameattribute of thehaskell_cabal_libraryrule. - Added
generates_path_moduleattribute tohaskell_cabal_library, such that its data files are accessible tohaskell_binaryrules. See #1575. - Added
non_default_pluginsattribute tohaskell_libraryandhaskell_binaryrules to avoid setting-fpluginfor every module. - Support for using Template Haskell and FFI with static C dependencies. See #1582.
- Support for Asterius. See #1614, #1618, #1619, #1621, #1643 and #1660.
- Support for sublibraries in the
stack_snapshotrule. #1638. - Support for the
--incompatible_override_toolchain_transitionflag.
- Support for Bazel pre-4.0.0
- Source file names are explicitly mapped to module names and
corresponding object and interface files in Starlark. The
mainmodule is determined heuristically, but can be overridden with themain_fileattribute. See #1281. stack unpacknow uses versioned packages. See #1455.cabal_wrappernow takes its arguments as JSON.- Use GitHub API token in
stack_snapshotpinning, if available, to avoid rate limiting. See #1494. - Invoke a
runghcfor the execution platform incabal_wrapper. compiler_flagsoptions have been renamed toghcoptsin macros and rules, for consistency. The old name will still work, but has been deprecated.- Automatic visibility of
stack_snapshotdependencies to vendored packages. See #1583. - All REPL targets are tagged as
manual, so are only built on-demand. - Use a more deterministic
distdirpath inhaskell_cabal_*rules to improve reproducibility. See #1648.
stack_snapshotpinning with archives containing Cabal files located deeper down the tree.- A regression whereby dynamically linked binaries were missing their libraries in the runfiles.
- Compatibility issue with macOS Big Sur. See #1442.
- Support for GHC 8.10.
- Support for building fully-static binaries. These binaries have fewer dependencies and are more portable across systems.
- Support Cabal setup script dependencies. See #1347.
- Support ghcide.
- Support building Stackage binaries in
stack_snapshot, not just libraries. See #1304. - Better compatibility with --remote_download_minimal.
- Support Stack snapshot pinning. In the common case, users don't even need to run Stack to resolve a snapshot to a set of package tarballs. The tarballs can be cached in the Bazel repository cache. See #1376.
- The platform name for Nix users has changed. The platforms in
@//haskell/platforms/...are still supported, but are deprecated. Use@io_tweag_rules_nixpkgs//nixpkgs/platforms:hostinstead. - Avoid unnecessary recompilation on Windows. See #1280.
- Use Stack >= 2.3.1 in the implementation of
stack_snapshot. This enables better sdist caching, better performance, and makesbazel fetchmore effective. - More aggressive shortening of library names to avoid exceeding MACH-O header size limits on macOS.
- Make variables are now expanded in compiler and REPL flags. See #1381.
- Linking shared libraries and binaries on Linux distributions that have PIE enabled by default, like Ubuntu from at least 18.04 onwards. See #1388.
-
Various improvements to Windows support.
-
Support for Bazel 2.0.0
-
Minimum supported Bazel version is now 0.29, but GHC bindist is known to fail on macOS with Bazel 0.29. Please use a more recent version for macOS.
haskell_replnow has ahie_biosoutput group See #1263- Added support for hrepl (a standalone binary that runs REPLS for Bazel Haskell targets). See #1210.
haskell_cabal_library,haskell_cabal_binary, andstack_snapshotnow have averboseargument, to allow suppressing their output. See #1208.haskell_cabal_libraryandstack_snapshotnow build the Haddock documentation if the parameterhaddockis set toTrue(the default). See #1102 and #1200.- Added support for GHC bindist versions
8.8.3,8.8.2, and8.8.1. - Windows: support for
cabalSee #1133. - rules_haskell now depends on rules_sh, a toolchain for common shell commands. See #1117, #1143, and #1136 for motivation. See #1096 for the issue that triggered this train of thought.
hazelhas been deleted, please usestack_snapshotinstead. See #1158.
- The
haskell_register_toolchains()is no longer defined inhaskell/repositories.bzl, load it fromhaskell/toolchain.bzlinstead. cabalwrapper: specifypython3as a requirement, to enhance error messages on macOS and reduce cache invalidations. See #1251, #1097, and #1096.ghc_bindistandhaskell_register_ghc_bindistsnow have alocaleargument. Set it to circumvent issues on systems without the defaultC.UTF-8locale. See #1249.- macOS:
BAZEL_USE_CPP_ONLY_TOOLCHAIN = 1must be set for Bazel to pick the correct C compiler. See #1159. stack_snapshot: warning of stackage dependencies are not shown anymore, as they are irrelevant. See #1146 and #1026.- Sorted the content of generated manifest files, hereby avoid some spurious rebuilds (more builds caching). See #1128 and #1126.
- Windows: possible race condition on
stack updateis now avoided, by callingstack updateonly once. See #1199 and #1090.
haskell_cabal_libraryandhaskell_librarynow set relativeRUNPATHentries. See #1267- Fixed that GHC bindist could contain absolute
RUNPATHtortsSee #1131. - Documentations of rules
haskelly_library,haskell_binary, andhaskell_testnow show the documentation of attributes. See #1122.
-
Various improvements to
cabal_binary/libraryandstack_snapshot. -
Initial experimental Windows support for
cabal_binary/libraryandstack_snapshot. -
startscript for setting uprules_haskellallows to set up a nixpkgs-based bazel workspace, for NixOS users, via the--use-nixoption.
- Windows-support for cabal/stack. See #1074.
stack_snapshot:vendored_packagesattribute for manually overriding packages in a stack snapshot. There is an example in ./examples/WORKSPACE. See #1060.
- The
haskell/haskell.bzlentrypoint, which was deprecated in the previous release, was removed. Please usehaskell/defs.bzlinstead.
- The
depsattribute tostack_snapshothas been replaced by theextra_depsattribute. It no longer takes a list of dependencies to be added to all packages, but instead a dictionary specifying additional dependencies to select packages. Seestack_snapshotAPI docs for an example. See #1068.
- Unified the
cc_wrapperon all OSes.- Consistently shortens paths of library dependencies to work around size limits on Windows and macOS
- fixes
.so/.dylibending confusing on macOS - improves the REPL on macOS See #1039.
cabal_binary/librarytargets don’t name-clash anymorehaskell_cabal_libraryno longer buildsexecomponents, speeding up builds. See #1095.- Haddock information for protobuf rules generates correctly. See #1108.
-
The minimum supported Bazel version is now 0.27.
rules_haskellsupports Bazel up to 0.28. 0.27 is a LTS release, which means upstream guarantees all new releases are backwards-compatible to it for 3 months. See the Bazel Stability blog post for more information. -
The repository name has changed, to follow the new Bazel rule guidelines. It was previously called
@io_tweag_rules_haskell. It is now called@rules_haskell. You should adapt yourWORKSPACEfile to match this, as well as your.bazelrc.localfile, if any. -
haskell_cabal_library/haskell_cabal_binary: Both usecabalto build Haskell package dependencies. -
stack_snapshot: Uses stack’s dependency resolving algorithm to generatehaskell_cabal_librarytargets automatically. Requiresstack> 2.1, which it will download if cannot be found inPATH. -
It is now possible to statically link Haskell libraries in CC binaries.
-
A new example has been added.
cat_hs: is an example of a non-trivial application with multiple third-party dependencies downloaded from Hackage, C library dependencies and split up into multiple libraries and a binary. We use a rule wrapping Cabal to build the Hackage dependencies. This example requires Nix installed. It is used to build (or download from a binary cache) the C library dependencies.
-
Improved coverage reports.
-
Haddock links to prebuilt libraries.
-
Various improvements to reduce header size limits and command line argument length, in order to better support macOS and Windows.
haskell_cabal_library/haskell_cabal_binary. See #879, #898 and #904.stack_snapshot. See #887 (name changed tostack_snapshotafter this PR). See also #1011.toolsarguments for stack and cabal rules. See #907. They can be arbitrary tools, see #987.toolsattribute to corehaskell_*rules. This attribute can be used to expose GHC preprocessors. See #911.- Static GHC RTS can be specified in the toolchain. See #970.
runfileslibrary: manifest file support (for Windows). See #992.- Prototype implementation of bazel worker mode (not production-ready yet). See #1024 and #1055
-
The
haskell_toolchainmacro now no longer adds atoolchaindefinition. You must now define yourself ahaskell_toolchainand atoolchainseparately. This should be a mostly transparent change, because nearly no one uses these functions directly. They are normally only used transitively viahaskell_register_toolchainsand related functions. See #843. -
The
haskell/haskell.bzlentrypoint is deprecated. usehaskell/defs.bzlinstead. -
The
haskell_repositories()macro is deprecated. Userules_haskell_dependencies()fromhaskell/repositories.bzlinstead. -
The
haskell_register_toolchains()macro is deprecated. Userules_haskell_toolchains()fromhaskell/repositories.bzlinstead. -
The
exportsattribute’s semantics are changed:‘A list of other haskell libraries that will be transparently added as a dependency to every downstream rule.’
The original
exportsis available under the new namereexported_modules. See #1008. -
@is allowed in Haskell binary names. -
haskell_librarymay be empty (no files insrcs). See #1035.
-
The
haskell_lintrule has been removed. It should have been designed as a test rule and it should have had a different name. The rule isn't even necessary for its current purpose: it's more convenient to turn on compiler warnings globally in the toolchain definition. -
The
cc_haskell_importandhaskell_cc_importrules have been removed. These rules were redundant since Haskell rules can directly interact with C rules. Use the following patterns instead.# To import Haskell from C. haskell_library(name = "haskell-lib", ...) cc_library(name = "cc-lib", deps = [":haskell-lib"], ...) # To import C from Haskell. cc_library(name = "cc-lib", ...) haskell_library(name = "haskell-lib", deps = [":cc-lib"], ...) # To import a pre-built library. cc_library(name = "so-lib", srcs = glob(["libxyz.so*", "libxyz.dylib", "libxyz.a", "libxyz.dll"])) haskell_library(name = "haskell-lib", deps = [":so-lib"], ...)
haskell_register_ghc_nixpkgs: Forward all arguments to wrapped rules. See #886. Also supportrepositoryargument andnixopts.- Haddock links to prebuilt libraries. See #928 and #934.
- Documentation for GHC plugin targets is now included in the API documentation.
- The Multi-REPL recognizes
haskell_toolchain_librarydependencies. - Various imrovements to linking. See #930.
$(location)expansion for “expression is not a declared prerequisite of this rule”. See #990.- Better error if the compiler version doesn’t match the one specified in the toolchain. See #1014.
- macOS bindists correctly find
arandsedinvocation was broken. See #1022 and #1017. - Allow arbitrary name for
haskell_cabal_library. See #1034. - Various fixes for
c2hson Windows See #1046 and #1052. :loadcommand inghciSee #1046.
- Profiling mode (
--compilation_mode="dbg"). See #896. - GHC errors won’t be swallowed anymore. See #1050.
- Bindists were broken on macOS. See 884.
-
The minimum supported Bazel version is now v0.24.
The version is available from
nixpkgsunstable and via official releases. -
Initial Windows support
A non-trivial subset of
rules_haskellis now working on Windows. See the project tracker for finished and ongoing work. -
Improved OSX support
Due to the
mach-oheader size limit, we took extra measures to make sure generated library paths are as short as possible, so linking haskell binaries works even for large dependency graphs. -
Better Bindist support
The default
startscript sets up a bindist-based project by default.rules_nixpkgsis no longer a required dependency ofrules_haskell(but can still be used as backend). -
Full Haskell–C–Haskell Sandwich
A
haskell_librarycan be now be used nearly anywhere acc_librarycan.The old
cc_haskell_importandhaskell_cc_importwrapper rules are no longer necessary and have been deprecated. -
Greatly improved REPL support
A new
haskell_replrule allows to load multiple source targets by source, or compiled, as needed. Example usage:haskell_repl( name = "my-repl", # Collect all transitive Haskell dependencies from these targets. deps = [ "//package-a:target-1", "//package-b:target-2", ], # Load targets by source that match these patterns. include = [ "//package-a/...", "//packaga-b/...", "//common/...", ], # Don't load targets by source that match these patterns. exclude = [ "//package-a/vendored/...", ], ) -
Support for GHC plugins
Each
haskell_*rule now has apluginsattribute. It takes a list of bazel targets, which should behaskell_librarys that implement the GHC plugin specification. -
Initial Code Coverage support
Measure coverage of your Haskell code. See the “Checking Code Coverage” section in the manual.
hazel was merged into
rules_haskell, but
we are not yet certain about the exact interface we want to expose.
hazel is therefore not included in this release, and we can’t
guarantee the original, unmerged version is compatible with this
release. If you depend on hazel, please use a recent master commit
of rules_haskell.
-
haskell_register_ghc_bindistsis no longer re-exported from//haskell/haskell.bzl. You must now load that macro from//haskell:nixpkgs.bzl. -
rules_nixpkgsis no longer a dependency ofrules_haskell. -
haskell_importhas been renamed tohaskell_toolchain_library. This is a substantial breaking change. But adapting to it should be as simple assed -i 's/^haskell_import/haskell_toolchain_library/' **/BUILD{,.bazel} sed -i 's/"haskell_import"/"haskell_toolchain_library"/' **/BUILD{,.bazel} -
haskell_toolchain’s tools attribute is now a list of labels. Earlier entries take precendence. To migrate, add[]around your argument. See #854. -
The default outputs of
haskell_libraryare now the static and/or shared library files, not the package database config and cache files.
haskell_replrule that constructs a ghci wrapper that loads multiple targets by source. See #736.pluginsattribute tohaskell_*rules to load GHC plugins. See #799.- The
HaskellInfoandHaskellLibraryInfoproviders are now exported and thus accessible by downstream rules. See #844. - Generate version macros for preprocessors (
c2hs,hsc2hs). See #847. bindist_toolchainrule getshaddock_flagsandrepl_ghci_argsattributes.@repltargets write json file with build information, usable by IDE tools. See #695.
haskell_cc_import; usecc_libraryinstead. See #831.cc_haskell_import; just usehaskell_librarylike acc_library. See #831.
- Support protobuf roots in
haskell_proto_library. See #722. - Made GHC bindist relocatable on *nix. See #853.
- Various other fixes
- The minimum supported Bazel version is now v0.21.
haskell_register_toolchains,haskell_register_ghc_bindistsandhaskell_register_ghc_nixpkgsto register multiple toolchains for multiple platforms at once. Toolchains from binary distributions can now coexist with toolchains from Nixpkgs, even on the same platform. On nixpkgs you need to provide a toolchain. See theREADMEfor instructions. See #597 and #610.- Instructions on how to reference a local checkout of
rules_haskell. rules_haskellis forward-compatible with the next breaking changes inbazelversions, via the--all_incompatible_changesflag. See #613.
- The
generate_soattribute ofhaskell_binaryandhaskell_testhas been completely superseded bylinkstaticin the last release and became a no-op, so it is removed. - The
main_fileattribute ofhaskell_binaryandhaskell_testhad been deprecated because it was a no-op, so it is removed. - The
prebuilt_dependenciesattribute of all haskell rules had been deprecated two versions ago and is removed. Usehaskell_importinstead (see docs for usage). - The
extra_binariesfield is now no longer supported.
ghc_bindistnow requires atargetargument. Usehaskell_register_ghc_nixpkgsto callghc_bindistonce per known target. See #610.ghc_bindistnow registers itself as a toolchain. We no longer require a separate toolchain definition and registration in addition toghc_bindist. See #610.c2hssupport is now provided in a separate toolchain calledc2hs_toolchain, rather than an optional extra to thehaskell_toolchain. See #590.- Rename bindist arch names so they are the same as in
rules_go/nodejs.
- Prevent duplicate installs of bazel_skylib See #536.
- Test suite now executes all binaries, various runtime errors were uncovered. See #551.
- Repl targets that have indirect cc_library dependencies. See #576.
linkstaticfor haskell binaries that have an indirect dependency on a prebuilt haskell package. See #569.- … and an indirect dependency on a C library. See #567.
- Prefer linking agains static C libraries with
linkstatic. See #587. - Haddock flags take precedence over GHC compiler flags. See #572.
- User-defined GHC flags now override default flags. See #607.
- Dynamic transitive C(++) libraries work. See #627.
- Support for Bazel 0.20.0. This is now also the lower bound for the supported version.
- Supported reexported modules, via the
new
exportsattribute. See #357. - Support
linkstaticattribute, for building mostly static binaries. This is now the default for binaries, to match the C/C++ rules defaults. See #378. - It is now possible to set default Haddock flags in the toolchain definition. See #425.
- Support wrapping Haskell libraries as shared objects callable from Python. See #370.
- REPL targets have changed name. If you have a library target
foo, then the corresponding REPL target is now calledfoo@repl. It was previously calledfoo-repl. The old name is still supported but is deprecated. - Don't set a default version number anymore in libraries and binaries. Version numbers, and CPP version macros, are now only used for packages imported from Hackage. Don't use them otherwise. See #386, #414 and #446.
- On macOS, we use
arfor linking, not Libtool. See #392. - The
runfilesHaskell library has been broken out into a Cabal library and published on Hackage.
- Make REPL force building of dependencies. See #363.
- Don’t crash on inputs missing
.haddockinterface files. See #362 - Fix handling of non-unique package names. See #403.
-
Protocol buffers integration using
proto-lens. See #239. -
strip_include_prefixattribute to thehaskell_cc_importrule. See #241. -
Support for
c2hsfiles. See #351. -
The
extra_srcsattribute that allows to list non-Haskell source files that should be visible during compilation and linking (usually useful with TH). See #292. -
The
extra_binariesattribute to thehaskell_toolchainrule. See #282. -
A Haskell library for looking up runfiles. See #302.
-
A separate toolchain for
doctest—haskell_doctest_toolchain. See #310. -
The
compiler_flagsattribute to thehaskell_toolchainrule allowing to specify default compiler flags. See #315. -
The ability to set locale to be used during compilation by adding the
localeandlocale_archiveattributes tohaskell_toolchain. See #328. -
Proper support for profiling. See #332.
-
The
repl_ghci_argsattribute to thehaskell_toolchainrule. See #334. -
The
haskell_importrule allowing us to make specifying dependencies more uniform and to deprecate theprebuilt_dependenciesattribute. See #337.
-
Template Haskell linking against
cc_library. See #218. -
Linking issues on macOS. See #221.
-
GHC packages that correspond to targets with the same name but in different Bazel packages no longer clash. See #219.
-
Build breakage on macOS when XCode is not installed. See #223.
-
Bug preventing Haddock generation because of missing dynamic shared libraries when targets have TH in them. See #226.
-
Hyperlinks between targets contained in different Bazel packages (Haddocks). See #231.
-
Generated source files do not cause issues now. See #211.
-
dataattributes now allow files in them. See #236. -
Bug when headers and hsc2hs-produced files were not visible to Haddock. See #254.
-
Bug preventing using genrule-produced headers via
haskell_cc_import. See #268. -
Bug that allowed us avoid specifying certain
prebuilt_dependenciesif they were already specified for transitive dependencies. See #286. -
Bug that was making modules generated from
.hscand.chsfiles and generated modules in general not available in the REPLs. See #323.
-
Added
-Wnoncanonical-monad-instancesto default warnings inhaskell_lint. -
How REPLs work. Now there is an optional output per binary/library. Its name is the name of target with
-repladded. Users can then build and run such a REPL for any defined target. See #220 and #225. -
The
haskell_docrule now produces self-contained documentation bundle with unified index. See #249. -
haskell_lintnow only lints direct dependencies. See #293. -
haskell_doctesthas been re-designed. It's now a normal rule that works only on direct dependencies and allows to specify modules which should be tested, pass custom flags todoctestexecutable. See #342. -
The
prebuilt_dependenciesattribute ofhaskell_binaryandhaskell_libraryhas been deprecated. See #355.
-
Support for macOS, courtesy of Judah Jacobson. See #165.
-
Support for
dataattributes inhaskell_binaryandhaskell_libraryrules. See #167. -
Output on building of GHC bindists so it's clearer what went wrong in case of a failure.
-
haskell_replrule allowing to interact with GHCi. See #82. -
Support for GHC 8.4.1 bindist. See #175.
-
haskell_lintrule. See #181. -
haskell_doctestrule. See #194.
-
Improved hermeticity of builds. See #180.
-
cc_haskell_importnow works withhaskell_binarytargets as well. See #179.
hidden_modulesattribute of thehaskell_libraryrule. This allows to selectively hide modules in a library. See #152.
-
Test executables now find shared libraries correctly at runtime. See #151.
-
Building of certain modules does not fail with the “file name does not match module name” message anymore. See #139.
-
Linking issues that resulted in unresolved symbols due to incorrect order in which static libraries are passed to linker are not resolved. See #140.
-
The “grep not found” error is fixed. See #141.
-
System-level shared libraries introduced by
haskell_cc_importare now found correctly during compilation. See #142.