Skip to content

Commit 2b2e6a9

Browse files
authored
Release 1.223.0
See release notes.
2 parents a46dd15 + 0fbf9cc commit 2b2e6a9

1,858 files changed

Lines changed: 251519 additions & 100463 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/audit.toml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# cargo-audit configuration
2+
# https://github.com/rustsec/rustsec/blob/main/cargo-audit/audit.toml.example
3+
#
4+
# Keep in sync with deny.toml [advisories] ignore list.
5+
6+
[advisories]
7+
ignore = [
8+
# capnp unsound APIs, transitive via hypersync-client, awaiting upstream fix
9+
"RUSTSEC-2025-0143",
10+
# rsa Marvin Attack, transitive via sqlx-mysql, no fix available
11+
"RUSTSEC-2023-0071",
12+
]

.codespellrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@
33

44
[codespell]
55
# Comma-separated list of words to ignore
6-
ignore-words-list = ACN,ALO,Alo,BadAloPx,CapTable,arange,crate,datas,deques,disjointness,HIGHTER,Implementors,ot,pre,ser,socio-economic,Superseed,SUPERSEED,trough,usIn,zar
6+
ignore-words-list = ACN,ALO,Alo,allTime,BadAloPx,CapTable,arange,crate,datas,deques,disjointness,HIGHTER,Implementors,ot,pre,ser,socio-economic,Superseed,SUPERSEED,trough,usIn,zar

.config/nextest.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
[test-groups]
22
serial-tests = { max-threads = 1 }
3+
large-data-tests = { max-threads = 1 }
34

45
[profile.default]
56
# Default settings
@@ -12,6 +13,11 @@ test-group = 'serial-tests'
1213
filter = 'test(test_order_book)'
1314
slow-timeout = { period = "300s" }
1415

16+
# Tests that download large data files share the same target paths across binaries
17+
[[profile.default.overrides]]
18+
filter = 'binary(grid_mm_itch) | binary(orderbook_integration)'
19+
test-group = 'large-data-tests'
20+
1521
# Websocket tests can be flaky due to timing on low-spec runners, give them extra retries
1622
[[profile.default.overrides]]
1723
filter = 'binary(websocket)'

.github/OVERVIEW.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ CI/CD, testing, publishing, and automation within the NautilusTrader repository.
88

99
## Composite actions (`.github/actions`)
1010

11+
- **cargo-tool-install**: installs cargo tools (cargo-deny, cargo-vet) with caching.
1112
- **common-setup**: prepares the environment (OS packages, Rust toolchain, Python, sccache, pre-commit).
1213
- **common-test-data**: caches large test data under `tests/test_data/large`.
1314
- **common-wheel-build**: builds and installs Python wheels across Linux, macOS, and Windows for multiple Python versions.
@@ -47,7 +48,7 @@ CI/CD, testing, publishing, and automation within the NautilusTrader repository.
4748

4849
- **Build attestations**: All published artifacts include cryptographic SLSA build provenance attestations, linking each artifact to a specific commit SHA. Verify via `gh attestation verify`.
4950
- **Immutable action pinning**: All third-party GitHub Actions are pinned to specific commit SHAs.
50-
- **Docker image pinning**: Base images in Dockerfiles are pinned to SHA256 digests to prevent supply-chain attacks via tag mutation.
51+
- **Docker image pinning**: Base images in Dockerfiles and service containers in workflows are pinned to SHA256 digests to prevent supply-chain attacks via tag mutation.
5152
- **Caching**: Caches for sccache, pip/site-packages, pre-commit, and test data speed up workflows while preserving hermetic (reproducible) builds.
5253

5354
### Runtime hardening

.github/actions/cargo-tool-install/action.yml

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,10 @@ runs:
3838

3939
# https://github.com/actions/cache
4040
- name: Cache tool binary
41-
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
41+
uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
4242
with:
4343
path: ${{ runner.tool_cache }}/${{ inputs.tool-name }}
44-
key: ${{ inputs.tool-name }}-bin-${{ env.TOOL_VERSION }}
44+
key: ${{ inputs.tool-name }}-bin-${{ env.TOOL_VERSION }}-${{ runner.os }}-${{ env.TOOLCHAIN }}
4545

4646
- name: Add tool to PATH
4747
shell: bash
@@ -54,7 +54,11 @@ runs:
5454
env:
5555
TOOL_CACHE: ${{ runner.tool_cache }}
5656
run: |
57-
cargo install --locked \
58-
--root "$TOOL_CACHE/$TOOL_NAME" \
59-
--version "$TOOL_VERSION" \
60-
"$TOOL_NAME"
57+
if [[ -x "$TOOL_CACHE/$TOOL_NAME/bin/$TOOL_NAME" ]]; then
58+
echo "$TOOL_NAME $TOOL_VERSION already installed from cache"
59+
else
60+
cargo install --locked \
61+
--root "$TOOL_CACHE/$TOOL_NAME" \
62+
--version "$TOOL_VERSION" \
63+
"$TOOL_NAME"
64+
fi

.github/actions/common-setup/action.yml

Lines changed: 8 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -53,54 +53,8 @@ runs:
5353
sudo apt-get clean
5454
sudo rm -rf /var/lib/apt/lists/*
5555
56-
- name: Install capnp and ripgrep (macOS)
57-
if: runner.os == 'macOS'
58-
shell: bash
59-
run: |
60-
brew update || { sleep 5; brew update; }
61-
brew install capnp ripgrep || { sleep 5; brew install capnp ripgrep; }
62-
brew cleanup
63-
64-
- name: Set Cap'n Proto install prefix (Linux)
65-
if: runner.os == 'Linux'
66-
shell: bash
67-
run: |
68-
echo "CAPNP_PREFIX=$GITHUB_WORKSPACE/.cache/capnp" >> $GITHUB_ENV
69-
echo "$GITHUB_WORKSPACE/.cache/capnp/bin" >> $GITHUB_PATH
70-
71-
- name: Get Linux version
72-
if: runner.os == 'Linux'
73-
id: linux-version
74-
shell: bash
75-
run: echo "release=$(lsb_release -rs)" >> "$GITHUB_OUTPUT"
76-
77-
- name: Get capnp version from capnp-version
78-
shell: bash
79-
run: |
80-
echo "CAPNP_VERSION=$(cat capnp-version)" >> $GITHUB_ENV
81-
82-
- name: Cache Cap'n Proto (Linux)
83-
if: runner.os == 'Linux'
84-
id: cache-capnp
85-
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
86-
with:
87-
path: ${{ github.workspace }}/.cache/capnp
88-
key: capnp-linux-${{ steps.linux-version.outputs.release }}-${{ env.CAPNP_VERSION }}-${{ runner.arch }}
89-
90-
- name: Install capnp
91-
if: runner.os == 'Linux'
92-
shell: bash
93-
run: bash scripts/install-capnp.sh
94-
95-
- name: Install capnp (Windows)
96-
if: runner.os == 'Windows'
97-
shell: bash
98-
run: |
99-
choco install capnproto ripgrep -y || {
100-
echo "capnproto/ripgrep install via choco failed or unavailable"
101-
sleep 5
102-
choco install capnproto ripgrep -y || true
103-
}
56+
- name: Install Cap'n Proto
57+
uses: ./.github/actions/install-capnp
10458

10559
# > --------------------------------------------------
10660
# > Rust
@@ -128,7 +82,7 @@ runs:
12882
- name: Install cargo-nextest
12983
if: inputs.build-type != 'pre-commit'
13084
# https://github.com/taiki-e/install-action # v2.53.2
131-
uses: taiki-e/install-action@d12e869b89167df346dd0ff65da342d1fb1202fb
85+
uses: taiki-e/install-action@59679e24ffb0dbbbc136684eda7fcd21fe9eddea # v2.63.0
13286
with:
13387
tool: nextest
13488

@@ -174,7 +128,7 @@ runs:
174128
# > Python
175129
- name: Set up Python environment
176130
# https://github.com/actions/setup-python
177-
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
131+
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
178132
with:
179133
python-version: ${{ inputs.python-version }}
180134

@@ -196,7 +150,7 @@ runs:
196150
- name: Cache Python site-packages
197151
id: cached-site-packages
198152
# https://github.com/actions/cache
199-
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
153+
uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
200154
with:
201155
path: ~/.local/lib/python${{ inputs.python-version }}/site-packages
202156
key: ${{ runner.os }}-${{ inputs.python-version }}-site-packages
@@ -216,7 +170,7 @@ runs:
216170
217171
- name: Install uv
218172
# https://github.com/astral-sh/setup-uv
219-
uses: astral-sh/setup-uv@3259c6206f993105e3a61b142c2d97bf4b9ef83d # v7.1.0
173+
uses: astral-sh/setup-uv@681c641aba71e4a1c380be3ab5e12ad51f415867 # v7.1.6
220174
with:
221175
version: ${{ env.UV_VERSION }}
222176

@@ -231,7 +185,7 @@ runs:
231185
if: runner.os != 'macOS'
232186
id: cached-uv
233187
# https://github.com/actions/cache
234-
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
188+
uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
235189
with:
236190
path: ${{ env.UV_CACHE_DIR }}
237191
key: ${{ runner.os }}-${{ env.PYTHON_VERSION }}-uv-${{ hashFiles('**/uv.lock') }}
@@ -244,7 +198,7 @@ runs:
244198
if: runner.os != 'macOS'
245199
id: cached-pre-commit
246200
# https://github.com/actions/cache
247-
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
201+
uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
248202
with:
249203
path: ~/.cache/pre-commit
250204
key: ${{ runner.os }}-${{ env.PYTHON_VERSION }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}

.github/actions/common-test-data/action.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ runs:
1010
if: runner.os != 'macOS'
1111
id: cached-testdata-large
1212
# https://github.com/actions/cache/tree/main/restore
13-
uses: actions/cache/restore@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
13+
uses: actions/cache/restore@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
1414
with:
1515
path: tests/test_data/large
1616
key: large-files-${{ hashFiles('tests/test_data/large/checksums.json') }}
@@ -22,7 +22,7 @@ runs:
2222
# See: https://github.com/actions/runner/issues/3765
2323
if: ${{ runner.os != 'macOS' && always() && steps.cached-testdata-large.outputs.cache-hit != 'true' }}
2424
# https://github.com/actions/cache/tree/main/save
25-
uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
25+
uses: actions/cache/save@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
2626
with:
2727
path: tests/test_data/large
2828
key: large-files-${{ hashFiles('tests/test_data/large/checksums.json') }}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
name: install-capnp
2+
description: Install Cap'n Proto compiler
3+
4+
runs:
5+
using: "composite"
6+
steps:
7+
- name: Install capnp and ripgrep (macOS)
8+
if: runner.os == 'macOS'
9+
shell: bash
10+
run: |
11+
brew update || { sleep 5; brew update; }
12+
brew install capnp ripgrep || { sleep 5; brew install capnp ripgrep; }
13+
brew cleanup
14+
15+
- name: Set Cap'n Proto install prefix (Linux)
16+
if: runner.os == 'Linux'
17+
shell: bash
18+
run: |
19+
echo "CAPNP_PREFIX=$GITHUB_WORKSPACE/.cache/capnp" >> $GITHUB_ENV
20+
echo "$GITHUB_WORKSPACE/.cache/capnp/bin" >> $GITHUB_PATH
21+
22+
- name: Get Linux version
23+
if: runner.os == 'Linux'
24+
id: linux-version
25+
shell: bash
26+
run: echo "release=$(lsb_release -rs)" >> "$GITHUB_OUTPUT"
27+
28+
- name: Get capnp version from capnp-version
29+
shell: bash
30+
run: |
31+
echo "CAPNP_VERSION=$(cat capnp-version)" >> $GITHUB_ENV
32+
33+
- name: Cache Cap'n Proto (Linux)
34+
if: runner.os == 'Linux'
35+
id: cache-capnp
36+
uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
37+
with:
38+
path: ${{ github.workspace }}/.cache/capnp
39+
key: capnp-linux-${{ steps.linux-version.outputs.release }}-${{ env.CAPNP_VERSION }}-${{ runner.arch }}
40+
41+
- name: Install capnp (Linux)
42+
if: runner.os == 'Linux'
43+
shell: bash
44+
run: bash scripts/install-capnp.sh
45+
46+
- name: Install capnp (Windows)
47+
if: runner.os == 'Windows'
48+
shell: bash
49+
run: |
50+
choco install capnproto ripgrep -y || {
51+
echo "capnproto/ripgrep install via choco failed or unavailable"
52+
sleep 5
53+
choco install capnproto ripgrep -y || true
54+
}

.github/actions/upload-artifact-wheel/action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ runs:
3131
'nightly' || github.ref_name == 'master' || github.ref_name == 'test-ci')
3232
# https://github.com/actions/upload-artifact
3333
# Use wildcard to flatten dist/ prefix: path before first wildcard is stripped
34-
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
34+
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
3535
with:
3636
name: ${{ env.ASSET_NAME }}
3737
path: dist/nautilus_trader-*.whl

.github/workflows/build-docs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
runs-on: ubuntu-latest
1414
steps:
1515
# https://github.com/step-security/harden-runner
16-
- uses: step-security/harden-runner@f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a # v2.13.1
16+
- uses: step-security/harden-runner@20cf305ff2072d973412fa9b1e3a4f227bda3c76 # v2.14.0
1717
with:
1818
egress-policy: audit
1919

0 commit comments

Comments
 (0)