Kivik v2.0.0 released
Feb 9, 2020 • Jonathan Hall
Today, Kivik 2.0.0 is finally tagged and stable, with only one minor bug fix since the final pre-release announced in December.
Highlights for this release are:
- An improved API.
- Support for many newer features of CouchDB, such as the
- Extended support for existing features of CouchDB, such as
_bulk_get, multi-part get requests, improved support for replication features, etc.
- A number of bug fixes.
A more extensive (but by no means exhaustive) list of changes follows.
- New() no longer takes a
- Rows.Key() now returns the raw JSON for the key, rather than unquoting it.
kivik.Status*constants were removed. Use
- Client.DB() now defers errors until the next method call.
- DB.Get() now defers errors until the next method call.
- Client.DBUpdates() now takes a
- DB.BulkDocs() now takes a slice of documents, rather than an empty interface.
- DB.GetAttachmentMeta() no longer takes a rev argument, which was redundant with options.
- The Attachment type is completely re-designed.
- Replaced the
DB.Rev()method with DB.GetMeta().
- Added the DB.Err() method to explicitly check a deferred error.
- The Attachment type now includes the RevPos and Digest fields, needed for replication.
- Kivik-generated errors now provide the Unwrap method, introduced in Go 1.13.
- Added the DB.RevsDiff() method, needed for replication.
- Added the Client.Config(), Client.ConfigSection(), Client.ConfigValue(), Client.SetConfigValue(), and Client.DeleteConfigKey() methods, to manage server configuration.
- Changes feed now reports the ETag.
- Added the Client.Close() and DB.Close() methods.
- Added the Client.ClusterSetup() and Client.ClusterStatus() methods.
- Added the Client.Ping() method.
- Added the DB.BulkGet() method.
- Added the DB.LocalDocs() and DB.DesignDocs() methods.
- Added the DB.Purge() method.
- Added the Client.DBsStats() method.
- Added the experimental AttachmentsIterator type, for use with multi-part get requests.
Kivik 3.0.0 should follow very shortly (within hours or days), and will be identical to Kivik 2.0.0, except that it will be configured for use with Go modules.