v0.17.0
版本发布时间: 2021-11-06 08:25:28
spack/spack最新发布版本:v0.21.3(2024-10-03 18:44:31)
v0.17.0 (2021-11-05)
v0.17.0
is a major feature release.
Major features in this release
-
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 logic programming system, and it enables us to do much higher quality and faster dependency solving The old concretizer is still available via theconcretizer: original
setting, but it is deprecated and will be removed inv0.18.0
. -
Binary Bootstrapping To make it easier to use the new concretizer and binary packages, Spack now bootstraps
clingo
andGnuPG
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). -
Reuse existing packages (experimental) The most wanted feature from our 2020 user survey and the most wanted Spack feature of all time (#25310).
spack install
,spack spec
, andspack 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 inv0.17.1
. It will become the default concretization mode inv0.18.0
. -
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).
-
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). -
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. -
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. -
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. -
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 withspack 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 forspack find --loaded
(#27184) -
spack gpg
can export private key with--secret
(#22557) -
spack style
automatically bootstraps dependencies (#24819) -
spack style --fix
automatically invokesisort
(#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 (#23804, #24321, #23777, #25928)) -
spack python --path
shows whichpython
Spack is using (#22006) -
spack env activate --temp
can create temporary environments (#25388) -
--preferred
and--latest
options forspack checksum
(#25830) -
cc
is now pure posix and runs on Alpine (#26259) -
SPACK_PYTHON
environment variable sets whichpython
spack uses (#21222) -
SPACK_SKIP_MODULES
lets you sourcesetup-env.sh
faster if you don't need modules (#24545)
Major internal refactors
-
spec.yaml
files are nowspec.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) -
spack arch --generic
lets you get the best generic architecture for your node (#27061) - added support for aocc (#20124),
arm
compiler ongraviton2
(#24904) and ona64fx
(#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 - 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
- 0.17.x is the last Spack release series that will support Python 2.6. We will no longer retain 2.6 compatibility in
develop
and it will be unsupported in 0.18. -
spack setup
was deprecated in v0.16.0, and has now been removed. Usespack develop
andspack dev-build
. - Remove unused
--dependencies
flag fromspack 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 ifspack.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 swappinglua
andluajit
(#22492) - Better support for
ld.gold
andld.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 inferhomepage
/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
1、 spack-0.17.0.tar.gz 6.44MB