|
| 1 | +# v0.13.0 (2019-10-25) |
| 2 | + |
| 3 | +`v0.13.0` is our biggest Spack release yet, with *many* new major features. |
| 4 | +From facility deployment to improved environments, microarchitecture |
| 5 | +support, and auto-generated build farms, this release has features for all of |
| 6 | +our users. |
| 7 | + |
| 8 | +Spack grew by over 700 packages in the past year, and the project now has |
| 9 | +over 450 contributors. Thanks to all of you for making this release possible. |
| 10 | + |
| 11 | +## Major new core features |
| 12 | +- Chaining: use dependencies from external "upstream" Spack instances |
| 13 | +- Environments now behave more like virtualenv/conda |
| 14 | + - Each env has a *view*: a directory with all packages symlinked in |
| 15 | + - Activating an environment sets `PATH`, `LD_LIBRARY_PATH`, `CPATH`, |
| 16 | + `CMAKE_PREFIX_PATH`, `PKG_CONFIG_PATH`, etc. to point to this view. |
| 17 | +- Spack detects and builds specifically for your microarchitecture |
| 18 | + - named, understandable targets like `skylake`, `broadwell`, `power9`, `zen2` |
| 19 | + - Spack knows which compilers can build for which architectures |
| 20 | + - Packages can easily query support for features like `avx512` and `sse3` |
| 21 | + - You can pick a target with, e.g. `spack install foo target=icelake` |
| 22 | +- Spack stacks: combinatorial environments for facility deployment |
| 23 | + - Environments can now build cartesian products of specs (with `matrix:`) |
| 24 | + - Conditional syntax support to exclude certain builds from the stack |
| 25 | +- Projections: ability to build easily navigable symlink trees environments |
| 26 | +- Support no-source packages (BundlePackage) to aggregate related packages |
| 27 | +- Extensions: users can write custom commands that live outside of Spack repo |
| 28 | +- Support ARM and Fujitsu compilers |
| 29 | + |
| 30 | +## CI/build farm support |
| 31 | +- `spack release-jobs` can detect `package.py` changes and generate |
| 32 | + `.gitlab-ci.yml` to create binaries for an environment or stack |
| 33 | + in parallel (initial support -- will change in future release). |
| 34 | +- Results of build pipelines can be uploaded to a CDash server. |
| 35 | +- Spack can now upload/fetch from package mirrors in Amazon S3 |
| 36 | + |
| 37 | +## New commands/options |
| 38 | +- `spack mirror create --all` downloads *all* package sources/resources/patches |
| 39 | +- `spack dev-build` runs phases of the install pipeline on the working directory |
| 40 | +- `spack deprecate` permanently symlinks an old, unwanted package to a new one |
| 41 | +- `spack verify` chcecks that packages' files match what was originally installed |
| 42 | +- `spack find --json` prints `JSON` that is easy to parse with, e.g. `jq` |
| 43 | +- `spack find --format FORMAT` allows you to flexibly print package metadata |
| 44 | +- `spack spec --json` prints JSON version of `spec.yaml` |
| 45 | + |
| 46 | +## Selected improvements |
| 47 | +- Auto-build requested compilers if they do not exist |
| 48 | +- Spack automatically adds `RPATHs` needed to make executables find compiler |
| 49 | + runtime libraries (e.g., path to newer `libstdc++` in `icpc` or `g++`) |
| 50 | +- setup-env.sh is now compatible with Bash, Dash, and Zsh |
| 51 | +- Spack now caps build jobs at min(16, ncores) by default |
| 52 | +- `spack compiler find` now also throttles number of spawned processes |
| 53 | +- Spack now writes stage directories directly to `$TMPDIR` instead of |
| 54 | + symlinking stages within `$spack/var/spack/cache`. |
| 55 | +- Improved and more powerful `spec` format strings |
| 56 | +- You can pass a `spec.yaml` file anywhere in the CLI you can type a spec. |
| 57 | +- Many improvements to binary caching |
| 58 | +- Gradually supporting new features from Environment Modules v4 |
| 59 | +- `spack edit` respects `VISUAL` environment variable |
| 60 | +- Simplified package syntax for specifying build/run environment modifications |
| 61 | +- Numerous improvements to support for environments across Spack commands |
| 62 | +- Concretization improvements |
| 63 | + |
| 64 | +## Documentation |
| 65 | +- Multi-lingual documentation (Started a Japanese translation) |
| 66 | +- Tutorial now has its own site at spack-tutorial.readthedocs.io |
| 67 | + - This enables us to keep multiple versions of the tutorial around |
| 68 | + |
| 69 | +## Deprecations |
| 70 | +- Spack no longer supports dotkit (LLNL's homegrown, now deprecated module tool) |
| 71 | +- `spack build`, `spack configure`, `spack diy` deprecated in favor of |
| 72 | + `spack dev-build` and `spack install` |
| 73 | + |
| 74 | +## Important package changes |
| 75 | +- 3,563 total packages (718 added since 0.12.1) |
| 76 | +- Spack now defaults to Python 3 (previously preferred 2.7 by default) |
| 77 | +- Much improved ARM support thanks to Fugaku (RIKEN) and SNL teams |
| 78 | +- Support new special versions: master, trunk, and head (in addition to develop) |
| 79 | +- Better finding logic for libraries and headers |
| 80 | + |
| 81 | + |
| 82 | +# v0.12.1 (2018-11-13) |
| 83 | + |
| 84 | +This is a minor bugfix release, with a minor fix in the tutorial and a `flake8` fix. |
| 85 | + |
| 86 | +Bugfixes |
| 87 | +* Add `r` back to regex strings in binary distribution |
| 88 | +* Fix gcc install version in the tutorial |
| 89 | + |
| 90 | + |
| 91 | +# v0.12.0 (2018-11-13) |
| 92 | + |
| 93 | +## Major new features |
| 94 | +- Spack environments |
| 95 | +- `spack.yaml` and `spack.lock` files for tracking dependencies |
| 96 | +- Custom configurations via command line |
| 97 | +- Better support for linking Python packages into view directories |
| 98 | +- Packages have more control over compiler flags via flag handlers |
| 99 | +- Better support for module file generation |
| 100 | +- Better support for Intel compilers, Intel MPI, etc. |
| 101 | +- Many performance improvements, improved startup time |
| 102 | + |
| 103 | +## License |
| 104 | +- As of this release, all of Spack is permissively licensed under Apache-2.0 or MIT, at the user's option. |
| 105 | +- Consents from over 300 contributors were obtained to make this relicense possible. |
| 106 | +- Previous versions were distributed under the LGPL license, version 2.1. |
| 107 | + |
| 108 | +## New packages |
| 109 | +Over 2,900 packages (800 added since last year) |
| 110 | + |
| 111 | +Spack would not be possible without our community. Thanks to all of our |
| 112 | +[contributors](https://github.com/spack/spack/graphs/contributors) for the |
| 113 | +new features and packages in this release! |
| 114 | + |
| 115 | + |
| 116 | +# v0.11.2 (2018-02-07) |
| 117 | + |
| 118 | +This release contains the following fixes: |
| 119 | + |
| 120 | +* Fixes for `gfortran` 7 compiler detection (#7017) |
| 121 | +* Fixes for exceptions thrown during module generation (#7173) |
| 122 | + |
| 123 | + |
| 124 | +# v0.11.1 (2018-01-19) |
| 125 | + |
| 126 | +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. |
| 127 | + |
| 128 | +Fixes: |
| 129 | +* Issue #6999: FFTW installed with Spack 0.11.0 gets built without optimisations |
| 130 | + |
| 131 | +Includes: |
| 132 | +* PR #6415: Fixes for flag handling behavior |
| 133 | +* PR #6960: Fix type issues with setting flag handlers |
| 134 | +* 880e319: Upstream fixes to `list_url` in various R packages |
| 135 | + |
| 136 | + |
| 137 | +# v0.11.0 (2018-01-17) |
| 138 | + |
| 139 | +Spack v0.11.0 contains many improvements since v0.10.0. |
| 140 | +Below is a summary of the major features, broken down by category. |
| 141 | + |
| 142 | +## New packages |
| 143 | +- Spack now has 2,178 packages (from 1,114 in v0.10.0) |
| 144 | +- Many more Python packages (356) and R packages (471) |
| 145 | +- 48 Exascale Proxy Apps (try `spack list -t proxy-app`) |
| 146 | + |
| 147 | + |
| 148 | +## Core features for users |
| 149 | +- Relocatable binary packages (`spack buildcache`, #4854) |
| 150 | +- Spack now fully supports Python 3 (#3395) |
| 151 | +- Packages can be tagged and searched by tags (#4786) |
| 152 | +- Custom module file templates using Jinja (#3183) |
| 153 | +- `spack bootstrap` command now sets up a basic module environment (#3057) |
| 154 | +- Simplified and better organized help output (#3033) |
| 155 | +- Improved, less redundant `spack install` output (#5714, #5950) |
| 156 | +- Reworked `spack dependents` and `spack dependencies` commands (#4478) |
| 157 | + |
| 158 | + |
| 159 | +## Major new features for packagers |
| 160 | +- Multi-valued variants (#2386) |
| 161 | +- New `conflicts()` directive (#3125) |
| 162 | +- New dependency type: `test` dependencies (#5132) |
| 163 | +- Packages can require their own patches on dependencies (#5476) |
| 164 | + - `depends_on(..., patches=<patch list>)` |
| 165 | +- Build interface for passing linker information through Specs (#1875) |
| 166 | + - Major packages that use blas/lapack now use this interface |
| 167 | +- Flag handlers allow packages more control over compiler flags (#6415) |
| 168 | +- Package subclasses support many more build systems: |
| 169 | + - autotools, perl, qmake, scons, cmake, makefile, python, R, WAF |
| 170 | + - package-level support for installing Intel HPC products (#4300) |
| 171 | +- `spack blame` command shows contributors to packages (#5522) |
| 172 | +- `spack create` now guesses many more build systems (#2707) |
| 173 | +- Better URL parsing to guess package version URLs (#2972) |
| 174 | +- Much improved `PythonPackage` support (#3367) |
| 175 | + |
| 176 | + |
| 177 | +## Core |
| 178 | +- Much faster concretization (#5716, #5783) |
| 179 | +- Improved output redirection (redirecting build output works properly #5084) |
| 180 | +- Numerous improvements to internal structure and APIs |
| 181 | + |
| 182 | + |
| 183 | +## Tutorials & Documentation |
| 184 | +- Many updates to documentation |
| 185 | +- [New tutorial material from SC17](https://spack.readthedocs.io/en/latest/tutorial.html) |
| 186 | + - configuration |
| 187 | + - build systems |
| 188 | + - build interface |
| 189 | + - working with module generation |
| 190 | +- Documentation on docker workflows and best practices |
| 191 | + |
| 192 | + |
| 193 | +## Selected improvements and bug fixes |
| 194 | +- No longer build Python eggs -- installations are plain directories (#3587) |
| 195 | +- Improved filtering of system paths from build PATHs and RPATHs (#2083, #3910) |
| 196 | +- Git submodules are properly handled on fetch (#3956) |
| 197 | +- Can now set default number of parallel build jobs in `config.yaml` |
| 198 | +- Improvements to `setup-env.csh` (#4044) |
| 199 | +- Better default compiler discovery on Mac OS X (#3427) |
| 200 | + - clang will automatically mix with gfortran |
| 201 | +- Improved compiler detection on Cray machines (#3075) |
| 202 | +- Better support for IBM XL compilers |
| 203 | +- Better tab completion |
| 204 | +- Resume gracefully after prematurely terminated partial installs (#4331) |
| 205 | +- Better mesa support (#5170) |
| 206 | + |
| 207 | + |
| 208 | +Spack would not be possible without our community. Thanks to all of our |
| 209 | +[contributors](https://github.com/spack/spack/graphs/contributors) for the |
| 210 | +new features and packages in this release! |
| 211 | + |
| 212 | + |
| 213 | +# v0.10.0 (2017-01-17) |
| 214 | + |
| 215 | +This is Spack `v0.10.0`. With this release, we will start to push Spack |
| 216 | +releases more regularly. This is the last Spack release without |
| 217 | +automated package testing. With the next release, we will begin to run |
| 218 | +package tests in addition to unit tests. |
| 219 | + |
| 220 | +Spack has grown rapidly from 422 to |
| 221 | +[1,114 packages](https://spack.readthedocs.io/en/v0.10.0/package_list.html), |
| 222 | +thanks to the hard work of over 100 contributors. Below is a condensed |
| 223 | +version of all the changes since `v0.9.1`. |
| 224 | + |
| 225 | +### Packages |
| 226 | +- Grew from 422 to 1,114 packages |
| 227 | + - Includes major updates like X11, Qt |
| 228 | + - Expanded HPC, R, and Python ecosystems |
| 229 | + |
| 230 | +### Core |
| 231 | +- Major speed improvements for spack find and concretization |
| 232 | +- Completely reworked architecture support |
| 233 | + - Platforms can have front-end and back-end OS/target combinations |
| 234 | + - Much better support for Cray and BG/Q cross-compiled environments |
| 235 | +- Downloads are now cached locally |
| 236 | +- Support installations in deeply nested directories: patch long shebangs using `sbang` |
| 237 | + |
| 238 | +### Basic usage |
| 239 | +- Easier global configuration via config.yaml |
| 240 | + - customize install, stage, and cache locations |
| 241 | +- Hierarchical configuration scopes: default, site, user |
| 242 | + - Platform-specific scopes allow better per-platform defaults |
| 243 | +- Ability to set `cflags`, `cxxflags`, `fflags` on the command line |
| 244 | +- YAML-configurable support for both Lmod and tcl modules in mainline |
| 245 | +- `spack install` supports --dirty option for emergencies |
| 246 | + |
| 247 | +### For developers |
| 248 | +- Support multiple dependency types: `build`, `link`, and `run` |
| 249 | +- Added `Package` base classes for custom build systems |
| 250 | + - `AutotoolsPackage`, `CMakePackage`, `PythonPackage`, etc. |
| 251 | + - `spack create` now guesses many more build systems |
| 252 | +- Development environment integration with `spack setup` |
| 253 | +- New interface to pass linking information via `spec` objects |
| 254 | + - Currently used for `BLAS`/`LAPACK`/`SCALAPACK` libraries |
| 255 | + - Polymorphic virtual dependency attributes: `spec['blas'].blas_libs` |
| 256 | + |
| 257 | +### Testing & Documentation |
| 258 | +- Unit tests run continuously on Travis CI for Mac and Linux |
| 259 | +- Switched from `nose` to `pytest` for unit tests. |
| 260 | + - Unit tests take 1 minute now instead of 8 |
| 261 | +- Massively expanded documentation |
| 262 | +- Docs are now hosted on [spack.readthedocs.io](http://spack.readthedocs.io) |
0 commit comments