Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
4523ca5
Initial plan
Copilot Jan 21, 2026
b94203c
Add Rust spike implementation for BSON encoding/decoding
Copilot Jan 21, 2026
919d31d
Add examples and decision matrix documentation
Copilot Jan 21, 2026
3c16c0d
Refactor Rust code to reduce duplication
Copilot Jan 21, 2026
7307776
Add implementation summary and complete spike
Copilot Jan 21, 2026
a31eebb
Add quick start guide for reviewers
Copilot Jan 21, 2026
180dd5c
Add comprehensive README for Rust spike
Copilot Jan 21, 2026
5ce194f
Merge pull request #1 from aclark4life/copilot/investigate-rust-for-c…
aclark4life Jan 21, 2026
0801662
Initial plan
Copilot Jan 21, 2026
10a2461
Add Binary subclasses and codec_options support to Rust extension
Copilot Jan 21, 2026
959fa3a
Handle Reserved binary subtypes (10-127) correctly
Copilot Jan 21, 2026
3e81d25
Address code review feedback: use constants, improve error handling, …
Copilot Jan 21, 2026
f4b6669
Merge pull request #2 from aclark4life/copilot/fix-codec-options-bina…
aclark4life Jan 21, 2026
5d0e24d
Initial plan
Copilot Jan 22, 2026
2d48c27
Implement DateTime, ObjectId, Regex, and Timestamp BSON types
Copilot Jan 22, 2026
7ded723
Address code review feedback: fix datetime timezone handling and clar…
Copilot Jan 22, 2026
4edac90
Update documentation to reflect implemented BSON types
Copilot Jan 22, 2026
cee05fc
Merge pull request #3 from aclark4life/copilot/implement-remaining-bs…
aclark4life Jan 22, 2026
d7c4d99
Initial plan
Copilot Jan 22, 2026
fbafe78
Disable existing GitHub Actions and add Rust CI workflow
Copilot Jan 22, 2026
9041469
Merge pull request #4 from aclark4life/copilot/disable-existing-ci-ac…
aclark4life Jan 22, 2026
56abfff
Initial plan
Copilot Jan 22, 2026
980345a
Upgrade PyO3 from 0.22 to 0.27 for Python 3.14 support
Copilot Jan 22, 2026
5ccf4a0
Remove unnecessary clone() calls in type conversions
Copilot Jan 22, 2026
828da8c
Merge pull request #5 from aclark4life/copilot/fix-python-version-issue
aclark4life Jan 22, 2026
293332f
Initial plan
Copilot Jan 22, 2026
9b24254
Add Python 3.13 setup to Rust CI workflow for all jobs
Copilot Jan 22, 2026
7966c60
Merge pull request #6 from aclark4life/copilot/downgrade-python-versi…
aclark4life Jan 22, 2026
d680ce9
Initial plan
Copilot Jan 23, 2026
8d95f64
Add rust extension wrapper module to make tests work with rust variant
Copilot Jan 23, 2026
b28d4c6
Add support for missing BSON types and features in Rust extension
Copilot Jan 23, 2026
8d2d38d
Fix code review issues: improve regex detection, UUID logic, and date…
Copilot Jan 23, 2026
b103e7b
Fix tuple encoding to use BSON arrays instead of binary
Copilot Jan 23, 2026
f373923
Add DBRef, Int64, _id ordering, and buffer protocol support to Rust B…
Copilot Jan 23, 2026
0ef4d2c
Address code review feedback: validate sizes, add comments, improve e…
Copilot Jan 23, 2026
fa54e5b
Merge pull request #7 from aclark4life/copilot/update-test-bson-file
aclark4life Jan 23, 2026
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
File renamed without changes.
174 changes: 174 additions & 0 deletions .github/workflows/rust-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
name: Rust CI

on:
push:
branches: ["master", "v**"]
pull_request:
workflow_dispatch:

concurrency:
group: rust-ci-${{ github.ref }}
cancel-in-progress: true

env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1

jobs:
# Run tests on multiple platforms
test:
name: Test - ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]

steps:
- name: Checkout code
uses: actions/checkout@v6
with:
persist-credentials: false

- name: Set up Python 3.13
uses: actions/setup-python@v6
with:
python-version: '3.13'

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable

Check failure

Code scanning / zizmor

unpinned action reference Error

unpinned action reference

Check warning

Code scanning / CodeQL

Unpinned tag for a non-immutable Action in workflow Medium

Unpinned 3rd party Action 'Rust CI' step
Uses Step
uses 'dtolnay/rust-toolchain' with ref 'stable', not a pinned commit hash

- name: Cache cargo registry
uses: actions/cache@v4
with:
path: ~/.cargo/registry
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}

- name: Cache cargo index
uses: actions/cache@v4
with:
path: ~/.cargo/git
key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }}

- name: Cache cargo build
uses: actions/cache@v4
with:
path: rust/target
key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}

- name: Build
working-directory: ./rust
run: cargo build --verbose

- name: Run tests
working-directory: ./rust
run: cargo test --verbose

# Linting with clippy
Comment on lines +19 to +67

Check warning

Code scanning / zizmor

overly broad permissions Warning

overly broad permissions
clippy:
Comment on lines +20 to +68

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}
name: Clippy (linting)
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v6
with:
persist-credentials: false

- name: Set up Python 3.13
uses: actions/setup-python@v6
with:
python-version: '3.13'

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable

Check failure

Code scanning / zizmor

unpinned action reference Error

unpinned action reference

Check warning

Code scanning / CodeQL

Unpinned tag for a non-immutable Action in workflow Medium

Unpinned 3rd party Action 'Rust CI' step
Uses Step
uses 'dtolnay/rust-toolchain' with ref 'stable', not a pinned commit hash
with:
components: clippy

- name: Cache cargo registry
uses: actions/cache@v4
with:
path: ~/.cargo/registry
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}

- name: Cache cargo index
uses: actions/cache@v4
with:
path: ~/.cargo/git
key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }}

- name: Cache cargo build
uses: actions/cache@v4
with:
path: rust/target
key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}

- name: Run clippy
working-directory: ./rust
run: cargo clippy --all-targets --all-features -- -D warnings

# Formatting check
Comment on lines +68 to +110

Check warning

Code scanning / zizmor

overly broad permissions Warning

overly broad permissions
fmt:
Comment on lines +69 to +111

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}
name: Rustfmt (formatting)
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v6
with:
persist-credentials: false

- name: Set up Python 3.13
uses: actions/setup-python@v6
with:
python-version: '3.13'

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable

Check failure

Code scanning / zizmor

unpinned action reference Error

unpinned action reference

Check warning

Code scanning / CodeQL

Unpinned tag for a non-immutable Action in workflow Medium

Unpinned 3rd party Action 'Rust CI' step
Uses Step
uses 'dtolnay/rust-toolchain' with ref 'stable', not a pinned commit hash
with:
components: rustfmt

- name: Check formatting
working-directory: ./rust
run: cargo fmt --all -- --check

# Build in release mode to ensure optimized builds work
Comment on lines +111 to +135

Check warning

Code scanning / zizmor

overly broad permissions Warning

overly broad permissions
build-release:
Comment on lines +112 to +136

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}
name: Build (release mode)
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v6
with:
persist-credentials: false

- name: Set up Python 3.13
uses: actions/setup-python@v6
with:
python-version: '3.13'

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable

Check failure

Code scanning / zizmor

unpinned action reference Error

unpinned action reference

Check warning

Code scanning / CodeQL

Unpinned tag for a non-immutable Action in workflow Medium

Unpinned 3rd party Action 'Rust CI' step
Uses Step
uses 'dtolnay/rust-toolchain' with ref 'stable', not a pinned commit hash

- name: Cache cargo registry
uses: actions/cache@v4
with:
path: ~/.cargo/registry
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}

- name: Cache cargo index
uses: actions/cache@v4
with:
path: ~/.cargo/git
key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }}

- name: Cache cargo build
uses: actions/cache@v4
with:
path: rust/target
key: ${{ runner.os }}-cargo-build-target-release-${{ hashFiles('**/Cargo.lock') }}

- name: Build release
working-directory: ./rust
run: cargo build --release --verbose
Comment on lines +137 to +174

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,7 @@ test/lambda/*.json
# test results and logs
xunit-results/
server.log

# Rust artifacts
rust/target/
rust/Cargo.lock
Loading
Loading