Skip to content

Commit

Permalink
Merge #853
Browse files Browse the repository at this point in the history
853: Prepare for the next release r=taiki-e a=taiki-e

- crossbeam-utils 0.8.9 -> 0.8.10
  - Fix unsoundness of `AtomicCell` on types containing niches. (#834)
    This fix contains breaking changes, but they are allowed because this is a soundness bug fix. See #834 for more.


Co-authored-by: Taiki Endo <te316e89@gmail.com>
  • Loading branch information
bors[bot] and taiki-e committed Jun 23, 2022
2 parents 9e9ff76 + 3c86b9b commit f12133c
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 8 deletions.
3 changes: 1 addition & 2 deletions .github/workflows/ci.yml
Expand Up @@ -160,9 +160,8 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
# TODO: unpin nightly toolchain once https://github.com/rust-lang/miri/issues/2223 fixed.
- name: Install Rust
run: rustup toolchain install nightly-2022-06-08 --component miri && rustup default nightly-2022-06-08
run: rustup toolchain install nightly --component miri && rustup default nightly
- name: miri
run: ./ci/miri.sh

Expand Down
15 changes: 10 additions & 5 deletions ci/miri.sh
Expand Up @@ -5,30 +5,35 @@ cd "$(dirname "$0")"/..

export RUSTFLAGS="${RUSTFLAGS:-} -Z randomize-layout"

MIRIFLAGS="-Zmiri-strict-provenance -Zmiri-symbolic-alignment-check -Zmiri-disable-isolation" \
# disable preemption due to https://github.com/rust-lang/rust/issues/55005
MIRIFLAGS="-Zmiri-strict-provenance -Zmiri-symbolic-alignment-check -Zmiri-disable-isolation -Zmiri-preemption-rate=0" \
cargo miri test \
-p crossbeam-queue \
-p crossbeam-utils

# -Zmiri-ignore-leaks is needed because we use detached threads in tests/docs: https://github.com/rust-lang/miri/issues/1371
MIRIFLAGS="-Zmiri-strict-provenance -Zmiri-symbolic-alignment-check -Zmiri-disable-isolation -Zmiri-ignore-leaks" \
# disable preemption due to https://github.com/rust-lang/rust/issues/55005
MIRIFLAGS="-Zmiri-strict-provenance -Zmiri-symbolic-alignment-check -Zmiri-disable-isolation -Zmiri-ignore-leaks -Zmiri-preemption-rate=0" \
cargo miri test \
-p crossbeam-channel

# -Zmiri-ignore-leaks is needed for https://github.com/crossbeam-rs/crossbeam/issues/579
# -Zmiri-disable-stacked-borrows is needed for https://github.com/crossbeam-rs/crossbeam/issues/545
MIRIFLAGS="-Zmiri-check-number-validity -Zmiri-symbolic-alignment-check -Zmiri-disable-isolation -Zmiri-disable-stacked-borrows -Zmiri-ignore-leaks" \
# disable preemption due to https://github.com/rust-lang/rust/issues/55005
MIRIFLAGS="-Zmiri-check-number-validity -Zmiri-symbolic-alignment-check -Zmiri-disable-isolation -Zmiri-disable-stacked-borrows -Zmiri-ignore-leaks -Zmiri-preemption-rate=0" \
cargo miri test \
-p crossbeam-epoch \
-p crossbeam-skiplist

# -Zmiri-ignore-leaks is needed for https://github.com/crossbeam-rs/crossbeam/issues/579
# -Zmiri-disable-stacked-borrows is needed for https://github.com/crossbeam-rs/crossbeam/issues/545
MIRIFLAGS="-Zmiri-check-number-validity -Zmiri-symbolic-alignment-check -Zmiri-disable-stacked-borrows -Zmiri-ignore-leaks -Zmiri-compare-exchange-weak-failure-rate=0.0" \
# disable preemption due to https://github.com/rust-lang/rust/issues/55005
MIRIFLAGS="-Zmiri-check-number-validity -Zmiri-symbolic-alignment-check -Zmiri-disable-stacked-borrows -Zmiri-ignore-leaks -Zmiri-compare-exchange-weak-failure-rate=0.0 -Zmiri-preemption-rate=0" \
cargo miri test \
-p crossbeam-deque

# -Zmiri-ignore-leaks is needed for https://github.com/crossbeam-rs/crossbeam/issues/579
MIRIFLAGS="-Zmiri-check-number-validity -Zmiri-symbolic-alignment-check -Zmiri-ignore-leaks" \
# disable preemption due to https://github.com/rust-lang/rust/issues/55005
MIRIFLAGS="-Zmiri-check-number-validity -Zmiri-symbolic-alignment-check -Zmiri-ignore-leaks -Zmiri-preemption-rate=0" \
cargo miri test \
-p crossbeam
5 changes: 5 additions & 0 deletions crossbeam-utils/CHANGELOG.md
@@ -1,3 +1,8 @@
# Version 0.8.10

- Fix unsoundness of `AtomicCell` on types containing niches. (#834)
This fix contains breaking changes, but they are allowed because this is a soundness bug fix. See #834 for more.

# Version 0.8.9

- Replace lazy_static with once_cell. (#817)
Expand Down
2 changes: 1 addition & 1 deletion crossbeam-utils/Cargo.toml
Expand Up @@ -4,7 +4,7 @@ name = "crossbeam-utils"
# - Update CHANGELOG.md
# - Update README.md
# - Create "crossbeam-utils-X.Y.Z" git tag
version = "0.8.9"
version = "0.8.10"
edition = "2018"
rust-version = "1.36"
license = "MIT OR Apache-2.0"
Expand Down
49 changes: 49 additions & 0 deletions tools/publish.sh
@@ -0,0 +1,49 @@
#!/bin/bash
set -euo pipefail
IFS=$'\n\t'
cd "$(dirname "$0")"/..

# Publish a new release.
#
# USAGE:
# ./tools/publish.sh <CRATE> <VERSION>

bail() {
echo >&2 "error: $*"
exit 1
}

crate="${1:?}"
version="${2:?}"
version="${version#v}"
tag="${crate}-${version}"
if [[ ! "${version}" =~ ^[0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z\.-]+)?(\+[0-9A-Za-z\.-]+)?$ ]]; then
bail "invalid version format '${version}'"
fi
if [[ $# -gt 2 ]]; then
bail "invalid argument '$3'"
fi

# Make sure there is no uncommitted change.
git diff --exit-code
git diff --exit-code --staged

# Make sure the same release has not been created in the past.
if gh release view "${tag}" &>/dev/null; then
bail "tag '${tag}' has already been created and pushed"
fi

if ! git branch | grep -q '\* master'; then
bail "current branch is not 'master'"
fi

git tag "${tag}"

(
if [[ "${crate}" != "crossbeam" ]]; then
cd "${crate}"
fi
cargo publish
)

git push origin --tags

0 comments on commit f12133c

Please sign in to comment.