Release notes

Release notes

Edit on GitHub

Developer build 21

  • Major API updates, some highlighted changes include:
    • Database.getDocument(id) will also return nil if the document was deleted.
    • Use term ‘value’ instead of ‘object’ for value/object based type setters.
    • Allows to specify a dispatch queue for posting changes when adding a change listener. This change has applied to Database, Replicator, and Query.
    • Removed LiveQuery and Query itself can be listened for changes.
    • Reorganize Query expressions - having Meta, Array, and Full-text expression into separated classes.
    • Support Full-text match on multiple indexed properties.
  • Revise all Objective-C and Swift API to inline with the standard naming convention.
  • Default conflict resolver algorithm changes as follows:
    • Deletion always wins.
    • Longest generation wins or Max RevID wins if the generations are the same.
  • Database is now thread safe.

  • Major API updates, some highlighted changes include:
    • Database.getDocument(id) will also return nil if the document was deleted.
    • Use term Value instead of Object for Value/Object based typesetters.
    • Allows specifying an Executor for posting changes when adding a change listener. This change has applied to Database, Replicator, and Query.
    • Removed LiveQuery and Query itself can listen for changes.
    • Reorganize Query expressions - having Meta, Array, and Full-text expression into separated classes.
    • Support Full-text match on multiple indexed properties.
  • Revise API to inline with the standard naming convention.
  • Default conflict resolver algorithm changes as follows:
    • Deletion always wins.
    • Longest generation wins or Max RevID wins if the generations are the same.

  • Fairly sweeping API changes to conform to the internal specification (in other words, to have as close to the same signatures as Java and Swift as possible). A final review is underway and hopefully not too many more changes are needed. Here are a few big ones:
    • Replication, Database, and IQuery events are no longer events, but now have methods (with the same signature as event handlers) registered via AddChangeListener (with an overload to accept a TaskScheduler, and now where possible the support assemblies provide a main thread task scheduler for convenience).
    • IQuery.Run() -> IQuery.Execute()
    • Mutable objects Set(), Add(). and Insert() overloads have been renamed (Set(string, object) -> SetValue(string, object), Set(string, string) -> SetString(string, string), etc)
    • Expression.Meta().ID -> Meta.ID
    • Query functions that operate on arrays moved to ArrayFunction class
    • No more ToLive() function on queries, and no more ILiveQuery. Queries are now automatically live if a change listener is added to them (No call to Run() needed for this behavior). They will stop firing if all change listeners are removed, or they are disposed.
    • Full text searching has been fleshed out more, and Match() has been removed from IExpression. Now the way to do it is to use FullTextExpression.Index(string).Match(searchString) where the Index argument is the name of the full text index you want to use.
    • Creating indexes now skips a step and takes arguments directly (Index.ValueIndex().On(...) -> Index.ValueIndex(...))
    • Fragment and MutableFragment are replaced by interfaces IFragment and IMutableFragment. The methods of getting and setting values have been converted to properties (ToFloat() / SetFloat() -> Float)

Developer build 20

  • New Immutable Document API (Breaking API Changes)
  • Bug fixes and performance improvement from LiteCore.

  • Bug fixes

  • KNOWN ISSUE Replication, and possibly other things, are broken by a Fleece deserialization bug. This has been corrected and will be resolved as of DB021.
  • The biggest change by far is the change to immutability rules. By default, databases now return read only documents and the naming of these objects has changed. In general, ReadOnlyXXX has become simply XXX, and XXX has become MutableXXX. For example, ReadOnlyDocument has become Document, and Document has become MutableDocument. To create a mutable document from a non-mutable one, use the ToMutable() function. Mutable documents will not have any concurrency guarantees, but non-mutable ones will.
  • Couchbase.Lite.Support.NetDesktop has been changed so that it is no longer a .NET Standard 1.4 library, but a multi-targeted .NET Core 1.0+ / .NET Framework 4.6.1+ library. There was a needed API that was not available in the .NET Standard 1.4 API, but moving the .NET Standard version up would have lost 4.6.1 support. The assembly is still compatible with its intended targets.
  • Fixes bugs: #925, #926, and other issues uncovered during testing

Developer build 19

  • Fixed Replicator’s uncleaned socket disconnect warning (#1937).
  • Fixed Session Cookie being overwritten (#1943).
  • Fixed Carthage build failure on DB019 (#1947).
  • Reimplemented Fragment API - API is now more light weight and has better performance.
  • Improved performance of read/write document data with Mutable Fleece.

  • IReadOnlyDictionary / IDictionaryObject, IReadOnlyArray / IArray now return Dictionary<string, object> and List<object> instead of IDictionary<string, object> and IList<object> so that the return value can be used in both read only and read write interface signatures (e.g. both Foo(IDictionary<string, object> and Foo(IReadOnlyDictionary<string, object>)
  • Ensure that calls to Activate are only performed once (unclear on the impact on Android if the passed activity gets destroyed)

  • Bug fixes

Developer build 18

  • Added headers property to ReplicatorConfiguration for adding additional HTTP headers when sending HTTP requests to a remote server.
  • Fixed invalid CFBundleShortVersionString.
  • Updated Lite Core to uptake the following fixes:
    • Fixed replicator crashes when stopping replicator immediately after starting.
    • Fixed replicator staying in BUSY status after finish replicating.
    • Allowed MATCH operator nested inside multiple ANDs.

  • Bug fixes

  • Slight refactor to ReplicatorConfiguration (Put Options properties directly into the configuration) to bring it inline with other platforms
  • Fix a bug in SelectResult.All() which would cause invalid queries if a From clause was added
  • LiteCore bug fixes
  • Bug fixes: 907 912 916

Developer build 17

  • Simplify encryption API. IEncryptionKey is now EncryptionKey (class instead of factory)
  • Overhaul logging, API change from setting levels via Log.Domains to Database.SetLogLevels and flags. Domains reduced.
  • No text logging by default. Text logging (to a default location depending on platform) can be enabled by calling EnableTextLogging() inside of the relevant support class (e.g. Couchbase.Lite.Support.UWP). All logging will go to a binary file in the default directory for a given platform (as determined by IDefaultDirectoryResolver).

  • Bug fixes

Developer build 16

  • Support Database Encryption
  • Implement a new index API
  • Move FTS.rank expression to Function.rank()
  • Make Replicator's User-Agent header that includes information about library version and platform.

  • Thread-safe with Database operation. (Other operations will be a thread-safe with next DB release)

  • Collation API now supported on Android
  • Redid Index API (indexes are now identified by name). See the new Index class documentation.
  • Encryption is now supported. Encryption keys can be added onto the DatabaseConfiguration class. This will encrypt database files and attachments.
  • Added in a rank() function for IExpression to order by FTS ranking result
  • Made a consistent User-Agent string that gets info on which platform is running
  • Changed the default Collation locale to be the one currently running on device

Developer build 15

  • Support Collation Expression.
  • Support FTS Ranking Value Expression.
  • Support database copy to allow to install a canned database.
  • Allow to set logging level.

  • Thread-safe with Database operation. (Other operations will be a thread-safe with next DB release)

  • Collation API now supported on Linux platforms (Android coming soon)
  • Statically compile, so iOS 9 will work now
  • Add a database copy API (note: current behavior will replace an existing database, but this may change) to make copies of a database (useful for seeding and/or backup).

Developer build 14

  • Support Select all properties.
  • Support Quantified expression (Any, AnyAndEvery, and Every).
  • Support Query's isNullOrMissing expression.
  • Support more Query functions including array, mathematics, string, and type functions.
  • Support type setters on Document, Dictionary, Array, and Query's parameters.
  • Support Int64 getter on Document, Dictionary, Array.
  • Added Connecting and Offline to the Replicator's ActivityLevel status.

  • Select all properties via SelectResult.All()
  • Lots of new functions (Check the Function class) for use in querying
  • Collection functions (Any / Every / AnyAndEvery) for running predicates on array items during query
  • Collation API (see Collation class) for locale and language based sorting of strings
  • Typed setter functions (SetString, SetInt, etc) and added GetFloat for completion
  • Expanded the replicator statuses

  • Support Select all properties.
  • Support Quantified expression (Any, AnyAndEvery, and Every).
  • Support Query's isNullOrMissing expression.
  • Support more Query functions including array, mathematics, string, and type functions.
  • Support type setters on Document, Dictionary, Array, and Query's parameters.

Developer build 13

  • Support query projection with alias names
  • CBLQuery returns CBLQueryResultSet instead of NSEnumerator . Same for Swift, Query return ResultSet instead of QueryIterator . CBLQueryRow is still used by CBLPredicateQuery.
  • CBLQueryResult supports get values both by indexes and by keys. Same for Result in Swift.
  • CBLDocument.documentID -> CBLDocument.id
  • Bug fixes : #1819, #1824, #1825, #1835

  • More Query API -> Meta, Limit, Offset
  • Changed CouchbaseLiteException extends from Exception instead of RuntimeException

  • Queries can now make use of Limit() and Offset()
  • The internal synching mechanism has been altered in a breaking way. With this release you need to use Sync Gateway 1.5.0-477 or higher.
  • SelectResult can now use As to create an alias for that particular column
  • Columns can now be accessed by key instead of just by index (by default the key is the last element of the property name that was selected [e.g. contact.address.city -> city], or an arbitrary 1-based index string $1, $2, $3, etc for rows that are not based on a property such as min, sum, etc. If an alias is provided, that will be used instead)
  • Corrected a silly spelling mistake (Support.NetDestkop-> Support.NetDesktop)
  • Removed DocumentID, Document, etc from IQueryRow and use IResult instead (see docs\examples\Program.cs for how to get the Document or ID, but Document might make a comeback before GA)

Developer build 12

  • Unify change event API for Database, Replicator, and LiveQuery by using block
  • More Replicator API -> Channel and DocumentID
  • More Query API -> Aggregate Functions, OrderBy, GroupBy / Having, Join, Projection, Parameters, Meta

  • More Query API -> GroupBy, Having, Select items, Join, Functions, Parameters, Meta

  • More Replicator API -> Cookie support, Certificate pinning, immediate conflict resolving for pull replication, Channel/DocID filter
  • More Query API -> GroupBy, Having, Select items, Join, Functions, Parameters

Developer build 11

  • LiveQuery
  • Authentication for Replicator

Developer build 10

  • Fixed replicator not correctly encoding documents when it saves the documents
  • Added an ability to pin server certificate to a replicator
  • Fixed custom functions not being registered in all opened SQLite connections
  • Fixed unused blobs not being garbaged after compacting a database

  • Added an ability to pin server certificate to a replicator
  • Fixed custom functions not being registered in all opened SQLite connections
  • Fixed unused blobs not being garbaged after compacting a database
  • Fixed replicator not correctly encoding documents when it saves the documents

  • ReplicationOptions -> ReplicatorConfiguration
  • IReplication -> Replicator
  • TLS support for replication (blips)
  • HTTP Basic auth support for replication (via ReplicationOptionsDictionary -> 'AuthOptionsDictionary`). This API will probably change.
  • Online / offline network change handling
  • Channel replication support (waiting on SG fix)
  • Make DI system public to allow third party support assemblies

  • Replication API
  • Replicator - Basic Authentication
  • Replicator - Online / Offline network change handling
  • Fixed replicator not correctly encoding documents when it saves the documents

Developer build 8

  • CBLDatabaseOptions -> CBLDatabaseConfiguration
  • New DocumentChangeNotification implementation
  • CBLArray optimization
  • New Replicator API with Online / Offline support
  • LiveQuery support
  • Minor changes to CBLDatabase and CBLDocument API including
    • CBLDatabase.compact()
    • CBLDatabase.count()
    • CBLDatabase.contains(id)
    • CBLDictionary.remove(key)
    • CBLDictionary nil value support

  • DatabaseOptions -> DatabaseConfiguration
  • New DocumentChangeNotification implementation
  • ArrayObject optimization
  • New Replicator API with Online / Offline support
  • LiveQuery support
  • Minor changes to Database and Document API including
    • Database.compact()
    • Database.count()
    • Database.contains(id)
    • DictionaryObject.remove(key)
    • DictionaryObject nil value support

  • New APIs on Database such as Count and Compact()
  • DatabaseOptions -> DatabaseConfiguration
  • New native library delivery mechanism (transparent, but now requires Activate call on .NET and .NET Core via Couchbase.Lite.Support.NetDesktop.Activate())

  • New APIs on Database such as count(), compact() and contains(String id)
  • New APIs on Dictionary such as remove(String key)
  • DatabaseOptions -> DatabaseConfiguration
  • Bug fixes

Developer build 7

  • New unified API for CBLDocument, CBLReadOnlyDocument, CBLDictionary, CBLReadOnlyDictionary, CBLArray, CBLReadOnlyArray.
  • Replaced CBLSubdocument with CBLDictionary.
  • Removed DocumentChangeNotification from CBLDocument. The DocumentChangeNotification will be reimplemented at the Database level in the next release.
  • New ConflictResolver API that take a single Conflict object as a parameter. The target, source, and commonAncestor property are ReadOnlyDocument object.
  • Bug fixes and performance improvement from LiteCore.

  • New unified API for Document, ReadOnlyDocument, DictionaryObject, ReadOnlyDictionaryObject, ArrayObject, ReadOnlyArrayObject.
  • Replaced Subdocument with DictionaryObject.
  • Removed DocumentChangeNotification from Document. The DocumentChangeNotification will be reimplemented at the Database level in the next release.
  • Bug fixes and performance improvement from LiteCore.

  • A new unified and simpler API
  • Finally, the public replication API for creating replications!

  • A new unified and simpler API

Developer build 6

  • Database & Document Notification

Developer build 5

  • Support replicating attachments
  • Support automatic 1.x database upgrade to 2.0

  • Support replicating attachments
  • Support automatic 1.x database upgrade to 2.0
  • Fixed Swift replication delegate not functional (#1699)

  • Replication! The new replicator is faster, but the protocol has changed, and the class API isn't yet finalized. Also, unfortunately there is no public way to create replications yet but this will come soon.
  • Support automatic 1.x database upgrade to 2.0.
  • Various other optimizations under the hood.

  • Blob
  • Conflict Resolver

Developer build 4

  • Replication! The new replicator is faster, but the protocol has changed, and the class API isn't yet finalized. Please read the documentation for details.

  • Cross platform Query API
  • Replication! The new replicator is faster, but the protocol has changed, and the class API isn't yet finalized. Please read the documentation for details.

  • Cross platform Query API

  • CRUD operations
  • Document with property type accessors
  • Cross platform Query API

Developer build 3

  • Cross platform Query API

N/A

  • Sub-document API
  • Some taming of the dispatch queue model. (A database gets a queue and all the objects associated with it share the same one. Callback queue has been removed, and callbacks now come over the action queue so that it is safe to access the DB directly from the callback). Thread safety checking has been made optional (default OFF) and can be enabled in the DatabaseOptions class.

N/A

Developer build 2

  • CouchbaseLiteSwift framework for the Swift API

  • Sub-document API

  • CRUD operations
  • Document with property type accessors
  • Blob data type
  • Database and Document Change Notification

N/A

Developer build 1

  • CRUD operations
  • Document with property type accessors
  • Blob data type
  • Database and Document Change Notification
  • Query
    • NSPredicate based API
    • Grouping and Aggregation support

N/A

N/A

N/A