Skip to content

Commit dd10003

Browse files
committed
ci: bump MSRV to 1.88, add MSRV CI check
- Add matrix strategy to test workflow (stable + 1.88.0) - Update rust-version in Cargo.toml to 1.88 - Update all docs referencing minimum Rust version - Update actions/checkout to @v6 in GitHub workflows
1 parent cca0b0b commit dd10003

14 files changed

Lines changed: 36 additions & 21 deletions

File tree

.agents/skills/extenddb/references/setup/02-dependency-checks.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ This file lists the dependency checks the `extenddb-setup` skill runs before pro
88

99
| Dependency | Check command | Minimum version | Rationale |
1010
|---|---|---|---|
11-
| Rust toolchain | `cargo --version` and `rustc --version` | 1.85 | extenddb is a Rust workspace; older toolchains fail `cargo build --release`. |
11+
| Rust toolchain | `cargo --version` and `rustc --version` | 1.88 | extenddb is a Rust workspace; older toolchains fail `cargo build --release`. |
1212
| PostgreSQL client | `psql --version` | 14 | extenddb speaks the Postgres protocol at init and runtime; older clients may lack required features. |
1313
| PostgreSQL server readiness | `pg_isready` | n/a (server-side check) | Confirms the server is reachable before `extenddb init`. |
1414
| Python 3 | `python3 --version` | 3.10 | Required by the sample apps and the docs build pipeline. |
@@ -29,7 +29,7 @@ If `which cargo` exits nonzero, Rust is not installed. Install:
2929
- Linux (Fedora/RHEL): `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh`
3030
- macOS: `brew install rustup-init && rustup-init`
3131

32-
If Rust is installed but `rustc --version` reports older than 1.85:
32+
If Rust is installed but `rustc --version` reports older than 1.88:
3333

3434
```bash
3535
rustup update
@@ -84,7 +84,7 @@ If `python3 --version` reports older than 3.10, upgrade via the same package man
8484

8585
## Version parsing
8686

87-
`rustc --version` prints `rustc 1.85.0 (abcdef0 2025-01-01)`. Extract the version field with `awk`:
87+
`rustc --version` prints `rustc 1.88.0 (abcdef0 2025-01-01)`. Extract the version field with `awk`:
8888

8989
```bash
9090
rustc --version | awk '{print $2}'
@@ -96,11 +96,11 @@ rustc --version | awk '{print $2}'
9696
psql --version | awk '{print $3}'
9797
```
9898

99-
Compare the extracted version against the minimum (1.85 for Rust, 14 for Postgres) by splitting on `.` and comparing numerically. For skill-level checks, a string prefix comparison (`[[ "$PG_VER" < "14" ]]`) is adequate because major versions are single or double digits.
99+
Compare the extracted version against the minimum (1.88 for Rust, 14 for Postgres) by splitting on `.` and comparing numerically. For skill-level checks, a string prefix comparison (`[[ "$PG_VER" < "14" ]]`) is adequate because major versions are single or double digits.
100100

101101
## Rust version upgrade path
102102

103-
If Rust is installed via rustup and `rustc --version` reports older than 1.85, the fix is:
103+
If Rust is installed via rustup and `rustc --version` reports older than 1.88, the fix is:
104104

105105
```bash
106106
rustup update

.agents/skills/extenddb/references/setup/03-build-stage.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,4 +59,4 @@ This should print the extenddb version string. If it does not, the build failed
5959
cargo build --release --verbose
6060
```
6161

62-
Common causes of silent build failure are a missing system library (for example, `libpq-dev` or `openssl-dev` on Linux), a Rust toolchain older than 1.85, or a disk full condition under `target/`. The verbose output names the failing crate and the missing dependency.
62+
Common causes of silent build failure are a missing system library (for example, `libpq-dev` or `openssl-dev` on Linux), a Rust toolchain older than 1.88, or a disk full condition under `target/`. The verbose output names the failing crate and the missing dependency.

.github/workflows/clippy.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ jobs:
88
clippy:
99
runs-on: ubuntu-latest
1010
steps:
11-
- uses: actions/checkout@v4
11+
- uses: actions/checkout@v6
1212
- uses: dtolnay/rust-toolchain@stable
1313
with:
1414
components: clippy

.github/workflows/fmt.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ jobs:
88
fmt:
99
runs-on: ubuntu-latest
1010
steps:
11-
- uses: actions/checkout@v4
11+
- uses: actions/checkout@v6
1212
- uses: dtolnay/rust-toolchain@stable
1313
with:
1414
components: rustfmt

.github/workflows/test.yml

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,25 @@ on:
55
branches: [main]
66

77
jobs:
8-
test:
8+
run-tests:
99
runs-on: ubuntu-latest
10+
strategy:
11+
matrix:
12+
toolchain: [stable, "1.88.0"]
1013
steps:
1114
- uses: actions/checkout@v4
12-
- uses: dtolnay/rust-toolchain@stable
15+
- uses: dtolnay/rust-toolchain@master
16+
with:
17+
toolchain: ${{ matrix.toolchain }}
1318
- uses: Swatinem/rust-cache@v2
1419
- run: cargo test --workspace
20+
21+
test:
22+
runs-on: ubuntu-latest
23+
needs: run-tests
24+
if: always()
25+
steps:
26+
- run: |
27+
if [ "${{ needs.run-tests.result }}" != "success" ]; then
28+
exit 1
29+
fi

AGENTS.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ License. ExtendDB is a clean-room implementation of the DynamoDB wire protocol,
99
by AWS engineers. It is not a fork of DynamoDB and contains no DynamoDB source code. ExtendDB speaks the DynamoDB wire
1010
protocol: any AWS SDK, CLI, or tool that works with DynamoDB works with ExtendDB, unchanged.
1111

12-
- **Language:** Rust (edition 2024, MSRV 1.85+)
12+
- **Language:** Rust (edition 2024, MSRV 1.88+)
1313
- **Storage backend:** PostgreSQL 14+
1414
- **Architecture:** Async (tokio), trait-based storage abstraction
1515
- **Authentication:** Mandatory SigV4 with built-in IAM (users, groups, roles, policies)
@@ -81,7 +81,7 @@ extenddb (bin)
8181

8282
### Prerequisites
8383

84-
- Rust 1.85+ (`rustup update`)
84+
- Rust 1.88+ (`rustup update`)
8585
- PostgreSQL 14+ running locally (see `docs/local-postgres-setup.md`)
8686
- Python 3.10+ for tests (`python3 -m venv ~/venvs/extenddb-venv && source ~/venvs/extenddb-venv/bin/activate && pip install -r requirements.txt`)
8787

@@ -369,7 +369,7 @@ python3 docs/build-docs.py
369369
## Code Style and Conventions
370370

371371
- **Rust edition:** 2024
372-
- **MSRV:** 1.85
372+
- **MSRV:** 1.88
373373
- **Async:** tokio, no `#[async_trait]` (use RPITIT)
374374
- **Error handling:** `thiserror` for library errors, `anyhow` for application errors
375375
- **Serialization:** `serde` + `serde_json`

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Thank you for your interest in contributing to ExtendDB!
66

77
### Prerequisites
88

9-
- Rust 1.85+ (stable)
9+
- Rust 1.88+ (stable)
1010
- PostgreSQL 14+
1111
- Python 3.10+ (for integration tests)
1212

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ members = [
1616
[workspace.package]
1717
version = "0.1.0"
1818
edition = "2024"
19-
rust-version = "1.85"
19+
rust-version = "1.88"
2020
license = "Apache-2.0"
2121

2222
[workspace.dependencies]

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ scripts/install-macos.sh # macOS
4949

5050
## Prerequisites
5151

52-
- Rust 1.85+ (`rustup update`)
52+
- Rust 1.88+ (`rustup update`)
5353
- PostgreSQL 14+ (see `docs/local-postgres-setup.md`)
5454
- Python 3.10+ (for test suites and documentation)
5555

docs/getting-started.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ software on your behalf. After the script completes, continue from
3030
## Prerequisites
3131

3232
- PostgreSQL 14+ running locally (see `docs/local-postgres-setup.md`)
33-
- Rust toolchain (1.85+)
33+
- Rust toolchain (1.88+)
3434
- AWS CLI v2 (for testing)
3535
- Python 3.10+ with virtual environment (see [Python Environment Setup](../README.md#python-environment-setup) in the README)
3636

0 commit comments

Comments
 (0)