Skip to content

Releases: kwilteam/kwil-db

v0.10.0 beta 3

10 Feb 18:26
v0.10.0-beta.3
22f7d2a
Compare
Choose a tag to compare
v0.10.0 beta 3 Pre-release
Pre-release

This is a pre-release. The changelog is coming soon.

v0.10.0 beta 2

06 Feb 19:12
v0.10.0-beta.2
e74fe75
Compare
Choose a tag to compare
v0.10.0 beta 2 Pre-release
Pre-release

Release notes pending

v0.10.0-beta-1

28 Jan 06:05
9a25922
Compare
Choose a tag to compare
v0.10.0-beta-1 Pre-release
Pre-release

Release notes pending

v0.9.3

04 Dec 22:28
v0.9.3
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.9.2...v0.9.3

v0.9.2

04 Dec 22:28
v0.9.2
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.9.1...v0.9.2

v0.9.1

02 Oct 23:32
800d559
Compare
Choose a tag to compare

What's Changed

v0.9.0

01 Oct 23:30
Compare
Choose a tag to compare

Kwil v0.9

This is a major release of Kwil DB with several new features.

The highlights are:

  • Zero downtime migrations
  • Data privacy modes: node peer filtering, and private RPC mode with authenticated calls
  • Support builds with customizable branding
  • Genesis and end-block hooks for extension authors
  • Kuneiform updates: many new functions and syntax improvements
  • A framework for testing Kuneiform schemas before deployment
  • Improved node monitoring
  • Removal of the previously-deprecated gRPC server and the legacy HTTP gateway

Contents

Important Upgrading Notes

Upgrading to this release requires a network migration. See the network migration documents for instructions on how to perform a network migration. Only upgrading from v0.8 is supported.

The application's protocol version is bumped from 0 to 1. This prevents nodes that are running different versions of Kwil from operating on the same network. The genesis file no longer includes a "version" section since this is determined by the application logic.

In certain cases, deployed schemas may not be compatible with v0.9. See the Kuneiform Language section for details.

Build Requirements and Dependencies

  • The minimum required Go version is now 1.22. (724fe4f)
  • Builds and tests use Go 1.23. (3aecf89, d50159e)
  • Update the consensus engine (CometBFT) to v0.38.12. (89bad53)

Security Policy

The supported versions are now as follows:

Version Supported
Latest beta or release candidate
v0.9.x
v0.8.x
< v0.8

See SECURITY.md for details.

Notable Features and Changes

Zero Downtime Migrations

This release adds a new type of migration called a Zero Downtime (ZDT) migration. Unlike the existing offline process, ZDT migrations launch the new network prior to terminating the existing network. There is a migration period during which changes on the existing network are replicated on the new network. See the docs for more information.

Note that the existing network must also support ZDT migrations. Since this is the first release of Kwil that supports such migrations, it cannot be used to go from a v0.8 network to a new v0.9 network. Future major releases will support ZDT migrations allowing this.

These changes also introduced two new transaction types: create resolution and approve resolution. These support generalized resolution processing, migration proposals being one such type.

Relevant code changes: f290d6c, 2f24aae, 0706798, ba6e3e, d175b7f

To support changeset creation from the logical replication stream from PostgreSQL, the type system in the pg package was reworked. See the following relevant changes to the DB internals and exported types in core/types: c983b22, dfa1d8a, 1a16488, 4ece583

NOTE: To support creation of changesets that enable detection and resolution of conflicts between the networks, all tables are now created with "full" replica identity". This changes "apphash" computation, so Kwil v0.9 cannot be installed in place over a v0.8 deployment's data.

Data Privacy Modes

To support use cases where a network needs to maintain data privacy, this release adds two main access control functionalities at both the P2P layer and in the RPC service.

Node Peer Filtering Capability

To run a private network of nodes that only permits inbound P2P connections from certain peers, there is now a private mode that uses peer filtering to only allow certain nodes to connect. The filtering is based on Node ID, which cryptographically ensures the identity of the peer.

A node's whitelist is composed of the current validator set, nodes with active join requests with an approval from the operator, configured seed nodes and persistent peers, and any manually whitelisted peers. This latter case is used to support the addition of authorized sentry (non-validator) nodes to support other functions such as RPC providers, indexers, and seeders.

It is enabled in config.toml with the chain.p2p.private_mode setting. Whitelisted peers may be set in config.toml with chain.p2p.whitelist_peers, or managed at runtime with the kwil-admin whitelist subcommands.
This functionality was added in 559b027.

Private RPCs and Authenticated Calls

A "private" RPC mode has been added with the following features:

  • All call requests are authenticated. The Kwil clients handle this automatically when communicating with an RPC provider in private mode. A private key must be configured with the client in order to sign the call requests.
  • Ad hoc SQL queries are prohibited.
  • Transaction status query responses do not include the full transaction, which could potentially contain data that the user is not authorized to access.

For Go SDK users, note that this adds a signature field to the core/client.CallMessage type.

Related commits: 6537114, 559b027, 177891a

Ability to Rebrand Customized Binary Builds

Projects now have the ability to build custom-branded binaries that group in kwild, kwil-cli, and kwil-admin. These binaries can be given customized default configurations.

The global cmd.BinaryConfig structure is added to allow changing the project name and other details. Projects should set their configuration in an instance of the cmd/custom.CommonCmdConfig and then create their application's root command with the NewCustomCmd function.

This was added in 2aee07c and efc3af4.

Extension Hooks for Genesis Initialization and End-Block Actions

There are now hooks for extension authors to perform arbitrary actions:

  • GenesisHook is a function that is run exactly once, ...
Read more

v0.8.4

15 Jul 21:43
2c71b80
Compare
Choose a tag to compare

This release of Kwil DB contains a fix to snapshot creation that could occur for records larger than 64kB, and a fix for a SQL parser bug that would prevent in-line expressions from being comparable (e.g. $1 is null without an explicit typecast).

The parse/v0.2.4 tag for the parse module accompanies this Kwil DB release.

What's Changed

  • Fix a snapshot creation error with bufio.Scanner exceeding its line scan limit. This affected both kwil-admin, and the background statesync functionality in kwild. (b3460a7)
  • Fix: in-line type assertions not being comparable. Actions using in-line statements with type casts for ambiguous types would not generate SQL properly. This would only occur when performing an expression (such as a comparison). Also fix a stack overflow when using the parse debugger tool via kwil-cli. (faf879e)
  • Prepare v0.8.4 (version package and go.mod update for parse module) (2c71b80)

Full Changelog: v0.8.3...v0.8.4

Build

The provided application archives on this release are built with Go 1.22.5.

v0.8.3

27 Jun 19:54
v0.8.3
507e528
Compare
Choose a tag to compare

This release of Kwil DB contains several minor fixes to the parse module, a fix to kwild's procedural language generation with unary expressions, and a fix to a possible startup crash if generated snapshot files on disk are corrupt or unreadable.

The parse/v0.2.3 tag for the parse module accompanies this Kwil DB release.

What's Changed

  • engine: fix generated unary where there was a missing space (6d24370)
  • kwild: fix handling invalid snapshot files (507e528)
  • parse: fix unknown columns in indexes / foreign keys (7eb5a26)
  • parse: removed an unneeded uuid case (16efeef)
  • parse: fix Execute handling of parameters (9794a49)
  • kwild,kwil-cli: use parse/v0.2.3 in the main module (5d29af4)
  • version: 0.8.3 (b2d1346)

Full Changelog: v0.8.2...v0.8.3

Build

The provided application archives on this release are built with Go 1.22.4.

v0.8.2

24 Jun 15:40
e525214
Compare
Choose a tag to compare

This release of contains several bug fixes and backported feature additions.

What's Changed

  • Introduce genesis consensus params to configure max limits for votebody transactions. (3d6772e)
  • Add genesis and end block hooks. (881ebfb)
  • Added look back for token errors. (624bff9)
  • Fix/kwil admin config. (e4c2f82)
  • Fixed panic on parser returns. (062c9eb)
  • version: bump self report version to 0.8.2 (1130d69)
  • Use parse/v0.2.2 (e525214)
  • Change log level for failed resolutions (6a09f17)
  • CI: Backport release workflow update (082e44d)

Full Changelog: v0.8.1...v0.8.2