Skip to content

Release v0.5.0

Choose a tag to compare

@github-actions github-actions released this 18 Jul 15:00

Orisun v0.5.0

Highlights

Orisun 0.5.0 applies data-oriented design across event writes, reads, latest-by-criteria queries, and publishing. Hot paths now use compact Go batches and scalar fields below the transport boundary, while the public gRPC/protobuf wire contract remains unchanged.

Data-oriented write and read paths

  • SaveEvents normalizes incoming events once into a canonical PreparedEventBatch; PostgreSQL, SQLite, and FoundationDB consume that prepared representation without repeating JSON decoding.
  • Storage reads return a contiguous ReadEventBatch with scalar positions and time.Time timestamps instead of constructing protobuf object graphs.
  • Embedded reads, catch-up subscriptions, and publisher drains retain the packed representation until data reaches the gRPC boundary.
  • Latest-by-criteria requests now use LatestByCriteriaQuery, and results use a positionally aligned LatestByCriteriaBatch with an explicit Found flag. PostgreSQL, SQLite, and FoundationDB all execute this path without protobuf objects.

Publisher and read behavior

  • Publisher batches are validated as completely advancing before any event is published, preventing partial publication of an invalid prefix.
  • A publisher checkpoint is persisted once after the complete acknowledged batch instead of after every event. Per-boundary (transaction_id, global_id) ordering and at-least-once delivery semantics are preserved.
  • Packed event JSON encoding is allocation-bounded.
  • Read pages are capped at 10,000 rows at the gRPC boundary; internal drainers continue paging by position.

Breaking Go API changes

  • EventsSaver implementations must provide SavePrepared and accept PreparedEventBatch.
  • EventsRetriever implementations must provide GetBatch and use the packed latest-by-criteria query/result types.
  • Embedded OrisunServer.GetEvents callers now receive ReadEventBatch.
  • Embedded OrisunServer.GetLatestByCriteria callers now pass LatestByCriteriaQuery and receive LatestByCriteriaBatch.
  • The former protobuf-shaped backend methods and compatibility fallback are removed.

Compatibility and migration

  • The public gRPC/protobuf wire contract is unchanged, so remote Go, Node.js, Java, and other gRPC clients require no protocol migration.
  • Existing database data and on-disk formats require no migration for this release.
  • Third-party Go storage backends and embedded Go callers must update for the new interfaces and packed value types.

Performance

  • SQLite packed reads measured about 12.9 KB and 142 allocations per operation, compared with about 13.1 KB and 203 allocations previously.
  • Packed publisher JSON encoding measured about 300-318 ns, 320 B, and one allocation per event, at parity with the protobuf encoder while avoiding protobuf use on internal paths.

Documentation

  • Internal architecture documentation now describes the packed representations and transport boundary.
  • The documentation site design, navigation, branding, CCC/DCB explanations, backend guidance, and OrisunLabs project links were refreshed.

Full changelog: v0.4.10...v0.5.0

Installation

Linux

# PostgreSQL-only binary
curl -L https://github.com/OrisunLabs/Orisun/releases/download/v0.5.0/orisun-pg-linux-amd64 -o orisun-pg
chmod +x orisun-pg

# SQLite-only binary
curl -L https://github.com/OrisunLabs/Orisun/releases/download/v0.5.0/orisun-sqlite-linux-amd64 -o orisun-sqlite
chmod +x orisun-sqlite

# FoundationDB-only binary (Linux only; requires the FoundationDB
# client library installed: foundationdb-clients 7.3.x)
curl -L https://github.com/OrisunLabs/Orisun/releases/download/v0.5.0/orisun-fdb-linux-amd64 -o orisun-fdb
chmod +x orisun-fdb

macOS

# PostgreSQL-only binary for Apple Silicon
curl -L https://github.com/OrisunLabs/Orisun/releases/download/v0.5.0/orisun-pg-darwin-arm64 -o orisun-pg
chmod +x orisun-pg

# SQLite-only binary for Apple Silicon
curl -L https://github.com/OrisunLabs/Orisun/releases/download/v0.5.0/orisun-sqlite-darwin-arm64 -o orisun-sqlite
chmod +x orisun-sqlite

Windows

Download the PostgreSQL-only or SQLite-only binary from the assets below.

Docker

docker pull orexza/orisun:0.5.0-pg
docker pull orexza/orisun:0.5.0-sqlite
docker pull orexza/orisun:0.5.0-fdb

Channel tags are also available: pg, sqlite, and fdb.