From f7de8942b893bfde640c66a833122e65dd59687a Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Fri, 25 Oct 2019 23:19:36 -0700 Subject: [PATCH] Add top-level `CHANGELOG.md` with release notes. --- CHANGELOG.md | 262 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 262 insertions(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000000..69781d8290 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,262 @@ +# v0.13.0 (2019-10-25) + +`v0.13.0` is our biggest Spack release yet, with *many* new major features. +From facility deployment to improved environments, microarchitecture +support, and auto-generated build farms, this release has features for all of +our users. + +Spack grew by over 700 packages in the past year, and the project now has +over 450 contributors. Thanks to all of you for making this release possible. + +## Major new core features +- Chaining: use dependencies from external "upstream" Spack instances +- Environments now behave more like virtualenv/conda + - Each env has a *view*: a directory with all packages symlinked in + - Activating an environment sets `PATH`, `LD_LIBRARY_PATH`, `CPATH`, + `CMAKE_PREFIX_PATH`, `PKG_CONFIG_PATH`, etc. to point to this view. +- Spack detects and builds specifically for your microarchitecture + - named, understandable targets like `skylake`, `broadwell`, `power9`, `zen2` + - Spack knows which compilers can build for which architectures + - Packages can easily query support for features like `avx512` and `sse3` + - You can pick a target with, e.g. `spack install foo target=icelake` +- Spack stacks: combinatorial environments for facility deployment + - Environments can now build cartesian products of specs (with `matrix:`) + - Conditional syntax support to exclude certain builds from the stack +- Projections: ability to build easily navigable symlink trees environments +- Support no-source packages (BundlePackage) to aggregate related packages +- Extensions: users can write custom commands that live outside of Spack repo +- Support ARM and Fujitsu compilers + +## CI/build farm support +- `spack release-jobs` can detect `package.py` changes and generate + `.gitlab-ci.yml` to create binaries for an environment or stack + in parallel (initial support -- will change in future release). +- Results of build pipelines can be uploaded to a CDash server. +- Spack can now upload/fetch from package mirrors in Amazon S3 + +## New commands/options +- `spack mirror create --all` downloads *all* package sources/resources/patches +- `spack dev-build` runs phases of the install pipeline on the working directory +- `spack deprecate` permanently symlinks an old, unwanted package to a new one +- `spack verify` chcecks that packages' files match what was originally installed +- `spack find --json` prints `JSON` that is easy to parse with, e.g. `jq` +- `spack find --format FORMAT` allows you to flexibly print package metadata +- `spack spec --json` prints JSON version of `spec.yaml` + +## Selected improvements +- Auto-build requested compilers if they do not exist +- Spack automatically adds `RPATHs` needed to make executables find compiler + runtime libraries (e.g., path to newer `libstdc++` in `icpc` or `g++`) +- setup-env.sh is now compatible with Bash, Dash, and Zsh +- Spack now caps build jobs at min(16, ncores) by default +- `spack compiler find` now also throttles number of spawned processes +- Spack now writes stage directories directly to `$TMPDIR` instead of + symlinking stages within `$spack/var/spack/cache`. +- Improved and more powerful `spec` format strings +- You can pass a `spec.yaml` file anywhere in the CLI you can type a spec. +- Many improvements to binary caching +- Gradually supporting new features from Environment Modules v4 +- `spack edit` respects `VISUAL` environment variable +- Simplified package syntax for specifying build/run environment modifications +- Numerous improvements to support for environments across Spack commands +- Concretization improvements + +## Documentation +- Multi-lingual documentation (Started a Japanese translation) +- Tutorial now has its own site at spack-tutorial.readthedocs.io + - This enables us to keep multiple versions of the tutorial around + +## Deprecations +- Spack no longer supports dotkit (LLNL's homegrown, now deprecated module tool) +- `spack build`, `spack configure`, `spack diy` deprecated in favor of + `spack dev-build` and `spack install` + +## Important package changes +- 3,563 total packages (718 added since 0.12.1) +- Spack now defaults to Python 3 (previously preferred 2.7 by default) +- Much improved ARM support thanks to Fugaku (RIKEN) and SNL teams +- Support new special versions: master, trunk, and head (in addition to develop) +- Better finding logic for libraries and headers + + +# v0.12.1 (2018-11-13) + +This is a minor bugfix release, with a minor fix in the tutorial and a `flake8` fix. + +Bugfixes +* Add `r` back to regex strings in binary distribution +* Fix gcc install version in the tutorial + + +# v0.12.0 (2018-11-13) + +## Major new features +- Spack environments +- `spack.yaml` and `spack.lock` files for tracking dependencies +- Custom configurations via command line +- Better support for linking Python packages into view directories +- Packages have more control over compiler flags via flag handlers +- Better support for module file generation +- Better support for Intel compilers, Intel MPI, etc. +- Many performance improvements, improved startup time + +## License +- As of this release, all of Spack is permissively licensed under Apache-2.0 or MIT, at the user's option. +- Consents from over 300 contributors were obtained to make this relicense possible. +- Previous versions were distributed under the LGPL license, version 2.1. + +## New packages +Over 2,900 packages (800 added since last year) + +Spack would not be possible without our community. Thanks to all of our +[contributors](https://github.com/spack/spack/graphs/contributors) for the +new features and packages in this release! + + +# v0.11.2 (2018-02-07) + +This release contains the following fixes: + +* Fixes for `gfortran` 7 compiler detection (#7017) +* Fixes for exceptions thrown during module generation (#7173) + + +# v0.11.1 (2018-01-19) + +This release contains bugfixes for compiler flag handling. There were issues in `v0.11.0` that caused some packages to be built without proper optimization. + +Fixes: +* Issue #6999: FFTW installed with Spack 0.11.0 gets built without optimisations + +Includes: +* PR #6415: Fixes for flag handling behavior +* PR #6960: Fix type issues with setting flag handlers +* 880e319: Upstream fixes to `list_url` in various R packages + + +# v0.11.0 (2018-01-17) + +Spack v0.11.0 contains many improvements since v0.10.0. +Below is a summary of the major features, broken down by category. + +## New packages +- Spack now has 2,178 packages (from 1,114 in v0.10.0) +- Many more Python packages (356) and R packages (471) +- 48 Exascale Proxy Apps (try `spack list -t proxy-app`) + + +## Core features for users +- Relocatable binary packages (`spack buildcache`, #4854) +- Spack now fully supports Python 3 (#3395) +- Packages can be tagged and searched by tags (#4786) +- Custom module file templates using Jinja (#3183) +- `spack bootstrap` command now sets up a basic module environment (#3057) +- Simplified and better organized help output (#3033) +- Improved, less redundant `spack install` output (#5714, #5950) +- Reworked `spack dependents` and `spack dependencies` commands (#4478) + + +## Major new features for packagers +- Multi-valued variants (#2386) +- New `conflicts()` directive (#3125) +- New dependency type: `test` dependencies (#5132) +- Packages can require their own patches on dependencies (#5476) + - `depends_on(..., patches=)` +- Build interface for passing linker information through Specs (#1875) + - Major packages that use blas/lapack now use this interface +- Flag handlers allow packages more control over compiler flags (#6415) +- Package subclasses support many more build systems: + - autotools, perl, qmake, scons, cmake, makefile, python, R, WAF + - package-level support for installing Intel HPC products (#4300) +- `spack blame` command shows contributors to packages (#5522) +- `spack create` now guesses many more build systems (#2707) +- Better URL parsing to guess package version URLs (#2972) +- Much improved `PythonPackage` support (#3367) + + +## Core +- Much faster concretization (#5716, #5783) +- Improved output redirection (redirecting build output works properly #5084) +- Numerous improvements to internal structure and APIs + + +## Tutorials & Documentation +- Many updates to documentation +- [New tutorial material from SC17](https://spack.readthedocs.io/en/latest/tutorial.html) + - configuration + - build systems + - build interface + - working with module generation +- Documentation on docker workflows and best practices + + +## Selected improvements and bug fixes +- No longer build Python eggs -- installations are plain directories (#3587) +- Improved filtering of system paths from build PATHs and RPATHs (#2083, #3910) +- Git submodules are properly handled on fetch (#3956) +- Can now set default number of parallel build jobs in `config.yaml` +- Improvements to `setup-env.csh` (#4044) +- Better default compiler discovery on Mac OS X (#3427) + - clang will automatically mix with gfortran +- Improved compiler detection on Cray machines (#3075) +- Better support for IBM XL compilers +- Better tab completion +- Resume gracefully after prematurely terminated partial installs (#4331) +- Better mesa support (#5170) + + +Spack would not be possible without our community. Thanks to all of our +[contributors](https://github.com/spack/spack/graphs/contributors) for the +new features and packages in this release! + + +# v0.10.0 (2017-01-17) + +This is Spack `v0.10.0`. With this release, we will start to push Spack +releases more regularly. This is the last Spack release without +automated package testing. With the next release, we will begin to run +package tests in addition to unit tests. + +Spack has grown rapidly from 422 to +[1,114 packages](https://spack.readthedocs.io/en/v0.10.0/package_list.html), +thanks to the hard work of over 100 contributors. Below is a condensed +version of all the changes since `v0.9.1`. + +### Packages +- Grew from 422 to 1,114 packages + - Includes major updates like X11, Qt + - Expanded HPC, R, and Python ecosystems + +### Core +- Major speed improvements for spack find and concretization +- Completely reworked architecture support + - Platforms can have front-end and back-end OS/target combinations + - Much better support for Cray and BG/Q cross-compiled environments +- Downloads are now cached locally +- Support installations in deeply nested directories: patch long shebangs using `sbang` + +### Basic usage +- Easier global configuration via config.yaml + - customize install, stage, and cache locations +- Hierarchical configuration scopes: default, site, user + - Platform-specific scopes allow better per-platform defaults +- Ability to set `cflags`, `cxxflags`, `fflags` on the command line +- YAML-configurable support for both Lmod and tcl modules in mainline +- `spack install` supports --dirty option for emergencies + +### For developers +- Support multiple dependency types: `build`, `link`, and `run` +- Added `Package` base classes for custom build systems + - `AutotoolsPackage`, `CMakePackage`, `PythonPackage`, etc. + - `spack create` now guesses many more build systems +- Development environment integration with `spack setup` +- New interface to pass linking information via `spec` objects + - Currently used for `BLAS`/`LAPACK`/`SCALAPACK` libraries + - Polymorphic virtual dependency attributes: `spec['blas'].blas_libs` + +### Testing & Documentation +- Unit tests run continuously on Travis CI for Mac and Linux +- Switched from `nose` to `pytest` for unit tests. + - Unit tests take 1 minute now instead of 8 +- Massively expanded documentation +- Docs are now hosted on [spack.readthedocs.io](http://spack.readthedocs.io)