Release Notes
Version history and changelog for Traverse.
0.6.0 — 2026-03-07
Stability & Memory Fixes (Critical)
This release focuses heavily on production stability. Multiple memory leaks and OOM crashes discovered in 0.5.0 have been resolved:
- Fix main-heap memory leak on database unload — databases were not being fully reclaimed after hot-swap cycles
- Fix mimalloc RSS ratchet — memory allocator was not returning pages to the OS after database unload, causing monotonically increasing RSS
- Enforce memory ceiling during database load — prevent OOM crashes by checking available memory before loading
- Pre-flight memory check before database loading — reject loads that would exceed available memory
- Fix bulk-free incorrectly triggering for non-DB-allocated databases
- Fix server total memory on Windows — use
estimated_memoryinstead of working set for accurate reporting
Language Bindings (Embedded)
- Python (PyO3): Full embedded bindings —
Database,Transaction,BulkWriter, property indexes - Java (JNI): Full embedded bindings with bundled native libraries (Windows x86_64, Linux x86_64)
- Node.js (napi-rs 3): Full embedded bindings with async API parity
- Go (FFI/syscall): Full embedded bindings — no CGo required, uses
syscall.LoadDLL/dlopen - .NET:
Traverse.Embedded(FFI bindings),Traverse.Grpc,Traverse.Bolt,Traverse.Http
HTTP Clients
- Python (
traverse-http): HTTP management client — databases, queries, import, upload, tasks - Java (
com.truespar:traverse-http): HTTP management client with Jackson 3.1 - Node.js (
@truespar/traverse-http): HTTP management client using nativefetch - Go (
go/http): HTTP management client — standard library only, no external deps
Studio (Web UI)
- Conditional node and edge styling with if/then/else rules based on property values (e.g. color nodes red when
status = 'critical') - Library reference panel with docs for all language bindings and HTTP clients
- Fix files tab empty after login by deferring fetch until authenticated
- Fix memory popover to show all databases
Server
- HTTP API + WebSocket enabled by default on port 7691
- Built-in MCP server for AI integration
- Bolt 6.0 protocol support
- Prevent concurrent database load/unload/drop via lifecycle semaphore
- Fix upload hanging on duplicate database name
Packaging
- Maven Central:
com.truespar:traverse-java:0.6.2,com.truespar:traverse-http:0.6.0 - npm:
@truespar/traverse-http@0.6.0 - NuGet:
Traverse.Embedded,Traverse.Grpc,Traverse.Bolt,Traverse.Http - Docker Hub:
truespar/traverse:0.6.0 - Windows:
traverse-0.6.0-x86_64-windows.zip - Linux:
traverse-0.6.0-x86_64-linux.tar.gz
0.5.0 — 2026-03-05
Warning: This was the first public release and contains known memory leaks that cause OOM crashes during database hot-swap cycles. Upgrade to 0.6.0 or later.
Engine
- In-memory property graph with single-file
.tvdbpersistence - Write-ahead log for crash-safe persistence
- Incremental dirty-page tracking and in-place flush
- MVCC with snapshot isolation (undo-log architecture, 155x import speedup over naive approach)
- B-tree property indexing with Cypher DDL and planner integration
- Edge indexes for fast relationship property lookups
- Cost-based query optimizer with DP join ordering
shortestPath(),allShortestPaths(), and weighted shortest path (Dijkstra)- Existence and unique constraints with eager validation
- Morsel-driven pipeline parallelism for read-only queries
- Aggregate pushdown, expand-aggregate fusion, typed i64 fast paths
- Arena/pool allocators for query execution
- LOAD CSV for bulk data import
- C FFI layer for cross-language bindings
- Memory budget enforcement with configurable
TRAVERSE_MEMORY_LIMIT
Cypher
- openCypher TCK compliance: 99.95% (3891/3893 tests passing)
- CALL procedure support
reduce(), map projections, list comprehensions- SHOW INDEXES / SHOW CONSTRAINTS commands
- Global stripped-query plan cache
Bolt Protocol
- Full Bolt 5.x and 6.0 compliance
- TLS support (
bolt+s://) - Authentication and RBAC with role-based access control
- Multi-database support with bookmarks
- NOOP keepalive, tx_timeout, query notifications, Vector type
- Streaming result materialization
- Pipelined batch imports (512 stmts/batch)
Server
- Multi-database support with aliases and read-only databases
- gRPC API alongside Bolt protocol
- HTTP API with API key authentication and OpenAPI docs
- Database upload/download via HTTP
- Async task system for long-running operations
- IP allowlisting and query timeout
- Configuration system (TOML config, CLI flags, env vars)
- Version check and update notification
- Colored startup banner with connection URLs
CLI
- Interactive Cypher REPL with tab completion
- Script execution, parameters, plan rendering
- Multi-database support with
:usecommand - TLS support for
bolt+s://connections
Studio (Web UI)
- Graph visualization with ForceAtlas2 and D3 layouts
- CSV import, database upload/download, file manager
- Schema panel with property nesting under labels
- Cypher editor with Monaco, per-database query drafts
- Style editor with color picker, shapes, conditional rules
- Graph Assistant: AI chat with SSE streaming
- Command palette (Ctrl+P), quick-save (Ctrl+S)
- Dashboard with 3-engine benchmark charts
- Save & share queries
- License activation and device management
- Memory tooltip with per-database breakdown
.NET
Traverse.Embedded: Embedded graph database bindingsTraverse.Grpc: gRPC client libraryTraverse.Bolt: Native zero-dependency Bolt client (full protocol parity)Traverse.Http: HTTP management client (100% API coverage, 37 integration tests)
Licensing
- Trial mode with check-in, device tracking, and plan enforcement
- Ed25519 response signing for API security
Performance
- Morsel-driven parallelism for scan, expand, and aggregate queries
- Packed adjacency entries (24 → 12 bytes with u32 IDs)
- Dense AdjacencyStore for O(1) lookups in BFS/traversal
- FxHash replacing SipHash in hot paths
- Compact binary PropertyStore replacing BTreeMap
- Interned property keys as
PropertyKeyId(u32) - Zero-allocation record encoding for streaming PULL
- Lazy result streaming, batched morsel streaming
- Two-pass fan-in optimization for 2-hop count aggregates