Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 24 additions & 2 deletions .github/license-check/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
],
"exclude": [
"target",
"scripts/**/*.rs"
"scripts/**/*.rs",
"crates/multitude/scripts/**/*.rs"
],
"license": "./.github/license-check/slash-slash.txt"
},
Expand All @@ -23,14 +24,35 @@

{
"include": [
"scripts/**/*.rs"
"scripts/**/*.rs",
"crates/multitude/scripts/*.rs"
],
"exclude": [
"scripts/crate-template/**/*.rs"
],
"license": "./.github/license-check/hash.txt"
},

{
"include": [
"**/*.sh"
],
"exclude": [
"target"
],
"license": "./.github/license-check/hash.txt"
},

{
"include": [
"**/*.py"
],
"exclude": [
"target"
],
"license": "./.github/license-check/hash.txt"
},

{
"include": [
"**/*.toml",
Expand Down
44 changes: 42 additions & 2 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -280,10 +280,50 @@ jobs:
- name: Careful
if: success() || failure()
run: cargo +${{ env.RUST_NIGHTLY }} careful nextest run --all-features --workspace ${{ needs.delta.outputs.exclude_not_affected }} --color always --target ${{ matrix.target }}
- name: Miri
- name: Miri (stacked borrows)
if: success() || failure()
run: cargo +${{ env.RUST_NIGHTLY }} miri test --all-features --workspace ${{ needs.delta.outputs.exclude_not_affected }} --lib --tests

model-checking:
if: github.event_name == 'pull_request' && needs.delta.outputs.skip != 'true'
needs: [delta, testing]
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
# prep
- name: Checkout
uses: actions/checkout@v6.0.2
- name: Setup
uses: ./.github/actions/setup
with:
enable-sccache: true
rust-toolchain: RUST_LATEST
cargo-tools: JUST_VERSION

# execute
- name: Loom
run: just loom

fuzz-testing:
if: github.event_name == 'pull_request' && needs.delta.outputs.skip != 'true'
needs: [delta, testing]
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
# prep
- name: Checkout
uses: actions/checkout@v6.0.2
- name: Setup
uses: ./.github/actions/setup
with:
enable-sccache: true
rust-toolchain: RUST_NIGHTLY
cargo-tools: CARGO_BOLERO_VERSION, JUST_VERSION

# execute
- name: Bolero
run: just bolero 60s

mutation-testing:
if: github.event_name == 'pull_request'
needs: [testing]
Expand All @@ -306,7 +346,7 @@ jobs:
- name: Generate PR Diff
run: git diff origin/main...HEAD >diff.txt
- name: Mutate Diff
timeout-minutes: 45
timeout-minutes: 240
run: cargo +${{ env.RUST_NIGHTLY }} -Zscript scripts/mutants.rs --in-place --in-diff diff.txt

coverage:
Expand Down
81 changes: 78 additions & 3 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ jobs:
fetch-depth: 0

- name: Check for changes in last 24 hours
id: check
run: |
# Check logs for commits in the last 24 hours on the current branch
if [[ -z $(git log --since="24 hours ago" --pretty=format:"%H") ]]; then
Expand All @@ -34,8 +35,6 @@ jobs:
needs: [nightly-gatekeeper]
if: ${{ needs.nightly-gatekeeper.outputs.should_skip != 'true' }}
runs-on: ubuntu-latest
permissions:
issues: write
steps:
# prep
- name: Checkout
Expand All @@ -52,8 +51,84 @@ jobs:
- name: Mutate All
run: cargo +${{ env.RUST_NIGHTLY }} -Zscript scripts/mutants.rs

miri-tree-borrows:
needs: [nightly-gatekeeper]
if: ${{ needs.nightly-gatekeeper.outputs.should_skip != 'true' }}
runs-on: ubuntu-latest
steps:
# prep
- name: Checkout
uses: actions/checkout@v6.0.2
- name: Setup
uses: ./.github/actions/setup
with:
enable-sccache: true
rust-toolchain: RUST_NIGHTLY
rust-components: miri

# execute
- name: Miri (tree borrows)
env:
MIRIFLAGS: -Zmiri-tree-borrows
run: cargo +${{ env.RUST_NIGHTLY }} miri test --all-features --workspace --lib --tests

miri-strict-provenance:
needs: [nightly-gatekeeper]
if: ${{ needs.nightly-gatekeeper.outputs.should_skip != 'true' }}
runs-on: ubuntu-latest
steps:
# prep
- name: Checkout
uses: actions/checkout@v6.0.2
- name: Setup
uses: ./.github/actions/setup
with:
enable-sccache: true
rust-toolchain: RUST_NIGHTLY
rust-components: miri

# execute
- name: Miri (strict provenance)
env:
MIRIFLAGS: -Zmiri-strict-provenance
run: cargo +${{ env.RUST_NIGHTLY }} miri test --all-features --workspace --lib --tests

miri-race-coverage:
needs: [nightly-gatekeeper]
if: ${{ needs.nightly-gatekeeper.outputs.should_skip != 'true' }}
runs-on: ubuntu-latest
steps:
# prep
- name: Checkout
uses: actions/checkout@v6.0.2
- name: Setup
uses: ./.github/actions/setup
with:
enable-sccache: true
rust-toolchain: RUST_NIGHTLY
rust-components: miri

# execute
- name: Miri (race coverage)
env:
MIRIFLAGS: -Zmiri-many-seeds=0..32
run: cargo +${{ env.RUST_NIGHTLY }} miri test --all-features --workspace --lib --tests

report-failure:
needs:
- nightly-gatekeeper
- mutation-testing
- miri-tree-borrows
- miri-strict-provenance
- miri-race-coverage
# `always()` ensures we still run when a dependency fails; the
# gatekeeper guard skips the report on no-op nights.
if: ${{ always() && needs.nightly-gatekeeper.outputs.should_skip != 'true' && contains(needs.*.result, 'failure') }}
runs-on: ubuntu-slim
permissions:
issues: write
steps:
- name: Create or Update Issue on Failure
if: failure()
env:
GH_TOKEN: ${{ github.token }}
run: |
Expand Down
151 changes: 151 additions & 0 deletions .spelling
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ C-RW-VALUE
C-SERDE
C-SMART-PTR
deallocate
deallocated
Debuggability
Deduplicate
deduplicating
Expand Down Expand Up @@ -369,3 +370,153 @@ infallible
unescaped
spawners
unlayered
191
+
=
Comment thread
geeknoid marked this conversation as resolved.
ARM64
CLI
CSE
DST
DST's
DSTs
Decrement
Extended
FFI
Iter
LLVM
MiB
Pluggable
Preallocated
RMW
RMWs
Rc
Resize
SSO
Serializers
UB
Unlink
Utf16Str
Utf16String
ZST
_arc
_rc
accessor
accessors
alloc
allocator's
allocators
atomics
boolean
bumpalo
bumpalo's
bytemuck
catchable
chunked
cmp
codecov
cutover
deallocating
deallocation
dec
decrement
decrementer
decrementers
deps
deref
dereference
derefs
deserializer
destructor
dropck
dst
elidable
end_offset
entry_offset
ffi
formatter's
github
growable
iff
incrementing
init
inlines
instantiation
interleavings
interoperable
invariants
io
iterator's
jemalloc
lexicographically
md
memcpy
multitude
oversized
parsers
pointee
polyfill
preallocate
preallocating
preallocation
prefetch
rc's
reclaimer
reclaimers
refactor
refcount
refcounted
refcounting
refcounts
reified
reimplementing
reinitializes
repurpose
repurposed
repurposing
retag
retarget
rewrapped
roundtrip
sanitizer
sanitizers
sharable
subcommand
teardown
teardowns
transcode
transcoded
transcodes
transcoding
unallocated
undrained
unlink
unlinked
unlinks
value_offset
x86
yaml
yml
zerocopy
~
§4
×
Deserializing
Hyper
Inlined
TOML
serde's
uninit
BMP
preallocated
precompute
codegen
initializer
monomorphize
sret
ABI
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ Please see each crate's change log below:
- [`fundle_macros_impl`](./crates/fundle_macros_impl/CHANGELOG.md)
- [`http_extensions`](./crates/http_extensions/CHANGELOG.md)
- [`layered`](./crates/layered/CHANGELOG.md)
- [`multitude`](./crates/multitude/CHANGELOG.md)
- [`ohno`](./crates/ohno/CHANGELOG.md)
- [`ohno_macros`](./crates/ohno_macros/CHANGELOG.md)
- [`recoverable`](./crates/recoverable/CHANGELOG.md)
Expand Down
Loading
Loading