.NET

.NET

1.3.1 Wednesday, September 14, 2016


As part of this release we had 48 commits which resulted in 4 issues being closed.

This is a maintenance release which includes hotfixes applied against 1.3.0.

Bugs

  • #693 TestJSViews failing with ForestDB
  • #716 v1.3 Unauthorized http state not reported on replicators LastError property
  • #717 Unexpected replications returned from active tasks
  • #723 POST _replicate fails which when "source" or "target" is a dictionary

Download

You can download this release from nuget.org:

System Requirements

Couchbase Lite for .NET 1.3.1 is compatible with the following .NET runtimes and operation systems:

.NET Runtime OS
Xamarin iOS, Android
Mono (.NET 3.5+) OS/X, Linux
Microsoft .NET 3.5+ Windows Desktop

1.3 Thursday, August 3, 2016


As part of this release we had 329 commits which resulted in 68 issues being closed.

This is a feature release, with a focus on performance. Noteworthy changes:

  • Support for OpenID Connect authentication, so you can log into Sync Gateway using a 3rd-party identity like a Google or Yahoo ID.
  • Timed expiration of documents can help keep your database from growing indefinitely.
  • Better performance with docs that have many revisions. Replication is faster, and older revisions are now automatically cleaned up in SQLite storage.
  • Clearer error messages and better logging, including customizable domains and app.config support
  • And of course many smaller optimizations, and lots of bug fixes.

Enhancements

  • #50 Add WebSocket support to replication
  • #558 Missing PrefixMatchLevel under query
  • #570 Implement Database.Close()
  • #574 Remove requirement to define SQLCIPHER
  • #582 Stop using long poll limit
  • #595 Support POST /_changes in listener
  • #596 Package 32-bit CBForest-Interop.dll
  • #599 Allow users to specify the format they want dates to be deserialized as
  • #606 Implement remote logging interface
  • #613 Make View.UpdateIndex() public
  • #615 Hook up GET tasks
  • #617 TTL support
  • #634 No way to remove a database.
  • #635 Add support for HTTP 408 status
  • #639 Provide build of ListenerConsole in latestbuilds with each nuget package set.
  • #648 Major inefficiencies replicating docs with many revisions
  • #650 Investigate ability to more quickly start a stopping replication
  • #652 OpenID connect mechanism
  • #653 REST API for TTL
  • #678 Implement GET design doc
  • #685 Add API for clearing OpenID auth token
  • #686 OpenID tokens in the key store should be per-database

Bugs

  • #557 SimpleAndroidSync freezing when adding items offline
  • #573 Implement query filter on ForestDB views
  • #580 Prevent nuget from using incompatible Stateless versions
  • #583 System.BadImageFormatException when calling manager.GetDatabase("dbname") method
  • #590 Listener crashes when receiving improper messages
  • #591 Warn if map function calls emit(null, ...)
  • #608 Listener intermittently enters hanging state
  • #609 After purging a doc, live queries are not informed of the view change
  • #610 Docs in SQLite dbs never get pruned until entire db is compacted
  • #611 Stop() should not wait for changes to finish
  • #612 When examining an exception, all nested exceptions should be examined
  • #616 ExecSQL timeout prevents successful query of a very large db
  • #623 Pushing ending prematurely
  • #625 Xamarin Android crash due to hitting max application memory while syncing large attachments
  • #627 Revpos == 0 needs to be treated as valid
  • #628 Fallback to GET when POST is not allowed to _changes
  • #631 Duplicate rows emitted during UpdateIndex
  • #636 Starting a replication that already exists causes NRE
  • #637 iOS device build error in 1.2.1.1
  • #640 Docs taking a really long time to replicate
  • #641 401 Unauthorized during replication
  • #643 Manager constructor fails on Windows 10
  • #644 Heartbeat not behaving correctly with Listener (not honoring user setting)
  • #654 Change tracker paused not working
  • #655 Web socket change tracker doesn't use auth
  • #656 Delete replications not following the same behavior as the native iOS library
  • #657 Documents with null _attachments property cause NullReferenceException
  • #659 Document.Update enters infinite loop
  • #660 Setting log configuration via app.config is throwing exception
  • #661 Removed attachments reported by UnsavedRevision
  • #666 Unsaved attachment ContentType property throws NullReferenceException
  • #667 WebSocketChangeTracker does not support using cookies for authentication
  • #669 POST id"
  • #673 Incorrect processing in REST API of documents with null bodies
  • #674 Needless exception thrown and caught when dynamic DLL is loaded
  • #675 Incorrect class type causing issues with REST all documents query
  • #676 Rare continuous changes feed issue over SSL
  • #679 Functional test failure on auto pruning
  • #683 Fail to GET encrypted raw attachment
  • #687 Pusher not properly setting headers on HTTP requests
  • #688 Null reference exception during functional auto prune test
  • #694 Xamarin Android SIGSEGV on unit test
  • #698 NullReferenceException in SendAsyncRequest
  • #705 Replication unable to recover from remote checkpoint conflict

Known Issues

  • #693 TestJSViews failing with ForestDB

Download

You can download this release from nuget.org:

System Requirements

Couchbase Lite for .NET 1.3 is compatible with the following .NET runtimes and operation systems:

.NET Runtime OS
Xamarin iOS, Android
Mono (.NET 3.5+) OS/X, Linux
Microsoft .NET 3.5+ Windows Desktop

1.2.1 Thursday, April 21, 2016


Couchbase Lite for .NET 1.2.1 is a maintenance release.

Enhancements

  • #433 Enable SSL support in Listener
  • #581 External property on database change event

Bugs

  • #589 DocumentChange.IsConflict is always false for pulled revisions
  • #593 _replicate endpoint hangs
  • #601 Incorrect _local 404 detection in P2P scenario
  • #602 Pusher does not reset to 0 when its sequence does not agree with remote checkpoint
  • #607 IOException when upgrading from 1.1.2 -> 1.2.0.3
  • #618 TestJSViews fails with the CBForest per thread connection model
  • #619 Race condition exists between LiveQuery and View
  • #620 MultiStreamWriter AllOutput causes timeout on Android
  • #622 Uncaught exception in Manager.OpenDatabase causes crash

Download

You can download this release from nuget.org:

System Requirements

Couchbase Lite for .NET 1.2.1 is compatible with the following .NET runtimes and operation systems:

.NET Runtime OS
Xamarin iOS, Android
Mono (.NET 3.5+) OS/X, Linux
Microsoft .NET 3.5+ Windows Desktop

Support Statement

Version 1.1 was released in June, 2015. With this release of version 1.2.1, the support window for 1.1 expires in August 2016.

Release Release Date End of Life Date
1.0 October 2014 December 2015
1.1 June 2015 August 2016
1.2 February 2016

1.2.0 February 3, 2016


As part of this release we had 323 commits which resulted in 47 issues being closed.

This release features a number of performance improvements, enhancements, and bug fixes, including:

  • Encryption Support - Databases may now be encrypted. The encryption process uses industry standard protocols (PBKDF2 for key generation and 256-bit AES for encrypting).

  • ForestDB Storage Engine (Developer Preview) - You may now take advantage of the performance increases of Couchbase's new ForestDB storage library. It was designed from the ground up to be a key-value storage engine and lends itself perfectly to our JSON model.

  • Improved Performance - Sync protocol enhancements, compression support, and lower memory usage are just a few of the many performance improvements we've included.

Starting with this release the nuget package has been modularized. Making use of these two new features requires installing additional packages from nuget. By default, Couchbase.Lite will use Couchbase.Lite.Storage.SystemSQLite which makes use of the system-installed SQLite library (or a provided one for Windows). To use encryption with SQLite, you must install the Couchbase.Lite.Storage.SQLCipher package. To use ForestDB (with or without encryption) you must install the Couchbase.Lite.Storage.ForestDB package.

Enhancements

  • #378 Refactor to pluggable storage engine
  • #391 ForestDB Storage Engine
  • #400 Support HTTP request / response compression
  • #408 Implement PCLSqlite SQLCipher Support
  • #410 Add GZip support for attachment compression
  • #430 Handle UpdateIndex() in an efficient thread-safe manner
  • #458 Add "_conflicts" property to doc in map function when doc is in conflict
  • #465 Expose CBLView.totalRows to public
  • #466 Add BySequence to AllDocsOptions
  • #473 Support for CBLReplication.pendingDocumentIds
  • #479 Database not getting attachments from ancestry when processing attachments
  • #484 Add support for SQLCipher
  • #493 Attachment blob file name is not uppercase
  • #497 Encrypt file attachments
  • #516 ForestDB encryption support
  • #522 Implement JS filter compiler
  • #524 Add official openDatabase API for encryption/storage options
  • #525 Confirm include_doc_seq usage
  • #538 Replicator shouldn't fetch remote checkpoint if no local checkpoint
  • #541 Implement view grouping
  • #544 Set custom user agent on HTTP requests
  • #546 Don't process 'removed' changes feed entries
  • #552 Optimize first-time sync

Bug fixes

  • #426 POST: db/_revs_diff returns 417 instead of 100
  • #469 Replicators should have independent cookie storage
  • #470 Add replicator support for remote dbs with varying URLs
  • #478 Issue in accessing docs in Parallel for each loop
  • #486 Replication deadlocking on Linux
  • #489 Unable to replicate using Facebook authenticator
  • #490 Views lost after complete recreation of database
  • #496 Dates should stringify with 8601 format
  • #505 [Unity] createAllDocumentsQuery().toLiveQuery() Throws Exception
  • #517 Error when non-contineous sync ends.
  • #527 Filter out _removed revision from push replication
  • #531 Replication freeze when _change feed contains a doc which is no longer in _all_docs feed. "Tag: Replication Message: Got error NotFound"
  • #537 When replace database, last seq for replication should be imported
  • #542 Replicators cannot be restarted
  • #545 Escape view names in ForestDB view store
  • #547 TypeInitializationException during CouchbaseSample.iOS launch
  • #550 LiveQuery notification throttling too aggressive by default
  • #553 SimpleAndroidSync crashes when "Cleaning" entries from iOS
  • #554 Ensure that the database upgrade preserves local documents
  • #565 IOS sample app doesn't show any results with ForestDB
  • #566 TestRemoteConflictResolution failing
  • #569 SetValidation causes always failing revisions when set to null (i.e. "removing")

Known Issues

  • #433 Enable SSL support in Listener
  • #571 Can't switch between SQLite and SQLCipher on Android

Download

You can download this release from nuget.org:

System Requirements

Couchbase Lite for .NET 1.1.1 is compatible with the following .NET runtimes and operation systems:

.NET Runtime OS
Xamarin iOS, Android
Mono (.NET 3.5+) OS/X, Linux
Unity 4.6 (Pro) iOS, Android
Unity 4.6 (Free and Pro) Windows Desktop, OS X, Linux
Unity 5 Personal and Pro iOS, Android, Windows Desktop, OS/X, Linux
Microsoft .NET 3.5+ Windows Desktop

Support Statement

Version 1.1 was released in June, 2015. With this release of version 1.2, the support window for 1.1 expires in August 2016.

Release Release Date End of Life Date
1.0 October 2014 December 2015
1.1 June 2015 August 2016
1.2 February 2016

1.1.1 Sept 14, 2015


Couchbase Lite for iOS v1.1.1 is a hotfix release containing fixes for several issues, especially around stability for the Listener.

Bug fixes

  • #500 iOS can't handle concurrent pullers
  • #487 No valid leaving transitions are permitted from state 'Initial' for trigger 'StopGraceful'
  • #485 Managed heap corruption on Windows
  • #477 Replicate attachment with IChallengeResponseAuthenticator
  • #464 _local logic handler doesn't handle error responses correctly
  • #463 Manager allows identical replicators to run simultaneously
  • #462 Migrate to incremental JSON parsing
  • #457 Two LiveQueries over one view cause duplication of new rows
  • #455 Pull Replication with DocIds is returning all documents
  • #449 Replication Push is failing when attachments are involved
  • #447 Array order is ignored on QueryEnumerator and IDictionary
  • #442 Error on attachments with digest as MD5
  • #438 Replication.CompletedChangesCount is always 0
  • #435 System.UnauthorizedAccessException while sending a Get request on ip:port/db_name and some other Peer to Peer Sync Issues
  • #432 [Listener] Implement HTTP Basic authentication (Note: Digest auth will be held back until 1.2)
  • #431 [Listener] Internal server error when doing a GET with attachments
  • #418 Exception when calling GetDatabase()
  • #407 Retrieving attachment Stream fails on UnsavedRevision
  • #398 Setting FilterParams results in an unhanded exception
  • #384 PullReplication: new revision makes attachment disappear
  • #383 LiveQuery should re-run query from scratch after options are changed
  • #356 BulkDownloader HTTP request timeouts not properly handled

Known Issues

  • #504 Bonjour P2P services sometimes have trouble unregistering (especially on Linux / Android).
  • #486 Replication deadlocking on Linux
  • #481 [Unity Demo] _bulk_get deadlocks on Unity.iOS

Download

You can download this release from nuget.org:

System Requirements

Couchbase Lite for .NET 1.1.1 is compatible with the following .NET runtimes and operation systems:

.NET Runtime OS
Xamarin iOS, Android
Mono (.NET 3.5+) OS/X, Linux
Unity 4.6 (Pro) iOS, Android
Unity 4.6 (Free and Pro) Windows Desktop, OS X, Linux
Unity 5 Personal and Pro iOS, Android, Windows Desktop, OS/X, Linux
Microsoft .NET 3.5+ Windows Desktop

Support Statement

Version 1.0 was released in May, 2014. With this release of version 1.1, the support window for 1.0 expires in December 2015.

Release Release Date End of Life Date
1.0 October 2014 December 2015
1.1 June 2015

1.1.0 June 17, 2015


Couchbase Lite for .NET 1.1 packs in a number of significant enhancements, including:

  1. Self-hosted HTTP REST endpoint. The Couchbase Lite HttpListener now enables your apps to self host it's own REST API, providing a great way to serve data and files to HTTP clients and HTML/JavaScript apps, provide a mechanism for language interopability, simple filesharing, or even interprocess communication.
  2. Peer-to-peer sync! With the introduction of Couchbase Lite's self-hosting capability, we've enabled two or more apps using Couchbase Lite to replicate with each other--without any other network infrastructure. We've also included support for the most popular way of discovering peers: Bonjour/DNS-SD.
  3. Support for Unity3D! Now you can bring the best mobile database to your Unity3D games.
  4. Overhauled the internal storage code which now implements the single-writer/multiple-reader pattern in order to achieve better performance and stability.

Note:Couchbase Lite 1.1 has a new optimized database schema which is not backwards compatible with 1.0.4 and earlier release. Once automatically migrated to the Couchbase Lite 1.1.0 format, your application’s .cblite database files are no longer readable by earlier versions. This would only impact developers attempting to share a database among multiple apps running different versions of Couchbase Lite, or Couchbase Lite downgrade scenarios.

Features and Improvements

  • #425 Add NSFileProtection support for Xamarin.iOS
  • #409 Add migration support for iOS 1.1 SQLite db schema
  • #405 Add in replication optimization from iOS version
  • #392 Make Database.close() method public (API Change)
  • #387 Indexing scales poorly, due to suboptimal SQL DELETE query
  • #380 Add HttpListener implementation
  • #360 Support for Unity 3D
  • #348 Refactor StorageEngine to segregate reads and writes
  • #83 Add Router support

Bug fixes

  • #423 RemoteCheckpointDocID not using custom channel sets when computing checkpoint
  • #421 Pull sync not working after upgrade from 1.04 to 1.1-pre2 in C# service
  • #406 VS can not load sample
  • #397 Setting Pusher.DocIds does not filter which docs are actually pushed
  • #396 In Owin, getting "Unable to create a storage engine, fatal error" message
  • #388 Updating a document using Update() unexpectedly results in a conflict
  • #379 ToLiveQuery() doesn't preserve query's attributes
  • #372 NullReferenceException when trying to call SetCookie on a Replication object from a C# console application
  • #358 Changes performed offline don't sync when going online.
  • #335 Intermittent deadlock during perf test
  • #319 Not all new documents get queued for pushing to the server sometimes
  • #257 Database.RunInTransaction() saves data when the delegate returns false.
  • #196 Add no_attachments column support to Database.UpdateAttachments

Download

You can download this release from nuget.org:

System Requirements

Couchbase Lite for .NET 1.1 is compatible with the following .NET runtimes and operation systems:

.NET Runtime OS
Xamarin iOS, Android
Mono (.NET 3.5+) OS/X, Linux
Unity 4.6 (Pro) iOS, Android
Unity 4.6 (Free and Pro) Windows Desktop, OS X, Linux
Unity 5 Personal and Pro iOS, Android, Windows Desktop, OS/X, Linux
Microsoft .NET 3.5+ Windows Desktop

Support Statement

Version 1.0 was released in May, 2014. With this release of version 1.1, the support window for 1.0 expires in December 2015.

Release Release Date End of Life Date
1.0 October 2014 December 2015
1.1 June 2015

1.0.4, January 17, 2014


Some highlights from our latest quality release:

Fixes

  • Implements the Unified API for Xamarin.iOS.
  • Xamarin component now uses Nuget for managing dependencies.
  • Disables TLS fallback to SSL3 (POODLE)
  • Fixed BulkDownloader deadlock in a windows systems without Xamarin.
  • Unknown unhandled exception thrown during Update call to storage engine.
  • Fixed NRE in bulk downloader.
  • Slower than expected performance on Windows
  • Manager static ctor crashes on Azure
  • Update document without re-sending attachments
  • [Xamarin] Fixes list item entry problem in Android sample on Nexus 5/Lollipop.

1.0.0, October 9, 2014


This is our first official release for Couchbase Lite for .NET. An expansion of our existing product, the .NET development started as a joint project between Xamarin and Couchbase. With this initial release, we support Xamarin targets such as Xamarin.iOS, Xamarin.Android and Xamarin.Mac, as well as major platforms like Windows 8/8.1 and Windows 7. Coming soon will be Windows XP and Windows Phone support, and we are on the lookout for support for the upcoming Windows 10 release.

Highlighted fixes

  • _bulk_get returns NotFound error when replication URL ends with a forward slash
  • Uppercase Revision Ids are incompatible with CouchDB
  • Replicator.Authenticator should be public
  • AccessViolationException on Windows
  • SQLite error on "database disk image is malformed" after replacing database file
  • TraceEventCache undefined in Couchbase.Lite.0.9.5 for Android
  • Calling `Properties` on an unsaved document throws NRE

1.0.0-Beta 5, September 23, 2014


0.9.5 features major fixes and brings the product another step closer to 1.0.0. This also marks the first time we have made Couchbase Lite .NET available on NuGet.

Highlights

  • Client stops pulling changes, #272
  • ChangeTracker's Run thread can fail when trying to Dispose a non-completed task, #269
  • Localization quirk (i.e., building in ja-JP) makes NUnit fail to run tests, #268
  • Xamarin.Android sometimes crashes with "EntryPointNotFoundException: getifaddrs", #277
  • CouchDB sync issues, #274
  • Query.inclusiveEnd propagation across platforms, #276
  • SingleThreadTaskScheduler sometimes throws an NRE, #282
  • _bulk_get fails in release builds, #286

Known issues

  • Only targets Xamarin.iOS and Xamarin.Android.

1.0.0-Beta 4, September 3, 2014


Our first functional GA release candidate for .NET. Our next goals are smoothing out issues found in the RC, and also supporting more .NET targets.

Highlights

  • Full Replication API support and cross-platform parity.
  • Change Tracker has been fixed
  • Fixes to HTTPS support, bulk download, and network reachability support

Known issues

  • Only targets Xamarin.iOS and Xamarin.Android.

1.0.0-Beta 3, August 18, 2014


We continue to port more fixes, and add more parity to our .NET platform, steadying it toward 1.0.0.

Highlights

  • Continuing to add more feature parity, particularly around Replication. Addressed issues around authentication and Cloudant support.
  • Fixed: Out-of-memory error.
  • Fixed: Issue #249 Could not load SqlitePCL.raw

Known issues

  • Only targets Xamarin.iOS and Xamarin.Android.

1.0.0-Beta 2, July 08, 2014


In our second Beta release of C# support, we have included a couple of fixes from early feedback, strengthened our test suite coverage and set the groundwork for additional .NET platform support.

Highlights

  • Attachments now work.
  • Fixed: Crashes with "non-page-aligned, non-allocated pointer being freed" error.
  • Lays the groundwork for supporting additional .NET platforms.
  • Passes lots of additional tests.
  • General stability improvements.

Known issues

  • Authentication is not supported yet.
  • Only targets Xamarin.iOS and Xamarin.Android.

1.0.0-Beta 1, May 21, 2014


In our first Beta release of C# support, we have a majority of features ported over from our Java libraries, but still have a remaining amount of work and progress to make, specifically in Replication. We also still need to develop a working and distributable PCL for full .NET support, but in the meantime you can make use of the Xamarin binding for C# for iOS and Android.

Replication

  • Basic Authentication is not supported: Issue #10.
  • New Authenticator and AuthenticatorFactory are not implemented: Issue #33.
  • Cookie management is not supported: Issue #34.
  • HTTPS is not supported: Issue #9.

Portable Class Library Support

  • The library is currently not a .NET Framework Portable Class Library: Issue #5.