You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
v0.2.0: SMB2 compounding, small-file fast paths, tests, and benchmarks
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
Copy file name to clipboardExpand all lines: CLAUDE.md
+14-14Lines changed: 14 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,9 +2,9 @@
2
2
3
3
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
4
5
-
## What is spio
5
+
## What is spiceio
6
6
7
-
spio is an S3-compatible API proxy that translates S3 HTTP requests into SMB 3.1.x file operations. It speaks the SMB wire protocol directly over TCP (no mount, no libsmbclient) and uses macOS CommonCrypto via FFI for all cryptographic primitives (NTLMv2 auth, SHA-256, HMAC). Targets macOS 26+ only.
7
+
spiceio is an S3-compatible API proxy that translates S3 HTTP requests into SMB 3.1.x file operations. It speaks the SMB wire protocol directly over TCP (no mount, no libsmbclient) and uses macOS CommonCrypto via FFI for all cryptographic primitives (NTLMv2 auth, SHA-256, HMAC). Targets macOS 26+ only.
8
8
9
9
## Design principles
10
10
@@ -19,27 +19,27 @@ spio is an S3-compatible API proxy that translates S3 HTTP requests into SMB 3.1
-`SPICEIO_BUCKET` — virtual S3 bucket name (defaults to `SPICEIO_SMB_SHARE`)
36
+
-`SPICEIO_REGION` — AWS region to advertise (default `us-east-1`)
37
37
38
38
## Architecture
39
39
40
40
The codebase has three modules:
41
41
42
-
-**`s3`** — HTTP layer. Parses incoming S3 API requests and produces XML responses. `router.rs` is the central dispatch (path-style bucket routing). Covers GetObject, PutObject, CopyObject, DeleteObject, HeadObject, ListObjectsV1/V2, multipart uploads, and stub endpoints for ACL/tagging/versioning. `xml.rs` is a hand-rolled XML builder. `multipart.rs` manages upload state in-memory, with parts stored as temp files under `.spio-uploads/` on the SMB share. `body.rs` implements `SpioBody`, a zero-copy streaming response body (channel-backed for large reads, inline for XML/errors).
42
+
-**`s3`** — HTTP layer. Parses incoming S3 API requests and produces XML responses. `router.rs` is the central dispatch (path-style bucket routing). Covers GetObject, PutObject, CopyObject, DeleteObject, HeadObject, ListObjectsV1/V2, multipart uploads, and stub endpoints for ACL/tagging/versioning. `xml.rs` is a hand-rolled XML builder. `multipart.rs` manages upload state in-memory, with parts stored as temp files under `.spiceio-uploads/` on the SMB share. `body.rs` implements `SpiceioBody`, a zero-copy streaming response body (channel-backed for large reads, inline for XML/errors).
0 commit comments