Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
f03d32f
feat: Add comprehensive May library improvement analysis and implemen…
casibbald Jul 10, 2025
c33718e
Merge pull request #1 from microscaler/improvements-for-microscaler
casibbald Jul 10, 2025
b4a317f
fix: Make safety infrastructure coroutine-compliant and fix example e…
casibbald Jul 10, 2025
8a239de
fix: Added spawn_safe method to SafeBuilder
casibbald Jul 10, 2025
09859a8
fix: update rust to nightly
casibbald Jul 10, 2025
6d6989b
fix: platform-specific test skipping due to OS-level I/O handling dif…
casibbald Jul 10, 2025
7f73277
fix: correct for platform independence
casibbald Jul 10, 2025
2f40d84
fix: fmt
casibbald Jul 10, 2025
4c4f323
fix: Windows-specific version of the test (test_rwlock_write_canceled…
casibbald Jul 10, 2025
10d0861
feat: additional tests
casibbald Jul 10, 2025
1434d39
feat: Complete Task 1.1 Safe Coroutine Spawning with comprehensive te…
casibbald Jul 10, 2025
ace3566
feat: Add comprehensive test coverage for UDP, io/mod, and crossbeam_…
casibbald Jul 10, 2025
2b0ba55
Add flagship One Billion Row Challenge example
casibbald Jul 10, 2025
505708b
Backup ultra-optimized 1BRC version
casibbald Jul 10, 2025
81e96a4
Ultra-optimize 1BRC for 4-second target
casibbald Jul 10, 2025
9493248
Configs for configuration test isolation issues that were causing CI …
casibbald Jul 11, 2025
f070fa0
tooling
casibbald Jul 11, 2025
33bfbec
Updates for windows compatibility
casibbald Jul 11, 2025
6e8c8be
More windows fixes
casibbald Jul 11, 2025
a96d388
More windows fixes
casibbald Jul 11, 2025
d2b4484
Integration tests
casibbald Jul 11, 2025
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
67 changes: 60 additions & 7 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,29 +18,74 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v2
uses: actions/checkout@v4
- name: Install toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
toolchain: nightly
override: true
components: rustfmt, clippy
- name: Cache cargo registry
uses: actions/cache@v3
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: cargo fmt --check
uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check
- name: Run cargo clippy
- name: Run cargo clippy (strict)
uses: actions-rs/cargo@v1
with:
command: clippy
args: -- -D warnings
- name: Run cargo clippy no default features
args: --all-targets --all-features -- -D warnings -D clippy::correctness -D clippy::suspicious -D clippy::complexity -D clippy::perf -D clippy::style
- name: Run cargo clippy no default features (strict)
uses: actions-rs/cargo@v1
with:
command: clippy
args: --no-default-features -- -D warnings
args: --no-default-features --all-targets -- -D warnings -D clippy::correctness -D clippy::suspicious -D clippy::complexity -D clippy::perf -D clippy::style
- name: Run cargo clippy with selected pedantic lints
uses: actions-rs/cargo@v1
with:
command: clippy
args: --all-targets --all-features -- -D warnings -D clippy::cast_lossless -D clippy::redundant_closure_for_method_calls -D clippy::uninlined_format_args -D clippy::manual_is_multiple_of -D clippy::needless_continue -D clippy::needless_for_each

security:
name: Security audit and additional checks
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Install toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: nightly
override: true
- name: Cache cargo registry
uses: actions/cache@v3
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-security-${{ hashFiles('**/Cargo.lock') }}
- name: Run cargo check with strict flags
uses: actions-rs/cargo@v1
with:
command: check
args: --all-targets --all-features
- name: Check documentation
uses: actions-rs/cargo@v1
with:
command: doc
args: --all-features --no-deps

test:
name: Test ${{ matrix.rust }} on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
Expand All @@ -55,13 +100,21 @@ jobs:
- macOS-latest
steps:
- name: Checkout sources
uses: actions/checkout@v2
uses: actions/checkout@v4
- name: Install Rust (${{ matrix.rust }})
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ matrix.rust }}
override: true
- name: Cache cargo registry
uses: actions/cache@v3
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-${{ matrix.rust }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Run cargo test
uses: actions-rs/cargo@v1
with:
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,4 @@
/target/
.vscode/
Cargo.lock
~/
71 changes: 71 additions & 0 deletions .nextest.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# .nextest.toml
# Nextest configuration for May coroutine library

[profile.default]
# Don't fail fast - we want to see all test results
fail-fast = false

# Show slow tests (>60s) - important for coroutine timing tests
status-level = "slow"

# Retry flaky tests once - coroutines can have timing issues
retries = 1

# Run tests with reduced parallelism for coroutine stability
test-threads = 4

# Timeout for individual tests (important for coroutine tests that might hang)
slow-timeout = { period = "120s", terminate-after = 2 }

# Global timeout for the entire test run
final-status-level = "slow"

[profile.default.junit]
# Generate JUnit XML for CI/CD integration
path = "target/nextest/junit.xml"

# Test groups for different types of tests
[[profile.default.overrides]]
filter = 'test(safe_spawn)'
test-threads = 2
slow-timeout = { period = "30s" }

[[profile.default.overrides]]
filter = 'test(integration)'
test-threads = 1
slow-timeout = { period = "60s" }

[[profile.default.overrides]]
filter = 'test(bench)'
test-threads = 1
retries = 0
slow-timeout = { period = "180s" }

# Coroutine-specific test overrides
[[profile.default.overrides]]
filter = 'test(coroutine) or test(spawn) or test(yield)'
test-threads = 2
slow-timeout = { period = "45s" }

# I/O tests need more time and less concurrency
[[profile.default.overrides]]
filter = 'test(io) or test(net) or test(tcp) or test(udp)'
test-threads = 1
slow-timeout = { period = "90s" }

# Sync primitive tests
[[profile.default.overrides]]
filter = 'test(mutex) or test(rwlock) or test(channel) or test(mpsc) or test(mpmc)'
test-threads = 2
slow-timeout = { period = "30s" }

# Coverage profile for code coverage analysis
[profile.coverage]
# Minimal parallelism for stable coverage collection
test-threads = 1
retries = 0
fail-fast = true
slow-timeout = { period = "180s", terminate-after = 1 }

[profile.coverage.junit]
path = "target/nextest/coverage-junit.xml"
Loading
Loading