v1.0.0 is packed with a lot of new features and bug fixes. Some high-level details include:
- PostgreSQL compatible API: Implement a PostgreSQL wire protocol (v3) compatible API, including read-only endpoints, tls configuration, and addition of unnest table-valued function (similar to
rarray) that accepts postgres arrays into tables for bulk queries (#83, #337, #405,#174, #283) - HTTP API: Add
v1/updates/:tableendpoint for streaming lightweight primary key updates for a table,v1/healthendpoint to query current health of corrosion node, and accept all JSON types for SQLite params input (#262, #423) - State synchronization: Parallel synchronization with many deadlock and bug fixes (#78, #201), more efficient format for sending changes between nodes and prioritization of more recent changes (#373), burstable change processing (#431).
- Bookkeeping & change processing: Reduced locks around internal bookie structure (#433), and reduce info kept in-memory for bookkeeping (#189) and many fixes around partials, gaps, and buffered versions.
- Rust client (
corro-client): typed query events and related API cleanups (#126) - CLI:
corrosion consul syncwill now bundle services and checks in a single transaction (changeset) (#73) - Schema migration: Support existing tables being added to the schema (#64)
- Observability: richer metrics and logging for various parts of Corrosion (including subscription and channel-capacity signals) (#468, #472), and stronger Antithesis coverage (#463)
- Garbage Collection: Add optional garage collection for tables that don't reuse primary keys (418)
Migrating from Corrosion v0.1.0 to v1.0.0:
v1.0.0 introduces some breaking changes, notably the database schema has changed. The most significant database changes are:
- The clock tables (
<table>__crsql_clock) have a new schema. - The
__corro_bookkeepingtable has been removed.
Because of these schema differences, a running v0 cluster cannot be upgraded
in-place. Instead, the entire cluster must be re-bootstrapped from a single
snapshot. Please see reseeding corrosion
Thanks to everyone who made a contribution!