Releases: kwilteam/kwil-db
v0.10.0 beta 3
This is a pre-release. The changelog is coming soon.
v0.10.0 beta 2
Release notes pending
v0.10.0-beta-1
Release notes pending
v0.9.3
What's Changed
- fix: deprecated extension config map not set properly by @brennanjl in #1090
- services/jsonrpc: compress middleware by @jchappelow in #1093
- jsonrpc/usersvc: use best block height/time in view call by @jchappelow in #1095
- update cometbft dep for security alert by @jchappelow in #1098
- add all-scalar flag by @brennanjl in #1101
- fix csv parsing issue by @jchappelow in #1108
- version: update self-report tag for vanilla builds by @jchappelow in #1114
Full Changelog: v0.9.2...v0.9.3
v0.9.2
What's Changed
- added max db connections config by @brennanjl in #1069
- pg: recognize streaming prepared tx msg by @brennanjl in #1073
- sql,pg: catch db backend failure by @jchappelow in #1082
- expose TrustPeriod flag for snapshots by @jchappelow in #1083
- engine/generate: fix repeated numbered arg typecast by @brennanjl in #1077
Full Changelog: v0.9.1...v0.9.2
v0.9.1
v0.9.0
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
- Build Requirements and Dependencies
- Security Policy
- Notable Features and Changes
- Zero Downtime Migrations
- Data Privacy Modes
- Ability to Rebrand Customized Binary Builds
- Extension Hooks for Genesis Initialization and End-Block Actions
- Kuneiform Language
- New Kuneiform Testing Framework
- Health Check Endpoint and JSON-RPC Methods
- Log Rotation and Archival
- Expose CometBFT Prometheus Metrics
- Extension Interfaces
- Breaking Changes
- Minor Features and Changes
- Fixes
- Testing
- Diff summary
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, ...
v0.8.4
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 bothkwil-admin
, and the background statesync functionality inkwild
. (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 andgo.mod
update forparse
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
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
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