Skip to content

Commit fa4184f

Browse files
Merge branch 'stx-develop' into feat/stackerdb-bandwith-config
2 parents abb074c + bb1aa5a commit fa4184f

136 files changed

Lines changed: 11050 additions & 4019 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.cargo/config.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[alias]
22
stacks-node = "run --package stacks-node --"
33
fmt-stacks = "fmt -- --config group_imports=StdExternalCrate,imports_granularity=Module"
4-
clippy-stacks = "clippy -p stx-genesis -p libstackerdb -p stacks-signer -p pox-locking -p clarity-types -p clarity -p libsigner -p stacks-common -p clarity-cli -p stacks-cli -p stacks-inspect -p stacks-profiler -p stacks-profiler-macros --no-deps --tests --all-features -- -D warnings -Aclippy::unnecessary_lazy_evaluations"
4+
clippy-stacks = "clippy -p stx-genesis -p libstackerdb -p stacks-signer -p pox-locking -p clarity-types -p clarity -p libsigner -p stacks-common -p stacks-codec -p clarity-cli -p stacks-cli -p stacks-inspect -p stacks-profiler -p stacks-profiler-macros --no-deps --tests --all-features -- -D warnings -Aclippy::unnecessary_lazy_evaluations"
55
clippy-stackslib = "clippy -p stackslib --no-deps -- -Aclippy::all -Wclippy::indexing_slicing -Wclippy::nonminimal_bool -Wclippy::clone_on_copy"
66

77
# Uncomment to improve performance slightly, at the cost of portability

.github/workflows/_ci.yml

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -124,9 +124,15 @@ jobs:
124124

125125
############################################################################
126126
### Release Check
127-
###
127+
###
128128
### Checks if this is a release build
129129
### If true, will execute release jobs
130+
###
131+
### Release detection only matters on the public repo. This job is depended
132+
### on only by the release-specific jobs (tests-epoch, create-release); the
133+
### regular CI/test jobs are intentionally decoupled from it, so it is safe
134+
### for this job to be skipped (and cascade-skip those release jobs) on
135+
### private forks.
130136
############################################################################
131137
check-release:
132138
name: "Check: Release"
@@ -167,7 +173,6 @@ jobs:
167173
name: "Check: Cargo Hack"
168174
needs:
169175
- check-changelog
170-
- check-release
171176
- check-rustfmt
172177
- setup-env
173178
if: >-
@@ -181,7 +186,6 @@ jobs:
181186
name: "Check: Constants"
182187
needs:
183188
- check-changelog
184-
- check-release
185189
- check-rustfmt
186190
- setup-env
187191
if: >-
@@ -195,11 +199,9 @@ jobs:
195199
name: "Setup: Test Caches"
196200
needs:
197201
- check-changelog
198-
- check-release
199202
- check-rustfmt
200203
- setup-env
201204
if: >-
202-
needs.check-release.outputs.is_release == 'true' ||
203205
needs.setup-env.outputs.job-should-run == 'true'
204206
uses: ./.github/workflows/setup-test-caches.yml
205207
with:
@@ -213,12 +215,10 @@ jobs:
213215
name: "Tests: Stacks Core"
214216
needs:
215217
- check-changelog
216-
- check-release
217218
- check-rustfmt
218219
- setup-test-caches
219220
- setup-env
220221
if: >-
221-
needs.check-release.outputs.is_release == 'true' ||
222222
needs.setup-env.outputs.job-should-run == 'true'
223223
uses: ./.github/workflows/tests-stacks-core.yml
224224
with:
@@ -231,12 +231,10 @@ jobs:
231231
name: "Tests: Bitcoin"
232232
needs:
233233
- check-changelog
234-
- check-release
235234
- check-rustfmt
236235
- setup-test-caches
237236
- setup-env
238237
if: >-
239-
needs.check-release.outputs.is_release == 'true' ||
240238
needs.setup-env.outputs.job-should-run == 'true'
241239
uses: ./.github/workflows/tests-bitcoin.yml
242240
with:
@@ -250,11 +248,9 @@ jobs:
250248
needs:
251249
- check-changelog
252250
- check-rustfmt
253-
- check-release
254251
- setup-test-caches
255252
- setup-env
256253
if: >-
257-
needs.check-release.outputs.is_release == 'true' ||
258254
needs.setup-env.outputs.job-should-run == 'true'
259255
uses: ./.github/workflows/tests-bitcoin-rpc.yml
260256
with:
@@ -269,11 +265,9 @@ jobs:
269265
needs:
270266
- check-changelog
271267
- check-rustfmt
272-
- check-release
273268
- setup-test-caches
274269
- setup-env
275270
if: >-
276-
needs.check-release.outputs.is_release == 'true' ||
277271
needs.setup-env.outputs.job-should-run == 'true'
278272
uses: ./.github/workflows/tests-p2p.yml
279273
with:

.github/workflows/check-cargo-hack.yml

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,10 +91,12 @@ jobs:
9191
-p clarity \
9292
-p clarity-types \
9393
-p stacks-common \
94+
-p stacks-codec \
9495
--each-feature \
9596
--no-dev-deps \
9697
--exclude-features=default,rusqlite,ctrlc-handler,wasm-deterministic,testing \
97-
--features=wasm-web
98+
--features=wasm-web \
99+
--target wasm32-unknown-unknown
98100
99101
# Run cargo-hack for WASM Deterministic
100102
- name: Run cargo hack check (WASM Deterministic)
@@ -119,24 +121,26 @@ jobs:
119121
ref: ${{ github.event.pull_request.head.sha || github.ref }}
120122
persist-credentials: false
121123

122-
# Setup the rust toolchain for specified target
124+
# Setup the rust toolchain for specified target.
125+
# Pin to a specific nightly: an unpinned `nightly` tracks the latest build
126+
# and breaks the job whenever rustc tightens lints (e.g. unused imports).
123127
- name: Setup Rust Toolchain
124128
uses: ./.github/actions/setup-rust-toolchain
125129
with:
126-
toolchain: nightly
130+
toolchain: nightly-2026-06-07
127131

128132
# Fuzz check clarity targets
129133
- name: Check fuzz targets (clarity)
130134
run: |
131-
cargo +nightly check \
135+
cargo +nightly-2026-06-07 check \
132136
--manifest-path clarity/fuzz/Cargo.toml \
133137
--bins \
134138
--locked
135139
136140
# Fuzz check stackslib targets
137141
- name: Check fuzz targets (stackslib)
138142
run: |
139-
cargo +nightly check \
143+
cargo +nightly-2026-06-07 check \
140144
--manifest-path stackslib/fuzz/Cargo.toml \
141145
--bins \
142146
--locked

.github/workflows/tests-proptest-extra.yml

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ concurrency:
5050
# Set default env vars
5151
env:
5252
RUST_BACKTRACE: full
53-
TEST_TIMEOUT: 30
53+
TEST_TIMEOUT: 60
5454
# Minimum number of PR approvals required before running the tests
5555
REQUIRED_APPROVALS: 2
5656
# Number of generated cases to run per selected proptest.
@@ -283,7 +283,11 @@ jobs:
283283

284284
# List every test present on the HEAD branch.
285285
- name: List HEAD branch tests
286+
env:
287+
HEAD_REF: ${{ github.event.pull_request.head.ref || github.ref_name }}
286288
run: |
289+
echo "Head branch: $HEAD_REF"
290+
287291
cargo nextest list \
288292
--archive-file ${{ needs.setup-env.outputs.test-archive-file }} \
289293
-Tjson 2>/dev/null \
@@ -296,56 +300,52 @@ jobs:
296300
| sort > /tmp/head-tests.txt
297301
echo "HEAD tests: $(wc -l < /tmp/head-tests.txt)"
298302
299-
# Check out the base branch into a temporary git worktree and compile
300-
# it to list its tests.
301-
#
302-
# CARGO_TARGET_DIR is pointed at the HEAD workspace's target/ directory.
303-
# Anything unchanged between HEAD and BASE (external deps and
304-
# unmodified stacks-core crates) is reused, so only the crates
305-
# that actually differ need recompiling.
303+
# Check out the base branch into a temporary git worktree and compile it
304+
# to list its tests, building in the worktree's own target/. The worktree
305+
# (and its build output) is removed afterwards.
306306
#
307-
# NOTE:
308-
# Overwriting HEAD binaries in target/ is harmless — the test-run step
309-
# uses --archive-file, which extracts HEAD binaries into a temp dir and
310-
# never reads from target/.
311-
#
312-
# Reusing HEAD's target/ is only effective when testenv fell back to a local
313-
# build (cache miss): that build uses no special RUSTFLAGS, so the artifacts
314-
# are compatible and Rust only recompiles the crates that differ from BASE.
315-
# When testenv succeeds (cache hit), target/ contains artifacts built with
316-
# -Cinstrument-coverage (from manage-test-caches). The flag mismatch invalidates
317-
# every fingerprint, forcing a full recompile regardless — no faster than
318-
# using a fresh target directory (and it's not worth using same flag either).
307+
# This is always a full compile: the ./target/debug/ restored by "Restore
308+
# Test Archive Cache" was built with -C instrument-coverage by
309+
# setup-test-caches, so its fingerprints never match this list-only build
310+
# and there is nothing to reuse. RUSTFLAGS only allows warnings here — the
311+
# job-wide `-D warnings` would otherwise turn a benign warning into a hard
312+
# error and leave an empty list.
319313
- name: List BASE branch tests
320314
env:
321315
BASE_REF: ${{ github.event.pull_request.base.ref || inputs.base_ref }}
316+
RUSTFLAGS: "-A warnings"
317+
shell: bash
322318
run: |
323319
echo "Base branch: $BASE_REF"
324320
325321
git fetch --depth=1 origin "$BASE_REF"
326322
git worktree add --detach /tmp/base-worktree "origin/$BASE_REF"
327323
328-
# Capture HEAD workspace root before entering the worktree
329-
head_target="$(pwd)/target"
330-
324+
# Build in the worktree's own target/ (no HEAD target/ reuse — see note).
331325
pushd /tmp/base-worktree
332-
CARGO_TARGET_DIR="$head_target" \
333-
cargo nextest list \
334-
-Tjson 2>/dev/null \
335-
| jq -r '
326+
cargo nextest list -Tjson > /tmp/base-list.json
327+
popd
328+
329+
# Remove the worktree along with its build output (--force because the
330+
# compile above populated its target/).
331+
git worktree remove --force /tmp/base-worktree
332+
git worktree prune
333+
334+
jq -r '
336335
.["rust-suites"]
337336
| to_entries[]
338337
| .value.testcases
339338
| keys[]
340-
' \
339+
' /tmp/base-list.json \
341340
| sort > /tmp/base-tests.txt
342-
popd
343-
344-
# Worktree source files are clean (build output went to HEAD_TARGET)
345-
git worktree remove /tmp/base-worktree
346-
git worktree prune
341+
342+
base_count=$(wc -l < /tmp/base-tests.txt)
343+
echo "Base tests: $base_count"
347344
348-
echo "Base tests: $(wc -l < /tmp/base-tests.txt)"
345+
if [ "$base_count" -eq 0 ]; then
346+
echo "::error::BASE test listing is empty — aborting to avoid treating all HEAD tests as new."
347+
exit 1
348+
fi
349349
350350
# Compare the HEAD and base test lists and keep only tests that are new in HEAD.
351351
# Then filter to only those tagged with :t::...:t_prop:, i.e. test names of the form:

Cargo.lock

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ rusqlite = { version = "0.31.0", features = ["blob", "serde_json", "i128_blob",
4343
thiserror = "1.0.65"
4444
tikv-jemallocator = "0.5.4"
4545
toml = "0.5.6"
46+
variant_count = "1.1"
4647

4748
# Other dependencies
4849
libc = { version = "0.2.182", default-features = false }
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Prevent blocks that contain transactions with non-normalized "high S" secp256k1 signatures. Consensus still allows them (this will be changed in a future epoch), but miners won't mine them and signers won't sign them.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Rust toolchain bumped from 1.94.0 to 1.96.0 and new clippy lint warnings addressed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Drop unused p2p message types (BlocksAvailable, MicroblocsAvailable, BlocksData)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Add snapshot copy of canonical epoch 2.x block files, confirmed microblock streams, and Nakamoto staging blocks into squashed output.

0 commit comments

Comments
 (0)