Skip to content

v0.2.0: SMB2 compounding, tests, and benchmarks#6

Merged
lukekim merged 1 commit into
mainfrom
v0.2
Mar 31, 2026
Merged

v0.2.0: SMB2 compounding, tests, and benchmarks#6
lukekim merged 1 commit into
mainfrom
v0.2

Conversation

@lukekim
Copy link
Copy Markdown
Contributor

@lukekim lukekim commented Mar 31, 2026

Summary

  • SMB2 compound operations — batch Create+Read+Close, Create+Write+Close, and Create+Close into single TCP round trips, reducing small-file latency by 50-80%
  • Router fast paths — small GETs (<64KB) served inline via compound ops; small PUTs collected and written via compound, bypassing streaming overhead
  • 100 unit tests covering all modules: xml, headers, multipart, protocol, ops, crypto, auth
  • Criterion benchmarks for crypto primitives, protocol encode/decode, and S3 layer
  • Extended integration test that builds the spiceai repo through sccache/spiceio (1093 cache hits, 100% hit rate)
  • Performance optimizations: epoch date formatting 8x faster (150ns -> 18ns), zero-copy read response decoding
  • Bug fix: parse_http_date misrouted RFC 7231 dates containing "GMT" to the ISO 8601 parser
  • CI improvements: binary version verification, stale process cleanup, port-in-use handling
  • README rewrite with architecture, use cases, sccache example, and comparison table
  • Version bump to 0.2.0, license to Apache 2.0

Test plan

  • cargo test — 100 unit tests pass (lib + bin)
  • make lint — fmt, check, clippy, rustdoc all clean
  • make test — 14/14 S3 API tests + sccache integration (46 hits, 100% rate)
  • make test-extended — spiceai build through sccache (1093 hits, 100% rate, 0 errors)
  • cargo bench — all 30 benchmarks run

@lukekim lukekim self-assigned this Mar 31, 2026
SMB2 compound operations batch multiple SMB operations into single TCP
round trips, cutting latency for small file reads (3 RT -> 1 RT),
writes (5+ RT -> 2 RT), head/delete (2 RT -> 1 RT), and directory
creation (2N RT -> 1 RT).

Router fast paths serve small GETs inline via compound Create+Read+Close
and small PUTs via compound Create+Write+Close, bypassing the streaming
path overhead.

Additional changes:
- Add --version flag to the binary
- Add port-in-use handling to test scripts
- Add CI step to verify binary version and kill stale processes
- Add extended integration test building spiceai repo through sccache
- Add unit tests across all modules (100 total)
- Fix parse_http_date misrouting RFC 7231 dates to ISO 8601 parser
- Add criterion benchmarks (crypto, protocol, s3)
- Optimize epoch_to_iso8601/http_date from 150ns to 18ns (8x)
- Add zero-copy decode_read_response_owned for the hot read path
- Bump version to 0.2.0, license to Apache 2.0
- Rewrite README with architecture, use cases, and sccache example
@lukekim lukekim merged commit 67dcbee into main Mar 31, 2026
1 check passed
@lukekim lukekim deleted the v0.2 branch March 31, 2026 16:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant