summaryrefslogtreecommitdiff
path: root/CHANGELOG.md
diff options
context:
space:
mode:
Diffstat (limited to 'CHANGELOG.md')
-rw-r--r--CHANGELOG.md184
1 files changed, 184 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d67ac073d6..e9bcb548ee 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,187 @@
+# v0.17.0 (2021-11-05)
+
+`v0.17.0` is a major feature release.
+
+## Major features in this release
+
+1. **New concretizer is now default**
+ The new concretizer introduced as an experimental feature in `v0.16.0`
+ is now the default (#25502). The new concretizer is based on the
+ [clingo](https://github.com/potassco/clingo) logic programming system,
+ and it enables us to do much higher quality and faster dependency solving
+ The old concretizer is still available via the `concretizer: original`
+ setting, but it is deprecated and will be removed in `v0.18.0`.
+
+2. **Binary Bootstrapping**
+ To make it easier to use the new concretizer and binary packages,
+ Spack now bootstraps `clingo` and `GnuPG` from public binaries. If it
+ is not able to bootstrap them from binaries, it installs them from
+ source code. With these changes, you should still be able to clone Spack
+ and start using it almost immediately. (#21446, #22354, #22489, #22606,
+ #22720, #22720, #23677, #23946, #24003, #25138, #25607, #25964, #26029,
+ #26399, #26599).
+
+3. **Reuse existing packages (experimental)**
+ The most wanted feature from our
+ [2020 user survey](https://spack.io/spack-user-survey-2020/) and
+ the most wanted Spack feature of all time (#25310). `spack install`,
+ `spack spec`, and `spack concretize` now have a `--reuse` option, which
+ causes Spack to minimize the number of rebuilds it does. The `--reuse`
+ option will try to find existing installations and binary packages locally
+ and in registered mirrors, and will prefer to use them over building new
+ versions. This will allow users to build from source *far* less than in
+ prior versions of Spack. This feature will continue to be improved, with
+ configuration options and better CLI expected in `v0.17.1`. It will become
+ the *default* concretization mode in `v0.18.0`.
+
+4. **Better error messages**
+ We have improved the error messages generated by the new concretizer by
+ using *unsatisfiable cores*. Spack will now print a summary of the types
+ of constraints that were violated to make a spec unsatisfiable (#26719).
+
+5. **Conditional variants**
+ Variants can now have a `when="<spec>"` clause, allowing them to be
+ conditional based on the version or other attributes of a package (#24858).
+
+6. **Git commit versions**
+ In an environment and on the command-line, you can now provide a full,
+ 40-character git commit as a version for any package with a top-level
+ `git` URL. e.g., `spack install hdf5@45bb27f58240a8da7ebb4efc821a1a964d7712a8`.
+ Spack will compare the commit to tags in the git repository to understand
+ what versions it is ahead of or behind.
+
+7. **Override local config and cache directories**
+ You can now set `SPACK_DISABLE_LOCAL_CONFIG` to disable the `~/.spack` and
+ `/etc/spack` configuration scopes. `SPACK_USER_CACHE_PATH` allows you to
+ move caches out of `~/.spack`, as well (#27022, #26735). This addresses
+ common problems where users could not isolate CI environments from local
+ configuration.
+
+8. **Improvements to Spack Containerize**
+ For added reproducibility, you can now pin the Spack version used by
+ `spack containerize` (#21910). The container build will only build
+ with the Spack version pinned at build recipe creation instead of the
+ latest Spack version.
+
+9. **New commands for dealing with tags**
+ The `spack tags` command allows you to list tags on packages (#26136), and you
+ can list tests and filter tags with `spack test list` (#26842).
+
+## Other new features of note
+
+* Copy and relocate environment views as stand-alone installations (#24832)
+* `spack diff` command can diff two installed specs (#22283, #25169)
+* `spack -c <config>` can set one-off config parameters on CLI (#22251)
+* `spack load --list` is an alias for `spack find --loaded` (#27184)
+* `spack gpg` can export private key with `--secret` (#22557)
+* `spack style` automatically bootstraps dependencies (#24819)
+* `spack style --fix` automatically invokes `isort` (#24071)
+* build dependencies can be installed from build caches with `--include-build-deps` (#19955)
+* `spack audit` command for checking package constraints (#23053)
+* Spack can now fetch from `CVS` repositories (yep, really) (#23212)
+* `spack monitor` lets you upload analysis about installations to a
+ [spack monitor server](https://github.com/spack/spack-monitor) (#23804, #24321,
+ #23777, #25928))
+* `spack python --path` shows which `python` Spack is using (#22006)
+* `spack env activate --temp` can create temporary environments (#25388)
+* `--preferred` and `--latest` options for `spack checksum` (#25830)
+* `cc` is now pure posix and runs on Alpine (#26259)
+* `SPACK_PYTHON` environment variable sets which `python` spack uses (#21222)
+* `SPACK_SKIP_MODULES` lets you source `setup-env.sh` faster if you don't need modules (#24545)
+
+## Major internal refactors
+
+* `spec.yaml` files are now `spec.json`, yielding a large speed improvement (#22845)
+* Splicing allows Spack specs to store mixed build provenance (#20262)
+* More extensive hooks API for installations (#21930)
+* New internal API for getting the active environment (#25439)
+
+## Performance Improvements
+
+* Parallelize separate concretization in environments; Previously 55 min E4S solve
+ now takes 2.5 min (#26264)
+* Drastically improve YamlFilesystemView file removal performance via batching (#24355)
+* Speed up spec comparison (#21618)
+* Speed up environment activation (#25633)
+
+## Archspec improvements
+* support for new generic `x86_64_v2`, `x86_64_v3`, `x86_64_v4` targets
+ (see [archspec#31](https://github.com/archspec/archspec-json/pull/31))
+* `spack arch --generic` lets you get the best generic architecture for
+ your node (#27061)
+* added support for aocc (#20124), `arm` compiler on `graviton2` (#24904)
+ and on `a64fx` (#24524),
+
+## Infrastructure, buildcaches, and services
+
+* Add support for GCS Bucket Mirrors (#26382)
+* Add `spackbot` to help package maintainers with notifications. See
+ [spack.github.io/spackbot](https://spack.github.io/spackbot/)
+* Reproducible pipeline builds with `spack ci rebuild` (#22887)
+* Removed redundant concretizations from GitLab pipeline generation (#26622)
+* Spack CI no longer generates jobs for unbuilt specs (#20435)
+* Every pull request pipeline has its own buildcache (#25529)
+* `--no-add` installs only specified specs and only if already present in… (#22657)
+* Add environment-aware `spack buildcache sync` command (#25470)
+* Binary cache installation speedups and improvements (#19690, #20768)
+
+## Deprecations and Removals
+
+* `spack setup` was deprecated in v0.16.0, and has now been removed.
+ Use `spack develop` and `spack dev-build`.
+* Remove unused `--dependencies` flag from `spack load` (#25731)
+* Remove stubs for `spack module [refresh|find|rm|loads]`, all of which
+ were deprecated in 2018.
+
+## Notable Bugfixes
+
+* Deactivate previous env before activating new one (#25409)
+* Many fixes to error codes from `spack install` (#21319, #27012, #25314)
+* config add: infer type based on JSON schema validation errors (#27035)
+* `spack config edit` now works even if `spack.yaml` is broken (#24689)
+
+## Packages
+
+* Allow non-empty version ranges like `1.1.0:1.1` (#26402)
+* Remove `.99`'s from many version ranges (#26422)
+* Python: use platform-specific site packages dir (#25998)
+* `CachedCMakePackage` for using *.cmake initial config files (#19316)
+* `lua-lang` allows swapping `lua` and `luajit` (#22492)
+* Better support for `ld.gold` and `ld.lld` (#25626)
+* build times are now stored as metadata in `$prefix/.spack` (#21179)
+* post-install tests can be reused in smoke tests (#20298)
+* Packages can use `pypi` attribute to infer `homepage`/`url`/`list_url` (#17587)
+* Use gnuconfig package for `config.guess` file replacement (#26035)
+* patches: make re-applied patches idempotent (#26784)
+
+## Spack community stats
+
+* 5969 total packages, 920 new since `v0.16.0`
+ * 358 new Python packages, 175 new R packages
+* 513 people contributed to this release
+ * 490 committers to packages
+ * 105 committers to core
+* Lots of GPU updates:
+ * ~77 CUDA-related commits
+ * ~66 AMD-related updates
+ * ~27 OneAPI-related commits
+ * 30 commits from AMD toolchain support
+* `spack test` usage in packages is increasing
+ * 1669 packages with tests (mostly generic python tests)
+ * 93 packages with their own tests
+
+
+# v0.16.3 (2021-09-21)
+
+* clang/llvm: fix version detection (#19978)
+* Fix use of quotes in Python build system (#22279)
+* Cray: fix extracting paths from module files (#23472)
+* Use AWS CloudFront for source mirror (#23978)
+* Ensure all roots of an installed environment are marked explicit in db (#24277)
+* Fix fetching for Python 3.8 and 3.9 (#24686)
+* locks: only open lockfiles once instead of for every lock held (#24794)
+* Remove the EOL centos:6 docker image
+
# v0.16.2 (2021-05-22)
* Major performance improvement for `spack load` and other commands. (#23661)