263 lines
11 KiB
Markdown
263 lines
11 KiB
Markdown
|
# 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=<patch list>)`
|
||
|
- 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)
|