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_memory instead 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 native fetch
  • 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 .tvdb persistence
  • 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 :use command
  • 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 bindings
  • Traverse.Grpc: gRPC client library
  • Traverse.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