SOP v5.3.5
What changed since v5.3.4
Performance
- B-Tree node slot allocation and L1 cache handling got faster. Measured improvement on hot-path operations.
- L2 cache eviction for standalone mode reworked -- smarter about what to keep under memory pressure.
NewBtree/OpenBtreecan now safely be called multiple times for the same B-Tree within a single transaction. Previously this could cause subtle data races. Stress tests updated.
Security -- all Dependabot alerts cleared
- Go deps: golang.org/x/crypto 0.52.0, golang.org/x/net 0.55.0, go-git/v5 5.19.1, go-billy/v5 5.9.0, cloudflare/circl 1.6.3
- Java binding: jackson-databind 2.19.0 -> 2.21.4
- PolymorphicTypeValidator bypass via generic type parameters (high)
- Array subtype allowlist bypass in BasicPolymorphicTypeValidator (high)
- InetSocketAddress deserialization triggers eager DNS resolution / SSRF (medium)
- Case-insensitive deserialization bypasses per-property @JsonIgnoreProperties (medium)
32 alerts total were open at the start of this cycle. All 32 are now resolved.
In-memory B-Tree iterators
All()andRange(from, to)now returniter.Seq2-- you can dofor k, v := range b3.Range(102, 104). Range seeks directly to the start key.
CI/CD
- Gated delivery pipeline (
.github/workflows/deliver.yml): build -> tests -> GHCR container (sop-quickstart) -> staging smoke -> manual production promotion. - Quickstart container (
Dockerfile.quickstart): distroless image running the in-memory B-Tree demo.
Developer experience
- Quickstart example at
examples/quickstart-- no servers, no config, justgo run ./examples/quickstart. - "What is SOP" plain-language overview added and linked from README and site.
- Demo GIF recorded from the quickstart run.
Repository cleanup
- 26 documentation markdown files moved from root to
docs/. - 13 shell scripts moved from root to
scripts/. - All references updated (README, index.md, release workflow, VS Code tasks, DEV_TOOLS.md).
- Root directory now has source code, standard project files, Dockerfiles, and Go module files. That is it.
Full changelog: v5.3.4...v5.3.5