v0.16.0
v0.16.0 (2020-11-18)
v0.16.0 is a major feature release.
Major features in this release
-
New concretizer (experimental) Our new backtracking concretizer is
now in Spack as an experimental feature. You will need to install
clingo@master+pythonand setconcretizer: clingoinconfig.yaml
to use it. The original concretizer is not exhaustive and is not
guaranteed to find a solution if one exists. We encourage you to use
the new concretizer and to report any bugs you find with it. We
anticipate making the new concretizer the default and including all
required dependencies for it in Spackv0.17. For more details, see
#19501. -
spack test (experimental) Users can add
test()methods to their
packages to run smoke tests on installations with the newspack test
command (the oldspack testis nowspack unit-test).spack test
is environment-aware, so you canspack installan environment and
spack test runsmoke tests on all of its packages. Historical test
logs can be perused withspack test results. Generic smoke tests for
MPI implementations, C, C++, and Fortran compilers as well as specific
smoke tests for 18 packages. This is marked experimental because the
test API (self.run_test()) is likely to be change, but we encourage
users to upstream tests, and we will maintain and refactor any that
are added to mainline packages (#15702). -
spack develop New
spack developcommand allows you to develop
several packages at once within a Spack environment. Running
spack develop foo@v1andspack develop bar@v2will check
out specific versions offooandbarinto subdirectories, which you
can then build incrementally withspack install(#15256). -
More parallelism Spack previously installed the dependencies of a
single spec in parallel. Entire environments can now be installed in
parallel, greatly accelerating builds of large environments. get
parallelism from individual specs. Spack now parallelizes entire
environment builds (#18131). -
Customizable base images for spack containerize
spack containerizepreviously only output aDockerfilebased
on official Spack images from Dockerhub. You may now specify
any base image of your choosing (#15028). -
more external finding
spack external findwas added inv0.15,
but onlycmakehad support.spack external findcan now find
bison,cuda,findutils,flex,git,lustrem4,mpich,
mvapich2,ncurses,openmpi,perl,spectrum-mpi,tar, and
texinfoon your system and add them automatically to
packages.yaml. -
Support aocc, nvhpc, and oneapi compilers We are aggressively
pursuing support for the newest vendor compilers, especially those for
the U.S. exascale and pre-exascale systems. Compiler classes and
auto-detection foraocc,nvhpc,oneapiare now in Spack (#19345,
#19294, #19330).
Additional new features of note
- New
spack markcommand can be used to designate packages as explicitly
installed, so thatspack gcwill not garbage-collect them (#16662). install_treecan be customized with Spack's projection format (#18341)sbangnow lives in theinstall_treeso that all users can access it (#11598)cshandtcshusers no longer need to setSPACK_ROOTbefore
sourcingsetup-env.csh(#18225)- Spec syntax now supports
variant=*syntax for finding any package
that has a particular variant (#19381). - Spack respects
SPACK_GNUPGHOMEvariable for custom GPG directories (#17139) - Spack now recognizes Graviton chips
Major refactors
- Use spawn instead of fork on Python >= 3.8 on macOS (#18205)
- Use indexes for public build caches (#19101, #19117, #19132, #19141, #19209)
sbangis an external package now (https://github.com/spack/sbang, #19582)archspecis an external package now (https://github.com/archspec/archspec, #19600)
Deprecations and Removals
spack bootstrapwas deprecated in v0.14.0, and has now been removed.spack setupis deprecated as of v0.16.0.- What was
spack testis now calledspack unit-test.spack testis
now the smoke testing feature in (2) above.
Bugfixes
Some of the most notable bugfixes in this release include:
- Better warning messages for deprecated syntax in
packages.yaml(#18013) buildcache list --allarchnow works properly (#17827)- Many fixes and tests for buildcaches and binary relocation (#15687,
*#17455, #17418, #17455, #15687, #18110)
Package Improvements
Spack now has 5050 total packages, 720 of which were added since v0.15.
- ROCm packages (
hip,aomp, more) added by AMD (#19957, #19832, others) - Many improvements for ARM support
llvm-flang,flang, andf18removed, asllvmhas realflang
support since Flang was merged to LLVM mainline- Emerging support for
spack external findandspack testin packages.
Infrastructure
- Major infrastructure improvements to pipelines on
gitlab.spack.io - Support for testing PRs from forks (#19248) is being enabled for all
forks to enable rolling, up-to-date binary builds ondevelop