about summary refs log tree commit diff
path: root/third_party/bazel/rules_haskell/CHANGELOG.md
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/bazel/rules_haskell/CHANGELOG.md')
-rw-r--r--third_party/bazel/rules_haskell/CHANGELOG.md461
1 files changed, 461 insertions, 0 deletions
diff --git a/third_party/bazel/rules_haskell/CHANGELOG.md b/third_party/bazel/rules_haskell/CHANGELOG.md
new file mode 100644
index 000000000000..af0fe7ddc581
--- /dev/null
+++ b/third_party/bazel/rules_haskell/CHANGELOG.md
@@ -0,0 +1,461 @@
+# Change Log
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/).
+
+## [0.9.1] - 2019-06-03
+
+### Fixed
+
+- Bindists were broken on MacOS.
+  See [884](https://github.com/tweag/rules_haskell/issues/884).
+
+## [0.9] - 2019-05-07
+
+### Highlights
+
+* The minimum supported Bazel version is now v0.24.
+
+  The version is available from [`nixpkgs
+  unstable`](https://github.com/NixOS/nixpkgs/pull/58147) and via
+  [`official
+  releases`](https://docs.bazel.build/versions/master/install.html).
+
+* Initial Windows support
+
+  A non-trivial subset of `rules_haskell` is now working on Windows.
+  See the [`project
+  tracker`](https://github.com/tweag/rules_haskell/issues?q=is%3Aopen+is%3Aissue+project%3Atweag%2Frules_haskell%2F2)
+  for finished and ongoing work.
+
+* Improved OSX support
+
+  Due to the `mach-o` header 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 [`start` script](http://haskell.build/start) sets up a
+  bindist-based project by default.
+
+  `rules_nixpkgs` is no longer a required dependency of
+  `rules_haskell` (but can still be used as backend).
+
+* Full Haskell–C–Haskell Sandwich
+
+  A `haskell_library` can be now be used nearly anywhere a
+  `cc_library` can.
+
+  The old `cc_haskell_import` and `haskell_cc_import` wrapper rules
+  are no longer necessary and have been deprecated.
+
+* Greatly improved REPL support
+
+  A new `haskell_repl` rule 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 a `plugins` attribute. It takes a
+  list of bazel targets, which should be `haskell_library`s that
+  implement the [GHC plugin
+  specification](https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/extending_ghc.html#compiler-plugins).
+
+* Initial Code Coverage support
+
+  Measure coverage of your Haskell code. See the [“Checking Code
+  Coverage”](https://rules-haskell.readthedocs.io/en/latest/haskell-use-cases.html#checking-code-coverage)
+  section in the manual.
+
+### Compatibility Notice
+
+[`hazel`](https://github.com/FormationAI/hazel) was [merged into
+`rules_haskell`](https://github.com/tweag/rules_haskell/pull/733), 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`.
+
+### Changed
+
+* `haskell_register_ghc_bindists` is no longer re-exported from
+  `//haskell/haskell.bzl`.
+  You must now load that macro from `//haskell:nixpkgs.bzl`.
+
+* `rules_nixpkgs` is no longer a dependency of `rules_haskell`.
+
+* `haskell_import` has been renamed to `haskell_toolchain_library`.
+  This is a substantial breaking change. But adapting to it should be
+  as simple as
+
+  ```
+  sed -i 's/^haskell_import/haskell_toolchain_library/' **/BUILD{,.bazel}
+  sed -i 's/"haskell_import"/"haskell_toolchain_library"/' **/BUILD{,.bazel}
+  ```
+
+  See [#843](https://github.com/tweag/rules_haskell/pull/843).
+
+* `haskell_toolchain`’s tools attribute is now a list of labels.
+  Earlier entries take precendence. To migrate, add `[]` around your
+  argument.
+  See [#854](https://github.com/tweag/rules_haskell/pull/854).
+
+* The default outputs of `haskell_library` are now the static and/or
+  shared library files, not the package database config and cache
+  files.
+
+### Added
+
+* `haskell_repl` rule that constructs a ghci wrapper that loads
+  multiple targets by source.
+  See [#736](https://github.com/tweag/rules_haskell/pull/736).
+* `plugins` attribute to `haskell_*` rules to load GHC plugins.
+  See [#799](https://github.com/tweag/rules_haskell/pull/799).
+* The `HaskellInfo` and `HaskellLibraryInfo` providers are now
+  exported and thus accessible by downstream rules.
+  See [#844](https://github.com/tweag/rules_haskell/pull/844).
+* Generate version macros for preprocessors (`c2hs`, `hsc2hs`).
+  See [#847](https://github.com/tweag/rules_haskell/pull/847).
+* `bindist_toolchain` rule gets `haddock_flags` and `repl_ghci_args`
+  attributes.
+* `@repl` targets write json file with build information, usable by
+  IDE tools.
+  See [#695](https://github.com/tweag/rules_haskell/pull/695).
+
+### Deprecated
+
+* `haskell_cc_import`; use `cc_library` instead.
+  See [#831](https://github.com/tweag/rules_haskell/pull/831).
+* `cc_haskell_import`; just use `haskell_library` like a `cc_library`.
+  See [#831](https://github.com/tweag/rules_haskell/pull/831).
+
+### Fixed
+
+* Support protobuf roots in `haskell_proto_library`.
+  See [#722](https://github.com/tweag/rules_haskell/pull/722).
+* Made GHC bindist relocatable on *nix.
+  See [#853](https://github.com/tweag/rules_haskell/pull/853).
+* Various other fixes
+
+## [0.8] - 2019-01-28
+
+* The minimum supported Bazel version is now v0.21.
+
+### Added
+
+* `haskell_register_toolchains`, `haskell_register_ghc_bindists` and
+  `haskell_register_ghc_nixpkgs` to 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
+  [the `README`](./README.md#Nixpkgs) for instructions.
+  See [#597](https://github.com/tweag/rules_haskell/pull/597)
+  and [#610](https://github.com/tweag/rules_haskell/pull/610).
+* Instructions on how to reference a local checkout of `rules_haskell`.
+* `rules_haskell` is forward-compatible with the next breaking changes
+  in `bazel` versions, via the `--all_incompatible_changes` flag.
+  See [#613](https://github.com/tweag/rules_haskell/pull/613).
+
+### Removed
+
+* The `generate_so` attribute of `haskell_binary` and `haskell_test`
+  has been completely superseded by `linkstatic` in the last release
+  and became a no-op, so it is removed.
+* The `main_file` attribute of `haskell_binary` and `haskell_test`
+  had been deprecated because it was a no-op, so it is removed.
+* The `prebuilt_dependencies` attribute of all haskell rules
+  had been deprecated two versions ago and is removed.
+  Use `haskell_import` instead (see docs for usage).
+* The `extra_binaries` field is now no longer supported.
+
+### Changed
+
+* `ghc_bindist` now requires a `target` argument. Use
+  `haskell_register_ghc_nixpkgs` to call `ghc_bindist` once per known
+  target.
+  See [#610](https://github.com/tweag/rules_haskell/pull/610).
+* `ghc_bindist` now registers itself as a toolchain. We no longer
+  require a separate toolchain definition and registration in addition
+  to `ghc_bindist`.
+  See [#610](https://github.com/tweag/rules_haskell/pull/610).
+* `c2hs` support is now provided in a separate toolchain called
+  `c2hs_toolchain`, rather than an optional extra to the
+  `haskell_toolchain`.
+  See [#590](https://github.com/tweag/rules_haskell/pull/590).
+* Rename bindist arch names so they are the same as in
+  `rules_go/nodejs`.
+
+### Fixed
+
+* Prevent duplicate installs of bazel_skylib
+  See [#536](https://github.com/tweag/rules_haskell/pull/536).
+* Test suite now executes all binaries, various runtime errors were
+  uncovered.
+  See [#551](https://github.com/tweag/rules_haskell/pull/551).
+* Repl targets that have indirect cc_library dependencies.
+  See [#576](https://github.com/tweag/rules_haskell/pull/576).
+* `linkstatic` for haskell binaries that have an indirect dependency
+  on a prebuilt haskell package.
+  See [#569](https://github.com/tweag/rules_haskell/pull/569).
+* … and an indirect dependency on a C library.
+  See [#567](https://github.com/tweag/rules_haskell/pull/567).
+* Prefer linking agains static C libraries with `linkstatic`.
+  See [#587](https://github.com/tweag/rules_haskell/pull/587).
+* Haddock flags take precedence over GHC compiler flags.
+  See [#572](https://github.com/tweag/rules_haskell/pull/572).
+* User-defined GHC flags now override default flags.
+  See [#607](https://github.com/tweag/rules_haskell/pull/607).
+* Dynamic transitive C(++) libraries work.
+  See [#627](https://github.com/tweag/rules_haskell/pull/627).
+
+## [0.7] - 2018-12-24
+
+### Added
+
+* Support for Bazel 0.20.0. This is now also the lower bound for the
+  supported version.
+* Supported reexported modules, via the
+  new
+  [`exports` attribute](http://api.haskell.build/haskell/haskell.html#haskell_library.exports).
+  See [#357](https://github.com/tweag/rules_haskell/issues/357).
+* Support `linkstatic` attribute, for building mostly static binaries.
+  This is now the default for binaries, to match the C/C++ rules
+  defaults.
+  See [#378](https://github.com/tweag/rules_haskell/issues/378).
+* It is now possible to set default Haddock flags in the toolchain
+  definition.
+  See [#425](https://github.com/tweag/rules_haskell/pull/425).
+* Support wrapping Haskell libraries as shared objects callable from
+  Python.
+  See [#370](https://github.com/tweag/rules_haskell/issues/370).
+
+### Changed
+
+* REPL targets have changed name. If you have a library target `foo`,
+  then the corresponding REPL target is now called `foo@repl`. It was
+  previously called `foo-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](https://github.com/tweag/rules_haskell/pull/386),
+  [#414](https://github.com/tweag/rules_haskell/pull/414)
+  and [#446](https://github.com/tweag/rules_haskell/pull/446).
+* On macOS, we use `ar` for linking, not Libtool.
+  See [#392](https://github.com/tweag/rules_haskell/pull/392).
+* The `runfiles` Haskell library has been broken out into a Cabal
+  library and published on Hackage.
+
+### Fixed
+
+* Make REPL force building of dependencies.
+  See [#363](https://github.com/tweag/rules_haskell/pull/363).
+* Don’t crash on inputs missing `.haddock` interface files. See
+  [#362](https://github.com/tweag/rules_haskell/pull/362)
+* Fix handling of non-unique package names.
+  See [#403](https://github.com/tweag/rules_haskell/pull/403).
+
+## [0.6] - 2018-07-21
+
+### Added
+
+* Protocol buffers integration using `proto-lens`. See
+  [#239](https://github.com/tweag/rules_haskell/pull/239).
+
+* `strip_include_prefix` attribute to the `haskell_cc_import` rule. See
+  [#241](https://github.com/tweag/rules_haskell/pull/241).
+
+* Support for `c2hs` files. See
+  [#351](https://github.com/tweag/rules_haskell/pull/351).
+
+* The `extra_srcs` attribute that allows to list non-Haskell source files
+  that should be visible during compilation and linking (usually useful with
+  TH). See [#292](https://github.com/tweag/rules_haskell/pull/292).
+
+* The `extra_binaries` attribute to the `haskell_toolchain` rule. See
+  [#282](https://github.com/tweag/rules_haskell/issues/282).
+
+* A Haskell library for looking up runfiles. See
+  [#302](https://github.com/tweag/rules_haskell/pull/302).
+
+* A separate toolchain for `doctest`—`haskell_doctest_toolchain`. See
+  [#310](https://github.com/tweag/rules_haskell/pull/310).
+
+* The `compiler_flags` attribute to the `haskell_toolchain` rule allowing to
+  specify default compiler flags. See
+  [#315](https://github.com/tweag/rules_haskell/issues/315).
+
+* The ability to set locale to be used during compilation by adding the
+  `locale` and `locale_archive` attributes to `haskell_toolchain`. See
+  [#328](https://github.com/tweag/rules_haskell/pull/328).
+
+* Proper support for profiling. See
+  [#332](https://github.com/tweag/rules_haskell/pull/332).
+
+* The `repl_ghci_args` attribute to the `haskell_toolchain` rule. See
+  [#334](https://github.com/tweag/rules_haskell/pull/334).
+
+* The `haskell_import` rule allowing us to make specifying dependencies more
+  uniform and to deprecate the `prebuilt_dependencies` attribute. See
+  [#337](https://github.com/tweag/rules_haskell/pull/337).
+
+### Fixed
+
+* Template Haskell linking against `cc_library`. See
+  [#218](https://github.com/tweag/rules_haskell/pull/218).
+
+* Linking issues on MacOS. See
+  [#221](https://github.com/tweag/rules_haskell/pull/221).
+
+* GHC packages that correspond to targets with the same name but in
+  different Bazel packages no longer clash. See
+  [#219](https://github.com/tweag/rules_haskell/issues/219).
+
+* Build breakage on MacOS when XCode is not installed. See
+  [#223](https://github.com/tweag/rules_haskell/pull/223).
+
+* Bug preventing Haddock generation because of missing dynamic shared
+  libraries when targets have TH in them. See
+  [#226](https://github.com/tweag/rules_haskell/pull/226).
+
+* Hyperlinks between targets contained in different Bazel packages
+  (Haddocks). See [#231](https://github.com/tweag/rules_haskell/issues/231).
+
+* Generated source files do not cause issues now. See
+  [#211](https://github.com/tweag/rules_haskell/pull/211).
+
+* `data` attributes now allow files in them. See
+  [#236](https://github.com/tweag/rules_haskell/issues/236).
+
+* Bug when headers and hsc2hs-produced files were not visible to Haddock.
+  See [#254](https://github.com/tweag/rules_haskell/pull/254).
+
+* Bug preventing using genrule-produced headers via `haskell_cc_import`. See
+  [#268](https://github.com/tweag/rules_haskell/pull/268).
+
+* Bug that allowed us avoid specifying certain `prebuilt_dependencies` if
+  they were already specified for transitive dependencies. See
+  [#286](https://github.com/tweag/rules_haskell/issues/286).
+
+* Bug that was making modules generated from `.hsc` and `.chs` files and
+  generated modules in general not available in the REPLs. See
+  [#323](https://github.com/tweag/rules_haskell/pull/323).
+
+### Changed
+
+* Added `-Wnoncanonical-monad-instances` to default warnings in
+  `haskell_lint`.
+
+* How REPLs work. Now there is an optional output per binary/library. Its
+  name is the name of target with `-repl` added. Users can then build and
+  run such a REPL for any defined target. See
+  [#220](https://github.com/tweag/rules_haskell/issues/220) and
+  [#225](https://github.com/tweag/rules_haskell/pull/225).
+
+* The `haskell_doc` rule now produces self-contained documentation bundle
+  with unified index. See
+  [#249](https://github.com/tweag/rules_haskell/pull/249).
+
+* `haskell_lint` now only lints direct dependencies. See
+  [#293](https://github.com/tweag/rules_haskell/pull/293).
+
+* `haskell_doctest` has 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 to `doctest` executable. See
+  [#342](https://github.com/tweag/rules_haskell/pull/342).
+
+* The `prebuilt_dependencies` attribute of `haskell_binary` and
+  `haskell_library` has been deprecated. See
+  [#355](https://github.com/tweag/rules_haskell/pull/355).
+
+## [0.5] - 2018-04-15
+
+### Added
+
+* Support for MacOS, courtesy of Judah Jacobson. See
+  [#165](https://github.com/tweag/rules_haskell/issues/165).
+
+* Support for `data` attributes in `haskell_binary` and `haskell_library`
+  rules. See [#167](https://github.com/tweag/rules_haskell/issues/167).
+
+* Output on building of GHC bindists so it's clearer what went wrong in case
+  of a failure.
+
+* `haskell_repl` rule allowing to interact with GHCi. See
+  [#82](https://github.com/tweag/rules_haskell/issues/82).
+
+* Support for GHC 8.4.1 bindist. See
+  [#175](https://github.com/tweag/rules_haskell/issues/175).
+
+* `haskell_lint` rule. See
+  [#181](https://github.com/tweag/rules_haskell/issues/181).
+
+* `haskell_doctest` rule. See
+  [#194](https://github.com/tweag/rules_haskell/issues/194).
+
+### Changed
+
+* Improved hermeticity of builds. See
+  [#180](https://github.com/tweag/rules_haskell/pull/180).
+
+* `cc_haskell_import` now works with `haskell_binary` targets as well. See
+  [#179](https://github.com/tweag/rules_haskell/issues/179).
+
+## [0.4] - 2018-02-27
+
+### Added
+
+* `hidden_modules` attribute of the `haskell_library` rule. This allows to
+  selectively hide modules in a library. See
+  [#152](https://github.com/tweag/rules_haskell/issues/152).
+
+### Fixed
+
+* Test executables now find shared libraries correctly at runtime. See
+  [#151](https://github.com/tweag/rules_haskell/issues/151).
+
+* Building of certain modules does not fail with the “file name does not
+  match module name” message anymore. See
+  [#139](https://github.com/tweag/rules_haskell/issues/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](https://github.com/tweag/rules_haskell/issues/140).
+
+* The “grep not found” error is fixed. See
+  [#141](https://github.com/tweag/rules_haskell/pull/141).
+
+* System-level shared libraries introduced by `haskell_cc_import` are now
+  found correctly during compilation. See
+  [#142](https://github.com/tweag/rules_haskell/issues/142).
+
+## [0.3] - 2018-02-13
+
+## [0.2] - 2018-01-07
+
+## [0.1] - 2018-01-02