diff --git a/Jenkinsfile b/Jenkinsfile index 160f79190..84f4f6aa1 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,7 +1,7 @@ pipeline { agent none options { - timeout(time: 10, unit: 'MINUTES') + timeout(time: 10, unit: 'MINUTES') } stages { stage("Validate Build") { @@ -9,22 +9,28 @@ pipeline { stage("Validate C#") { agent { label 's61113u16 (litecore)' } steps { - sh 'jenkins/dotnet_build.sh 3.2.3 1.0.0' + sh 'jenkins/dotnet_build.sh 3.2.4 1.0.0' } } stage("Validate C") { agent { label 's61113u16 (litecore)' } steps { - sh 'jenkins/c_build.sh 3.2.3' + sh 'jenkins/c_build.sh 3.2.4' } } stage("Validate iOS") { agent { label 'mobile-builder-ios-pull-request' } steps { - sh 'jenkins/ios.sh 3.2.3 1.0.0' + sh 'jenkins/ios.sh 3.3.0 1.0.0' + } + } + stage("Validate Android") { + agent { label 'cbl-android' } + steps { + sh 'jenkins/android_build.sh 3.3.0 1.0.0' } } } } } -} \ No newline at end of file +} diff --git a/LICENSE b/LICENSE index 13f71af02..e3522d991 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Couchbase Lite Documentation © 2024 by Couchbase Inc. is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0). +Couchbase Lite Documentation © 2025 by Couchbase Inc. is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0). See https://creativecommons.org/licenses/by-nc-sa/4.0/ for details. diff --git a/README.adoc b/README.adoc index 2efbcfd6f..773f55b62 100644 --- a/README.adoc +++ b/README.adoc @@ -144,6 +144,6 @@ This common header file, then invokes: == License -Couchbase Lite Documentation © 2024 by Couchbase Inc. is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International. +Couchbase Lite Documentation © 2025 by Couchbase Inc. is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International. See the LICENSE file or the {url-license}[Creative Commons CC BY-NC-SA 4.0 license page] for details. diff --git a/antora.yml b/antora.yml index 67a568884..b99221c33 100644 --- a/antora.yml +++ b/antora.yml @@ -1,6 +1,6 @@ name: couchbase-lite -version: '3.2' -prerelease: +version: '4.0' +prerelease: title: Couchbase Lite start_page: ROOT:index.adoc nav: @@ -14,19 +14,18 @@ nav: - modules/swift/nav-swift.adoc asciidoc: attributes: - prerelease: - previous-release: - release: '3.2' - # releasetag: - major: 3 - minor: 2 - maintenance-ios: 4 - maintenance-swift: 4 - maintenance-c: 4 - maintenance-android: 4 - maintenance-java: 4 - maintenance-net: 4 - base: 3 + prerelease: + previous-release: + release: '4.0' + # releasetag: + major: 4 + minor: 0 + maintenance-ios: 0 + maintenance-c: 0 + maintenance-android: 0 + maintenance-java: 0 + maintenance-net: 0 + base: 0 # Used for Vector Search Extension. vs-major: 1 @@ -37,5 +36,6 @@ asciidoc: vs-maintenance-android: 0 vs-maintenance-java: 0 vs-maintenance-net: 0 + page-toclevels: 2@ # NB: `preview` config now in preview/HEAD.yml, please update diff --git a/jenkins/android_build.sh b/jenkins/android_build.sh new file mode 100755 index 000000000..0b1e1a13a --- /dev/null +++ b/jenkins/android_build.sh @@ -0,0 +1,77 @@ +#!/bin/bash -e + +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" + +CBL_VERSION="$1" +VS_VERSION="$2" + +ANDROID_DIR=$SCRIPT_DIR/../modules/android + +if ! hash curl >/dev/null 2>&1; then + echo "curl not found, aborting..." + exit 1 +fi + +if hash jq 2>/dev/null; then + JQ=jq +else + echo "jq is not installed, downloading a local copy..." + + # Detect OS and architecture + OS=$(uname -s | tr '[:upper:]' '[:lower:]') + ARCH=$(uname -m) + + case "$OS" in + linux) + case "$ARCH" in + x86_64|amd64) + JQ_BINARY="jq-linux-amd64" + ;; + aarch64|arm64) + JQ_BINARY="jq-linux-arm64" + ;; + *) + echo "Unsupported Linux architecture: $ARCH" + exit 1 + ;; + esac + ;; + darwin) + case "$ARCH" in + x86_64|amd64) + JQ_BINARY="jq-macos-amd64" + ;; + arm64) + JQ_BINARY="jq-macos-arm64" + ;; + *) + echo "Unsupported macOS architecture: $ARCH" + exit 1 + ;; + esac + ;; + *) + echo "Unsupported operating system: $OS" + exit 1 + ;; + esac + + JQ_URL="https://github.com/jqlang/jq/releases/download/jq-1.8.1/${JQ_BINARY}" + echo "Downloading jq for $OS/$ARCH: $JQ_URL" + + # Download jq using curl + curl -L "$JQ_URL" -o /tmp/jq-local + + chmod +x /tmp/jq-local + JQ=/tmp/jq-local +fi + + +CBL_URL="http://proget.build.couchbase.com:8080/api/get_version?product=couchbase-lite-android&version=${CBL_VERSION}" +VS_URL="http://proget.build.couchbase.com:8080/api/get_version?product=couchbase-lite-android-vector-search&version=${VS_VERSION}" + +CBL_BUILD=$(curl -s $CBL_URL | $JQ -r '.BuildNumber') +VS_BUILD=$(curl -s $VS_URL | $JQ -r '.BuildNumber') + +pushd $ANDROID_DIR/examples/ +./gradlew assembleDebug -PcblVersion=$CBL_VERSION-$CBL_BUILD -PextVersion=$VS_VERSION-$VS_BUILD \ No newline at end of file diff --git a/modules/ROOT/pages/cbl-whatsnew.adoc b/modules/ROOT/pages/cbl-whatsnew.adoc index 80ed0e89c..3944fc427 100644 --- a/modules/ROOT/pages/cbl-whatsnew.adoc +++ b/modules/ROOT/pages/cbl-whatsnew.adoc @@ -7,254 +7,28 @@ ifdef::show_edition[:page-edition: {release}] // End of Page Definition Statements -NOTE: Couchbase Lite 3.0 introduces some breaking changes. + -If you're upgrading from 2.x, refer to the appropriate upgrade page -- see: <>. + -You should be able to upgrade from 3.0.x to 3.1.x without manual intervention. +NOTE: Couchbase Lite 4.0 introduces some breaking changes. + +If you're upgrading from 3.x, refer to the appropriate upgrade page -- see: <> +You cannot downgrade from 4.0 to earlier versions of Couchbase Lite. -== Release 3.2.4 (June 2025) - -Couchbase Lite Release 3.2.4 introduces fixes and enhancements for: - -xref:android:releasenotes.adoc#maint-latest[Android] -| -xref:c:releasenotes.adoc#maint-latest[C] -| -xref:csharp:releasenotes.adoc#maint-latest[.NET] -| -xref:java:releasenotes.adoc#maint-latest[Java] -| -xref:objc:releasenotes.adoc#maint-latest[Objective-C] -| -xref:swift:releasenotes.adoc#maint-latest[Swift] - -== Release 3.2.3 (April 2025) +== Release 4.0.0 (Q1 2025) === New Features -==== Swift API Enhancements - -Couchbase Lite 3.2.3 introduces Reactive APIs in Swift. -The Reactive APIs enable you map Couchbase Lite documents directly to Swift models, and then bind a model to a view representing the user interface. -The user interface is automatically updated when the underlying data changes. -The new Reactive APIs provide the following benefits: - -* Native adherence to Swift's Codable protocol, enabling automatic encoding and decoding between Couchbase Lite documents and Swift codable model objects. -You can retrieve documents from the collection as decodable model objects. -You can also save, delete, and purge model objects encoded as documents in the collection. - -* The ability to decode Couchbase {sqlpp} query results directly into model objects. -This makes queries observable, so that you can refresh the application automatically as the results change. - -* Access to the Combine framework and the Observation framework, enabling you to publish change notifications whenever a query result changes, or documents in a collection change, or a replicator's status changes. - -For more information about Reactive APIs in Swift, see: - -* xref:swift:reactive.adoc[] - -==== Peer-to-Peer Synchronization in C - -Couchbase Lite 3.2.3 introduces peer-to-peer synchronization in C. -Couchbase Lite C supports peer-to-peer synchronization over IP using the WebSocket protocol via URLEndpointListener, but does not support custom transports through MessageEndpointListener. - -For more information about peer-to-peer synchronization in C, see: - -* xref:c:p2psync-websocket.adoc[] -* xref:c:p2psync-websocket-using-passive.adoc[] -* xref:c:p2psync-websocket-using-active.adoc[] - -== Release 3.2.2 (March 2025) - -.Deprecation Notice -[IMPORTANT] --- -From Couchbase Lite version 3.2.2, the current Logging API is deprecated and will be removed in a future release. - -Use of the deprecated and new Logging API at the same time is not supported. - -See the following links for information about migrating to the new Logging API: - -* xref:android:new-logging-api.adoc[Android] - -* xref:c:new-logging-api.adoc[C] - -* xref:csharp:new-logging-api.adoc[.NET] - -* xref:java:new-logging-api.adoc[Java] - -* xref:objc:new-logging-api.adoc[Objective-C] - -* xref:swift:new-logging-api.adoc[Swift] --- - -=== New Features - -==== New Logging API - -Couchbase Lite 3.2.2 introduces a new Logging API. -The new Logging API has the following benefits: - -* Log sinks are now thread safe, removing risk of inconsistent states during initialization. - -* Simplified API and reduced implementation complexity. - -For more information about migrating to the new Logging API, see: - -* xref:android:new-logging-api.adoc[Android - New Logging API] - -* xref:c:new-logging-api.adoc[C - New Logging API] - -* xref:csharp:new-logging-api.adoc[.NET - New Logging API] - -* xref:java:new-logging-api.adoc[Java - New Logging API] - -* xref:objc:new-logging-api.adoc[Objective-C - New Logging API] - -* xref:swift:new-logging-api.adoc[Swift - New Logging API] - -==== Partial Index - -Couchbase Lite 3.2.2 introduces support for Partial Index - Partial Value and Partial Full-Text Indexes. -The Partial Index can create a smaller index, potentially improving index and query performance. -You can use Partial Index to specify a `WHERE` clause in your index configuration. -If a where clause is specified, the database will index a document only when the where clause condition is met. - -For more information about Partial Index, see: - -* xref:android:indexing.adoc#partial-index[Android - Partial Index] - -* xref:c:indexing.adoc#partial-index[C - Partial Index] - -* xref:csharp:indexing.adoc#partial-index[.NET - Partial Index] - -* xref:java:indexing.adoc#partial-index[Java - Partial Index] - -* xref:objc:indexing.adoc#partial-index[Objective-C - Partial Index] - -* xref:swift:indexing.adoc#partial-index[Swift - Partial Index] - -== Release 3.2.1 (November 2024) - -=== New Features - -==== Array UNNEST and the Array Index - -You can use UNNEST in queries to unpack arrays within a document into individual rows. This capability makes it possible to join them with their parent object in the query. - -You can use UNNEST within the FROM clause. -You can chain UNNEST to perform multi-level UNNEST. - -You can also use a new type of index, the Array Index, to allow querying with UNNEST more efficiently. - -For more information about Array UNNEST, see: - -* xref:android:query-n1ql-mobile.adoc#lbl-unnest[Android - Array UNNEST] - -* xref:c:query-n1ql-mobile.adoc#lbl-unnest[C - Array UNNEST] - -* xref:csharp:query-n1ql-mobile.adoc#lbl-unnest[.NET - Array UNNEST] - -* xref:java:query-n1ql-mobile.adoc#lbl-unnest[Java - Array UNNEST] - -* xref:objc:query-n1ql-mobile.adoc#lbl-unnest[Objective-C - Array UNNEST] - -* xref:swift:query-n1ql-mobile.adoc#lbl-unnest[Swift - Array UNNEST] - -For more information about Array indexes, see: - -* xref:android:indexing.adoc#array-indexing[Android - Array Indexing] - -* xref:c:indexing.adoc#array-indexing[C - Array Indexing] - -* xref:csharp:indexing.adoc#array-indexing[.NET - Array Indexing] - -* xref:java:indexing.adoc#array-indexing[Java - Array Indexing] - -* xref:objc:indexing.adoc#array-indexing[Objective-C - Array Indexing] - -* xref:swift:indexing.adoc#array-indexing[Swift - Array Indexing] - -== Release 3.2.0 (August 2024) - -IMPORTANT: Databases upgraded from 3.1.x to 3.2.x cannot be downgraded. - - -=== New Features - -==== Vector Search - -[IMPORTANT] --- -Vector Search is available only for 64-bit architectures and -Intel processors that support the Advanced Vector Extensions 2 (AVX2) instruction set. -To verify whether your device supports the AVX2 instructions set, https://www.intel.com/content/www/us/en/support/articles/000090473/processors/intel-core-processors.html[follow these instructions.] --- - -Vector Search is now available on Couchbase Lite for all platforms. -Vector Search is a sophisticated data retrieval technique that focuses on matching the contextual meanings of search queries and data entries, rather than simple text matching. -Vectors are represented by arrays of numbers known as embeddings, which are generated by Large Language Models (LLMs) to represent objects such as text, images, and audio. -You can use Vector Search to efficiently find similar items or content based on the similarity of their vector representations. -This is useful for reducing the cost per query, performing semantic or similarity search, providing recommendations among others. - -Read more at: - -* xref:android:vector-search.adoc[Vector Search - Android] -** xref:android:gs-install.adoc[Installation Instructions] -** xref:android:working-with-vector-search.adoc[Use Vector Search] - -* xref:c:vector-search.adoc[Vector Search - C] -** xref:gs-downloads.adoc#vs-release-1-0-0-beta.3[Downloads Page] -** xref:c:gs-install.adoc[Installation Instructions] -** xref:c:working-with-vector-search.adoc[Use Vector Search] - -* xref:csharp:vector-search.adoc[Vector Search - .Net] -** xref:csharp:gs-install.adoc[Installation Instructions] -** xref:csharp:working-with-vector-search.adoc[Use Vector Search] - -* xref:java:vector-search.adoc[Vector Search - Java Desktop] -** xref:java:gs-install.adoc[Installation Instructions] -** xref:java:working-with-vector-search.adoc[Use Vector Search] - -* xref:objc:vector-search.adoc[Vector Search - Objective-C] -** xref:objc:gs-install.adoc[Installation Instructions] -** xref:objc:working-with-vector-search.adoc[Use Vector Search] - -* xref:swift:vector-search.adoc[Vector Search - Swift] -** xref:swift:gs-install.adoc[Installation Instructions] -** xref:swift:working-with-vector-search.adoc[Use Vector Search] - -==== Extended Date/Time Functionality - -Six new DateTime functions have been added to Couchbase Lite N1QL: - -* `STR_TO_TZ()` - -* `MILLIS_TO_TZ()` - -* `DATE_DIFF_STR()` - -* `DATE_DIFF_MILLIS()` - -* `DATE_ADD_STR()` - -* `DATE_ADD_MILLIS()` - -Read more at: - -* xref:android:query-n1ql-mobile.adoc#lbl-func-date[Android Date and Time Functions] - -* xref:c:query-n1ql-mobile.adoc#lbl-func-date[C Date and Time Functions] +==== Version Vectors -* xref:csharp:query-n1ql-mobile.adoc#lbl-func-date[.NET Date and Time Functions] +NOTE: TODO -* xref:java:query-n1ql-mobile.adoc#lbl-func-date[Java Date and Time Functions] +==== Mobile XDCR Coexistence -* xref:objc:query-n1ql-mobile.adoc#lbl-func-date[Objective-C Date and Time Functions] +NOTE: TODO -* xref:swift:query-n1ql-mobile.adoc#lbl-func-date[Swift Date and Time Functions] +== See Also -== See also +NOTE: TODO -xref:3.1@couchbase-lite:ROOT:cbl-whatsnew.adoc[What's new in previous version 3.1] +xref:3.3@couchbase-lite:ROOT:cbl-whatsnew.adoc[What's new in previous version 3.3] +xref:3.2@couchbase-lite:ROOT:cbl-whatsnew.adoc[What's new in previous version 3.2] === Couchbase Lite Release Notes diff --git a/modules/android/build_snippets.sh b/modules/android/build_snippets.sh index bcfb12bbd..c6e7eb0fb 100755 --- a/modules/android/build_snippets.sh +++ b/modules/android/build_snippets.sh @@ -1,8 +1,6 @@ #!/bin/sh SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" -cd $SCRIPT_DIR - ANDROID_DIR=$SCRIPT_DIR JAVA_DIR=$SCRIPT_DIR/../java diff --git a/modules/android/examples/GetStartedJava/app/build.gradle b/modules/android/examples/GetStartedJava/app/build.gradle index ac95c455a..bd808f9fa 100644 --- a/modules/android/examples/GetStartedJava/app/build.gradle +++ b/modules/android/examples/GetStartedJava/app/build.gradle @@ -33,16 +33,16 @@ android { repositories { if (USE_LOCAL_MAVEN) { mavenLocal() - maven { - url "https://proget.sc.couchbase.com/maven2/internalmaven/" - content { includeGroupByRegex "com\\.couchbase\\.lite.*" } - } } - else { - maven { - url "https://mobile.maven.couchbase.com/maven2/dev/" - content { includeGroupByRegex "com\\.couchbase\\.lite.*" } - } + + maven { + url "https://proget.sc.couchbase.com/maven2/internalmaven/" + content { includeGroupByRegex "com\\.couchbase\\.lite.*" } + } + + maven { + url "https://mobile.maven.couchbase.com/maven2/dev/" + content { includeGroupByRegex "com\\.couchbase\\.lite.*" } } google() diff --git a/modules/android/examples/GetStartedJava/build.gradle b/modules/android/examples/GetStartedJava/build.gradle index 850ba7e27..1aa9a9786 100644 --- a/modules/android/examples/GetStartedJava/build.gradle +++ b/modules/android/examples/GetStartedJava/build.gradle @@ -1,7 +1,7 @@ ext { - CBL_VERSION='3.2.2-18' - EXT_VERSION='1.0.0-26' + CBL_VERSION = project.hasProperty('cblVersion') ? project.cblVersion : { throw new GradleException('cblVersion property is required. Use -PcblVersion=x.x.x-x') }() + EXT_VERSION = project.hasProperty('extVersion') ? project.extVersion : { throw new GradleException('extVersion property is required. Use -PextVersion=x.x.x-x') }() } buildscript { diff --git a/modules/android/examples/GetStartedKotlin/app/build.gradle b/modules/android/examples/GetStartedKotlin/app/build.gradle index 5d5d5e0ea..209e0028f 100644 --- a/modules/android/examples/GetStartedKotlin/app/build.gradle +++ b/modules/android/examples/GetStartedKotlin/app/build.gradle @@ -37,16 +37,16 @@ android { repositories { if (USE_LOCAL_MAVEN) { mavenLocal() - maven { - url "https://proget.sc.couchbase.com/maven2/internalmaven/" - content { includeGroupByRegex "com\\.couchbase\\.lite.*" } - } } - else { - maven { - url "https://mobile.maven.couchbase.com/maven2/dev/" - content { includeGroupByRegex "com\\.couchbase\\.lite.*" } - } + + maven { + url "https://proget.sc.couchbase.com/maven2/internalmaven/" + content { includeGroupByRegex "com\\.couchbase\\.lite.*" } + } + + maven { + url "https://mobile.maven.couchbase.com/maven2/dev/" + content { includeGroupByRegex "com\\.couchbase\\.lite.*" } } google() diff --git a/modules/android/examples/GetStartedKotlin/build.gradle b/modules/android/examples/GetStartedKotlin/build.gradle index 699eb31e1..da8832cc9 100644 --- a/modules/android/examples/GetStartedKotlin/build.gradle +++ b/modules/android/examples/GetStartedKotlin/build.gradle @@ -1,7 +1,6 @@ - ext { - CBL_VERSION='3.2.2-18' - EXT_VERSION='1.0.0-26' + CBL_VERSION = project.hasProperty('cblVersion') ? project.cblVersion : { throw new GradleException('cblVersion property is required. Use -PcblVersion=x.x.x-x') }() + EXT_VERSION = project.hasProperty('extVersion') ? project.extVersion : { throw new GradleException('extVersion property is required. Use -PextVersion=x.x.x-x') }() } buildscript { diff --git a/modules/android/examples/build.gradle b/modules/android/examples/build.gradle index 05ea3c524..6ca80790f 100644 --- a/modules/android/examples/build.gradle +++ b/modules/android/examples/build.gradle @@ -1,9 +1,4 @@ -ext { - CBL_VERSION='3.2.2-18' - EXT_VERSION='1.0.0-26' -} - buildscript { repositories { google() diff --git a/modules/android/examples/codesnippet_collection.java b/modules/android/examples/codesnippet_collection.java index 9a833798e..ef81b3ded 100644 --- a/modules/android/examples/codesnippet_collection.java +++ b/modules/android/examples/codesnippet_collection.java @@ -257,7 +257,7 @@ public void troubleshootingExample() { import com.couchbase.lite.CouchbaseLiteException; import com.couchbase.lite.IndexConfiguration; - +@SuppressWarnings("unused") public class ArrayIndexExamples { public void ArrayIndexConfig() { // tag::array-index-config[] @@ -297,8 +297,6 @@ public void ArrayIndexNested(Collection collection) throws CouchbaseLiteExceptio // package com.couchbase.codesnippets; -import java.io.File; - import org.jetbrains.annotations.NotNull; import com.couchbase.lite.Array; @@ -315,9 +313,6 @@ public void ArrayIndexNested(Collection collection) throws CouchbaseLiteExceptio @SuppressWarnings("unused") public class BasicExamples { public static class SupportingDatatypes { - private final File rootDir; - - public SupportingDatatypes(@NotNull File rootDir) { this.rootDir = rootDir; } public void datatypeUsage() throws CouchbaseLiteException { // tag::datatype_usage_createdb[] @@ -686,7 +681,7 @@ public void enableCustomLoggingExample() { public void consoleLoggingExample() { // tag::console-logging[] - Database.log.getConsole().setLevel(LogLevel.DEBUG); // <.> + Database.log.getConsole().setLevel(LogLevel.WARNING); // <.> // end::console-logging[] } @@ -1507,6 +1502,343 @@ public void listenerSimpleExample(Set collections, String validUser, // end::listener-simple[] } } +package com.couchbase.codesnippets; + +import android.util.Log; + +import com.couchbase.lite.Collection; +import com.couchbase.lite.CouchbaseLiteException; +import com.couchbase.lite.KeyUsage; +import com.couchbase.lite.ListenerToken; +import com.couchbase.lite.LogDomain; +import com.couchbase.lite.LogLevel; +import com.couchbase.lite.MultipeerCertificateAuthenticator; +import com.couchbase.lite.MultipeerCollectionConfiguration; +import com.couchbase.lite.MultipeerReplicator; +import com.couchbase.lite.MultipeerReplicatorConfiguration; +import com.couchbase.lite.PeerInfo; +import com.couchbase.lite.ReplicatedDocument; +import com.couchbase.lite.ReplicatorStatus; +import com.couchbase.lite.TLSIdentity; +import com.couchbase.lite.logging.ConsoleLogSink; +import com.couchbase.lite.logging.LogSinks; + +import java.io.ByteArrayInputStream; +import java.nio.charset.StandardCharsets; +import java.security.cert.CertificateException; +import java.security.cert.CertificateFactory; +import java.security.cert.X509Certificate; +import java.util.Arrays; +import java.util.Calendar; +import java.util.Collections; +import java.util.Date; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +@SuppressWarnings("unused") +public class MultipeerExamples { + private final String TAG = "MultipeerExamples"; + + private Collection collection1; + private Collection collection2; + private Collection collection3; + + private byte[] getCAPrivateKeyData() { + return "your_base64_encoded_private_key".getBytes(StandardCharsets.UTF_8); + } + + private byte[] getCACertificateData() { + return "your_base64_encoded_certificate".getBytes(StandardCharsets.UTF_8); + } + + public Set collectionSimple() { + // tag::multipeer-collection-simple + final Set collections = new HashSet<>(); + for(Collection col : Arrays.asList(collection1, collection2, collection3)) { + MultipeerCollectionConfiguration.Builder builder = + new MultipeerCollectionConfiguration.Builder(col); + collections.add(builder.build()); + } + // end::multipeer-collection- + return collections; + } + + @SuppressWarnings("UnnecessaryLocalVariable") + public Set collectionConfig() { + // tag::multipeer-collection-config + final MultipeerCollectionConfiguration config1 = + new MultipeerCollectionConfiguration.Builder(collection1) + .setConflictResolver((peerId, conflict) -> conflict.getRemoteDocument()) + .build(); + + final MultipeerCollectionConfiguration config2 = + new MultipeerCollectionConfiguration.Builder(collection1) + .setDocumentIDs(Arrays.asList("doc1", "doc2")) + .build(); + + final MultipeerCollectionConfiguration config3 = + new MultipeerCollectionConfiguration.Builder(collection1) + .setPushFilter((peerId, doc, flags) -> doc.getInt("access-level") == 2) + .build(); + + final Set collections = Set.of(config1, config2, config3); + // end::multipeer-collection-config + + return collections; + } + + public TLSIdentity createSelfSignedIdentity() throws CouchbaseLiteException { + // tag::multipeer-selfsigned-tlsidentity[] + // NOTE: Error handling omitted + + final String persistentLabel = "com.myapp.identity"; + + // Retrieve the TLS identity from the key store using the persistent label. + TLSIdentity identity = TLSIdentity.getIdentity(persistentLabel); + + // If the identity exists but is expired, delete it. + if(identity != null && identity.getExpiration().before(new Date())) { + TLSIdentity.deleteIdentity(persistentLabel); + } + + if(identity == null) { + // Define certificate attributes and expiration date. + final Map certAttributes = Map.of( + TLSIdentity.CERT_ATTRIBUTE_COMMON_NAME, "Couchbase Demo", + TLSIdentity.CERT_ATTRIBUTE_ORGANIZATION, "Couchbase", + TLSIdentity.CERT_ATTRIBUTE_ORGANIZATION_UNIT, "Mobile", + TLSIdentity.CERT_ATTRIBUTE_EMAIL_ADDRESS, "noreply@couchbase.com" + ); + + final Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.YEAR, 2); + Date expiration = calendar.getTime(); + + identity = TLSIdentity.createIdentity( + Set.of(KeyUsage.CLIENT_AUTH, KeyUsage.SERVER_AUTH), + certAttributes, + expiration, + persistentLabel + ); + } + // end::multipeer-selfsigned-tlsidentity[] + + return identity; + } + + public TLSIdentity createCASignedIdentity() throws CouchbaseLiteException { + // tag::multipeer-tlsidentity[] + // NOTE: Error handling omitted + + final String persistentLabel = "com.myapp.identity"; + + // Retrieve the TLS identity from the key store using the persistent label. + TLSIdentity identity = TLSIdentity.getIdentity(persistentLabel); + + // If the identity exists but is expired, delete it. + if(identity != null && identity.getExpiration().before(new Date())) { + // NOTE: Important to delete identity this way for CA signed identities + // since they extend beyond the Android key store + TLSIdentity.deleteIdentity(persistentLabel); + } + + if(identity == null) { + // Define certificate attributes and expiration date. + final Map certAttributes = Map.of( + TLSIdentity.CERT_ATTRIBUTE_COMMON_NAME, "Couchbase Demo", + TLSIdentity.CERT_ATTRIBUTE_ORGANIZATION, "Couchbase", + TLSIdentity.CERT_ATTRIBUTE_ORGANIZATION_UNIT, "Mobile", + TLSIdentity.CERT_ATTRIBUTE_EMAIL_ADDRESS, "noreply@couchbase.com" + ); + + final Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.YEAR, 2); + final Date expiration = calendar.getTime(); + + final byte[] caKey = getCAPrivateKeyData(); + final byte[] caCert = getCACertificateData(); + + // As the function name indicates, this is not a secure way of doing things + // and should either be done for testing only, or in an environment that you + // assure to be secure against unknown actors, because otherwise anyone who + // can install the app can probably easily extract the CA key. + identity = TLSIdentity.createdSignedIdentityInsecure( + Set.of(KeyUsage.SERVER_AUTH, KeyUsage.CLIENT_AUTH), + certAttributes, + caKey, + caCert, + expiration, + persistentLabel + ); + } + // end::multipeer-tlsidentity[] + + return identity; + } + + @SuppressWarnings("UnnecessaryLocalVariable") + public MultipeerCertificateAuthenticator authenticatorWithCallback() { + // tag::multipeer-authenticator-callback[] + // Use peer and certs to decide whether or not to allow (true) this peer + // or reject (false) + final MultipeerCertificateAuthenticator authenticator = + new MultipeerCertificateAuthenticator((peer, certs) -> true); + // end::multipeer-authenticator-callback[] + + return authenticator; + } + + @SuppressWarnings("UnnecessaryLocalVariable") + public MultipeerCertificateAuthenticator authenticatorWithRootCerts() throws CertificateException { + // tag::multipeer-authenticator-rootcerts[] + final byte[] caCert = getCACertificateData(); + final CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509"); + final ByteArrayInputStream inputStream = new ByteArrayInputStream(caCert); + final X509Certificate certObject = (X509Certificate) certificateFactory.generateCertificate(inputStream); + final MultipeerCertificateAuthenticator authenticator = + new MultipeerCertificateAuthenticator(Collections.singletonList(certObject)); + // end::multipeer-authenticator-rootcerts[] + + return authenticator; + } + + @SuppressWarnings("UnnecessaryLocalVariable") + public MultipeerReplicatorConfiguration createConfig() throws CouchbaseLiteException, CertificateException { + final TLSIdentity identity = createCASignedIdentity(); + final MultipeerCertificateAuthenticator authenticator = authenticatorWithRootCerts(); + final Set collections = collectionConfig(); + + // tag::multipeer-config[] + MultipeerReplicatorConfiguration config = new MultipeerReplicatorConfiguration.Builder() + .setPeerGroupID("com.myapp") + .setIdentity(identity) + .setAuthenticator(authenticator) + .setCollections(collections) + .build(); + // end::multipeer-config[] + + return config; + } + + @SuppressWarnings("UnnecessaryLocalVariable") + public MultipeerReplicator createMultipeerReplicator() throws CouchbaseLiteException, CertificateException { + final MultipeerReplicatorConfiguration config = createConfig(); + + // tag::multipeer-replicator + final MultipeerReplicator replicator = new MultipeerReplicator(config); + // end::multipeer-replicator[] + + return replicator; + } + + public void startReplicator() throws CouchbaseLiteException, CertificateException { + final MultipeerReplicator replicator = createMultipeerReplicator(); + // tag::multipeer-replicator-start[] + replicator.start(); + // end::multipeer-replicator-start[] + } + + public void stopReplicator() throws CouchbaseLiteException, CertificateException { + final MultipeerReplicator replicator = createMultipeerReplicator(); + // tag::multipeer-replicator-stop[] + replicator.stop(); + // end::multipeer-replicator-stop[] + } + + public void statusListener() throws CouchbaseLiteException, CertificateException { + final MultipeerReplicator replicator = createMultipeerReplicator(); + + // tag::multipeer-status-listener[] + final ListenerToken token = replicator.addStatusListener(status -> { + final String state = status.isActive() ? "active" : "inactive"; + final String error = status.getError() != null ? status.getError().getMessage() : "none"; + + Log.i(TAG, String.format("Multipeer replicator: %s, Error: %s", state, error)); + }); + // end::multipeer-status-listener[] + } + + public void peerDiscoveryListener() throws CouchbaseLiteException, CertificateException { + final MultipeerReplicator replicator = createMultipeerReplicator(); + + // tag::multipeer-peer-discovery-listener[] + final ListenerToken token = replicator.addPeerDiscoveryStatusListener(status -> { + final String online = status.isOnline() ? "online" : "offline"; + Log.i(TAG, String.format("Peer Discovery Status - Peer ID: %s Status: %s", + status.getPeer(), online)); + }); + // end::multipeer-peer-discovery-listener[] + } + + public void peerDocumentReplication() throws CouchbaseLiteException, CertificateException { + final MultipeerReplicator replicator = createMultipeerReplicator(); + + // tag::multipeer-document-replication-listener[] + final ListenerToken token = replicator.addPeerDocumentReplicationListener(status -> { + final String direction = status.isPush() ? "push" : "pull"; + Log.i(TAG, String.format("Peer Document Replication - Peer ID: %s Direction: %s", status.getPeer(), direction)); + for(ReplicatedDocument doc : status.getDocuments()) { + final Exception docError = doc.getError(); + final String error = docError != null ? docError.getMessage() : "none"; + final String collection = String.format("%s.%s", doc.getScope(), doc.getCollection()); + Log.i(TAG, String.format(" Collection: %s, Document ID: %s, " + + "Flags: %s, Error: %s", collection, doc.getID(), doc.getFlags(), error)); + } + }); + // end::multipeer-document-replication-listener[] + } + + public void peerID() throws CouchbaseLiteException, CertificateException { + final MultipeerReplicator replicator = createMultipeerReplicator(); + + // tag::multipeer-peer-id[] + final PeerInfo.PeerId peerID = replicator.getPeerId(); + Log.i(TAG, String.format("Peer ID: %s", peerID)); + // end::multipeer-peer-id[] + } + + public void neighborPeers() throws CouchbaseLiteException, CertificateException { + final MultipeerReplicator replicator = createMultipeerReplicator(); + + // tag::multipeer-neighbor-peers[] + Log.i(TAG, "Neighbor Peers:"); + for(PeerInfo.PeerId peer : replicator.getNeighborPeers()) { + Log.i(TAG, String.format(" %s", peer)); + } + // end::multipeer-neighbor-peers[] + } + + public void peerInfo() throws CouchbaseLiteException, CertificateException { + final MultipeerReplicator replicator = createMultipeerReplicator(); + + // tag::multipeer-peer-info[] + for(PeerInfo.PeerId peer : replicator.getNeighborPeers()) { + final PeerInfo info = replicator.getPeerInfo(peer); + Log.i(TAG, String.format("Peer ID: %s", peer)); + final String online = info.isOnline() ? "online" : "offline"; + Log.i(TAG, String.format(" Status: %s", online)); + Log.i(TAG, " Neighbor Peers:"); + for(PeerInfo.PeerId neighbor : info.getNeighbors()) { + Log.i(TAG, String.format(" %s", neighbor)); + } + + final ReplicatorStatus replStatus = info.getReplicatorStatus(); + final String activity = replStatus.getActivityLevel().name().toLowerCase(); + final String error = replStatus.getError() != null ? replStatus.getError().getMessage() : "none"; + Log.i(TAG, String.format(" Replicator Status: %s, Error: %s", activity, error)); + } + // end::multipeer-peer-info[] + } + + public void logging() { + // tag::multipeer-logdomain[] + // Enable verbose console logging for multipeer replicator-related domains only. + LogSinks.get().setConsole(new ConsoleLogSink(LogLevel.VERBOSE, LogDomain.PEER_DISCOVERY, + LogDomain.MULTIPEER)); + // end::multipeer-logdomain[] + } +} // // Copyright (c) 2023 Couchbase, Inc All rights reserved. // @@ -2287,19 +2619,15 @@ public List> docsonlyQuerySyntaxN1QLParams(Database thisDb) public void partialIndexExample(Collection collection) throws CouchbaseLiteException { // tag::query-partial-index[] - collection.createIndex("numIndex", new ValueIndexConfiguration("num").setWhere("type = 'number'")); - collection.getDatabase() - .createQuery("SELECT * FROM " + collection.getFullName() + " WHERE type = 'foo' AND num > 1000"); + collection.createIndex("HotelCityIndex", new ValueIndexConfiguration("city").setWhere("type = \"hotel\"")); // end::query-partial-index[] } public void partialFullIndexExample(Collection collection) throws CouchbaseLiteException { // tag::query-partial-full-index[] collection.createIndex( - "contentIndex", - new FullTextIndexConfiguration("content").setWhere("length(content) > 30")); - collection.getDatabase() - .createQuery("SELECT content FROM " + collection.getFullName() + " WHERE match(contentIndex, 'database')"); + "HotelDescIndex", + new FullTextIndexConfiguration("description").setWhere("type = \"hotel\"")); // end::query-partial-full-index[] } } diff --git a/modules/android/examples/codesnippet_collection.kt b/modules/android/examples/codesnippet_collection.kt index 036154436..7836e3213 100644 --- a/modules/android/examples/codesnippet_collection.kt +++ b/modules/android/examples/codesnippet_collection.kt @@ -13,6 +13,8 @@ // See the License for the specific language governing permissions and // limitations under the License. // +@file:Suppress("UNUSED_VARIABLE", "unused", "DEPRECATION") + package com.couchbase.codesnippets import com.couchbase.lite.ArrayIndexConfiguration @@ -21,21 +23,21 @@ import com.couchbase.lite.CouchbaseLiteException import com.couchbase.lite.IndexConfiguration class ArrayIndexExamples { - fun ArrayIndexConfig() { + fun arrayIndexConfig() { // tag::array-index-config[] val config: IndexConfiguration = ArrayIndexConfiguration("contacts", "type") // end::array-index-config[] } @Throws(CouchbaseLiteException::class) - fun ArrayIndexSingle(collection: Collection) { + fun arrayIndexSingle(collection: Collection) { // tag::array-index-single[] collection.createIndex("myindex", ArrayIndexConfiguration("likes")) // end::array-index-single[] } @Throws(CouchbaseLiteException::class) - fun ArrayIndexNested(collection: Collection) { + fun arrayIndexNested(collection: Collection) { // tag::array-index-nested[] collection.createIndex( "myindex", @@ -58,7 +60,7 @@ class ArrayIndexExamples { // See the License for the specific language governing permissions and // limitations under the License. // -@file:Suppress("UNUSED_VARIABLE", "unused") +@file:Suppress("UNUSED_VARIABLE", "unused", "DEPRECATION") package com.couchbase.codesnippets @@ -96,7 +98,6 @@ import com.couchbase.lite.install import com.couchbase.lite.internal.utils.Fn import com.couchbase.lite.logging.BaseLogSink import com.couchbase.lite.logging.ConsoleLogSink -import com.couchbase.lite.logging.FileLogSink import com.couchbase.lite.logging.LogSinks import com.couchbase.lite.newConfig import java.io.File @@ -203,11 +204,11 @@ class BasicExamples(private val context: Context) { fun consoleLoggingExample() { // tag::console-logging[] Database.log.console.domains = LogDomain.ALL_DOMAINS // <.> - Database.log.console.level = LogLevel.DEBUG // <.> + Database.log.console.level = LogLevel.WARNING // <.> // end::console-logging[] // tag::console-logging-db[] - Database.log.console.level = LogLevel.DEBUG // <.> + Database.log.console.level = LogLevel.WARNING // <.> // end::console-logging-db[] } @@ -473,7 +474,7 @@ class SupportingDatatypes(private val context: Context) { val street = dict?.getString("street") // Iterate dictionary - dict?.forEach { println("${it} -> ${dict.getValue(it)}") } + dict?.forEach { println("$it -> ${dict.getValue(it)}") } // Create a mutable copy val mutableDict = dict?.toMutable() @@ -517,7 +518,7 @@ class SupportingDatatypes(private val context: Context) { val phone = array?.getString(1) // Iterate array - array?.forEachIndexed { index, item -> println("Row ${index} = ${item}") } + array?.forEachIndexed { index, item -> println("Row $index = $item") } // Create a mutable copy val mutableArray = array?.toMutable() @@ -600,6 +601,7 @@ import com.couchbase.lite.ValueIndexItem class CollectionExamples { // We need to add a code sample to create a new collection in a scope + @Suppress("VariableNeverRead", "AssignedValueIsNeverRead") @Throws(CouchbaseLiteException::class) fun createCollectionInScope(db: Database) { // tag::scopes-manage-create-collection[] @@ -884,6 +886,7 @@ package com.couchbase.codesnippets import com.couchbase.lite.Collection import com.couchbase.lite.Database import com.couchbase.lite.KeyStoreUtils +import com.couchbase.lite.KeyUsage import com.couchbase.lite.ListenerCertificateAuthenticator import com.couchbase.lite.ListenerPasswordAuthenticator import com.couchbase.lite.TLSIdentity @@ -999,7 +1002,7 @@ class ListenerExamples { // under the label 'couchbase-docs-cert' fun listenerWithSelfSignedCert(thisConfig: URLEndpointListenerConfiguration) { val thisIdentity = TLSIdentity.createIdentity( - true, + setOf(KeyUsage.SERVER_AUTH), CERT_ATTRIBUTES, null, "couchbase-docs-cert" @@ -1103,7 +1106,330 @@ class ListenerExamples { } -// +package com.couchbase.codesnippets + +import android.util.Log +import com.couchbase.lite.Database +import com.couchbase.lite.KeyUsage +import com.couchbase.lite.LogDomain +import com.couchbase.lite.LogLevel +import com.couchbase.lite.MultipeerCertificateAuthenticator +import com.couchbase.lite.MultipeerCollectionConfiguration +import com.couchbase.lite.MultipeerReplicator +import com.couchbase.lite.MultipeerReplicatorConfiguration +import com.couchbase.lite.PeerInfo +import com.couchbase.lite.TLSIdentity +import com.couchbase.lite.logging.ConsoleLogSink +import com.couchbase.lite.logging.LogSinks +import java.io.ByteArrayInputStream +import java.security.cert.CertificateFactory +import java.security.cert.X509Certificate +import java.util.Calendar +import java.util.Date + +@Suppress("PropertyName") +class MultipeerExamples { + companion object { + private const val TAG = "MultipeerExamples" + } + + val _database: Database? = null + val _collection1: com.couchbase.lite.Collection? = null + val _collection2: com.couchbase.lite.Collection? = null + val _collection3: com.couchbase.lite.Collection? = null + + private fun getCAPrivateKeyData() : ByteArray { + return "your_base64_encoded_private_key".toByteArray(Charsets.US_ASCII) + } + + private fun getCACertificateData() : ByteArray { + return "your_base64_encoded_certificate".toByteArray(Charsets.US_ASCII) + } + + fun collectionSimple() : Set { + val collection1 = _collection1!! + val collection2 = _collection2!! + val collection3 = _collection3!! + + // tag::multipeer-collection-simple + val collections = mutableSetOf() + for(col in listOf(collection1, collection2, collection3)) { + val builder = MultipeerCollectionConfiguration.Builder(col) + collections.add(builder.build()) + } + // end::multipeer-collection-simple + + return collections + } + + fun collectionConfig() : Set { + val collection1 = _collection1!! + val collection2 = _collection2!! + val collection3 = _collection3!! + + // tag::multipeer-collection-config + + // Config with custom conflict resolver + val config1 = MultipeerCollectionConfiguration.Builder(collection1) + .setConflictResolver { peerId, conflict -> conflict.remoteDocument } + .build() + + // Config with document IDs filter + val config2 = MultipeerCollectionConfiguration.Builder(collection2) + .setDocumentIDs(setOf("doc1", "doc2")) + .build() + + // Config with push replication filter + val config3 = MultipeerCollectionConfiguration.Builder(collection3) + .setPushFilter { peerId, document, flags -> document.getInt("access-level") == 2 } + .build() + + val collections = setOf(config1, config2, config3) + // end::multipeer-collection-config + + return collections + } + + fun createSelfSignedIdentity() : TLSIdentity { + // tag::multipeer-selfsigned-tlsidentity[] + // NOTE: Error handling omitted + + val persistentLabel = "com.myapp.identity" + + // Retrieve the TLS identity from the key store using the persistent label. + var identity = TLSIdentity.getIdentity(persistentLabel) + + // If the identity exists but is expired, delete it. + if(identity != null && identity.expiration.before(Date())) { + TLSIdentity.deleteIdentity(persistentLabel) + } + + if(identity == null) { + // Define certificate attributes and expiration date. + val certAttributes = mapOf( + TLSIdentity.CERT_ATTRIBUTE_COMMON_NAME to "Couchbase Demo", + TLSIdentity.CERT_ATTRIBUTE_ORGANIZATION to "Couchbase", + TLSIdentity.CERT_ATTRIBUTE_ORGANIZATION_UNIT to "Mobile", + TLSIdentity.CERT_ATTRIBUTE_EMAIL_ADDRESS to "noreply@couchbase.com" + ) + + val calendar = Calendar.getInstance() + calendar.add(Calendar.YEAR, 2) + val expiration = calendar.time + + identity = TLSIdentity.createIdentity( + setOf(KeyUsage.CLIENT_AUTH, KeyUsage.SERVER_AUTH), + certAttributes, + expiration, + persistentLabel + ) + } + // end::multipeer-selfsigned-tlsidentity[] + + return identity + } + + fun createCASignedIdentity() : TLSIdentity { + // tag::multipeer-tlsidentity[] + // NOTE: Error handling omitted + + val persistentLabel = "com.myapp.identity" + + // Retrieve the TLS identity from the key store using the persistent label. + var identity = TLSIdentity.getIdentity(persistentLabel) + + // If the identity exists but is expired, delete it. + if(identity != null && identity.expiration.before(Date())) { + // NOTE: Important to delete identity this way for CA signed identities + // since they extend beyond the Android key store + TLSIdentity.deleteIdentity(persistentLabel) + } + + if(identity == null) { + // Define certificate attributes and expiration date. + val certAttributes = mapOf( + TLSIdentity.CERT_ATTRIBUTE_COMMON_NAME to "Couchbase Demo", + TLSIdentity.CERT_ATTRIBUTE_ORGANIZATION to "Couchbase", + TLSIdentity.CERT_ATTRIBUTE_ORGANIZATION_UNIT to "Mobile", + TLSIdentity.CERT_ATTRIBUTE_EMAIL_ADDRESS to "noreply@couchbase.com" + ) + + val calendar = Calendar.getInstance() + calendar.add(Calendar.YEAR, 2) + val expiration = calendar.time + + val caKey = getCAPrivateKeyData() + val caCert = getCACertificateData() + + // As the function name indicates, this is not a secure way of doing things + // and should either be done for testing only, or in an environment that you + // assure to be secure against unknown actors, because otherwise anyone who + // can install the app can probably easily extract the CA key. + identity = TLSIdentity.createdSignedIdentityInsecure( + setOf(KeyUsage.SERVER_AUTH, KeyUsage.CLIENT_AUTH), + certAttributes, + caKey, + caCert, + expiration, + persistentLabel + ) + } + // end::multipeer-tlsidentity[] + + return identity + } + + fun authenticatorWithCallback() : MultipeerCertificateAuthenticator { + // tag::multipeer-authenticator-callback[] + // Use peer and certs to decide whether or not to allow (true) this peer + // or reject (false) + val authenticator = MultipeerCertificateAuthenticator { peer, certs -> true } + // end::multipeer-authenticator-callback[] + + return authenticator + } + + fun authenticatorWithRootCerts() : MultipeerCertificateAuthenticator { + // tag::multipeer-authenticator-rootcerts[] + val caCert = getCACertificateData() + val certificateFactory = CertificateFactory.getInstance("X.509") + val inputStream = ByteArrayInputStream(caCert) + val certObject = certificateFactory.generateCertificate(inputStream) as X509Certificate + val authenticator = MultipeerCertificateAuthenticator(listOf(certObject)) + // end::multipeer-authenticator-rootcerts[] + + return authenticator + } + + fun createConfig() : MultipeerReplicatorConfiguration { + val identity = createCASignedIdentity() + val authenticator = authenticatorWithRootCerts() + val collections = collectionConfig() + + // tag::multipeer-config[] + val config = MultipeerReplicatorConfiguration.Builder() + .setPeerGroupID("com.myapp") + .setIdentity(identity) + .setAuthenticator(authenticator) + .setCollections(collections) + .build() + // end::multipeer-config[] + + return config + } + + fun createMultipeerReplicator() : MultipeerReplicator { + val config = createConfig() + + // tag::multipeer-replicator + val replicator = MultipeerReplicator(config) + // end::multipeer-replicator[] + + return replicator + } + + fun startReplicator() { + val replicator = createMultipeerReplicator() + // tag::multipeer-replicator-start[] + replicator.start() + // end::multipeer-replicator-start[] + } + + fun stopReplicator() { + val replicator = createMultipeerReplicator() + // tag::multipeer-replicator-stop[] + replicator.stop() + // end::multipeer-replicator-stop[] + } + + fun statusListener() { + val replicator = createMultipeerReplicator() + + // tag::multipeer-status-listener[] + val token = replicator.addStatusListener { status -> + val state = if(status.isActive) "active" else "inactive" + val error = status.error?.message ?: "none" + Log.i(TAG, "Multipeer replicator: $state, Error: $error") + } + // end::multipeer-status-listener[] + } + + fun peerDiscoveryListener() { + val replicator = createMultipeerReplicator() + + // tag::multipeer-peer-discovery-listener[] + val token = replicator.addPeerDiscoveryStatusListener { status -> + val online = if(status.isOnline) "online" else "offline" + Log.i(TAG, "Peer Discovery Status - Peer ID: ${status.peer}, Status: $online") + } + // end::multipeer-peer-discovery-listener[] + } + + fun peerDocumentReplication() { + val replicator = createMultipeerReplicator() + + // tag::multipeer-document-replication-listener[] + val token = replicator.addPeerDocumentReplicationListener { status -> + val direction = if(status.isPush) "push" else "pull" + Log.i(TAG, "Peer Document Replication - Peer ID: ${status.peer}, Direction: $direction") + for(doc in status.documents) { + val error = doc.error?.message ?: "none" + val collection = "${doc.scope}.${doc.collection}" + Log.i(TAG, " Collection: $collection, Document ID: ${doc.id}, " + + "Flags: ${doc.flags}, Error: $error") + } + } + // end::multipeer-document-replication-listener[] + } + + fun peerID() { + val replicator = createMultipeerReplicator() + + // tag::multipeer-peer-id[] + val peerID = replicator.peerId + Log.i(TAG, "Peer ID: $peerID") + // end::multipeer-peer-id[] + } + + fun neighborPeers() { + val replicator = createMultipeerReplicator() + + // tag::multipeer-neighbor-peers[] + Log.i(TAG, "Neighbor Peers:") + replicator.neighborPeers.forEach { peer -> Log.i(TAG, " $peer") } + // end::multipeer-neighbor-peers[] + } + + fun peerInfo() { + val replicator = createMultipeerReplicator() + + // tag::multipeer-peer-info[] + fun printPeerInfo(info: PeerInfo) { + Log.i(TAG, "Peer ID: ${info.peerId}") + Log.i(TAG, " Status: ${if(info.isOnline) "online" else "offline"}") + Log.i(TAG, " Neighbor Peers:") + info.neighbors.forEach { peer -> Log.i(TAG, " $peer") } + + val replStatus = info.replicatorStatus + val activity = replStatus.activityLevel.name.lowercase() + val error = replStatus.error?.message ?: "none" + Log.i(TAG, " Replicator Status: $activity, Error: $error") + } + + for(peer in replicator.neighborPeers) { + printPeerInfo(replicator.getPeerInfo(peer)) + } + // end::multipeer-peer-info[] + } + + fun logging() { + // tag::multipeer-logdomain[] + // Enable verbose console logging for multipeer replicator-related domains only. + LogSinks.get().console = ConsoleLogSink(LogLevel.VERBOSE, LogDomain.PEER_DISCOVERY, + LogDomain.MULTIPEER) + // end::multipeer-logdomain[] + } +}// // Copyright (c) 2021 Couchbase, Inc All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -2189,19 +2515,17 @@ fun docsOnlyQuerySyntaxN1QLParams(database: Database): List { fun partialIndexExample(collection: Collection) { // tag::query-partial-index[] - val config = ValueIndexConfigurationFactory.newConfig("num") - config.where = "type = 'number'" - collection.createIndex("numIndex", config) - collection.database.createQuery("SELECT * FROM ${collection.fullName} WHERE type = 'foo' AND num > 1000") + val config = ValueIndexConfigurationFactory.newConfig("city") + config.where = "type = \"hotel\"" + collection.createIndex("HotelCityIndex", config) // end::query-partial-index[] } fun partialFullIndexExample(collection: Collection) { // tag::query-partial-full-index[] - val config = ValueIndexConfigurationFactory.newConfig("content") - config.where = "length(content) > 30" - collection.createIndex("contentIndex", config) - collection.database.createQuery("SELECT content FROM ${collection.fullName} WHERE match(contentIndex, 'database')") + val config = ValueIndexConfigurationFactory.newConfig("description") + config.where = "type = \"hotel\"" + collection.createIndex("HotelDescIndex", config) // end::query-partial-full-index[] } // @@ -2565,7 +2889,7 @@ class ReplicationExamples { log("Replicator activity level is ${change.status.activityLevel}") try { if (!repl.isDocumentPending(firstDoc, collection)) { - log("Doc ID ${firstDoc} has been pushed") + log("Doc ID $firstDoc has been pushed") } } catch (err: CouchbaseLiteException) { log("Failed getting pending docs", err) @@ -2695,13 +3019,16 @@ class ReplicationExamples { // See the License for the specific language governing permissions and // limitations under the License. // +@file:Suppress("UNUSED_VARIABLE", "unused") + package com.couchbase.codesnippets import android.app.Application import com.couchbase.lite.CouchbaseLite -import com.couchbase.lite.Database import com.couchbase.lite.LogDomain import com.couchbase.lite.LogLevel +import com.couchbase.lite.logging.ConsoleLogSink +import com.couchbase.lite.logging.LogSinks class SnippetApplication : Application() { @@ -2717,8 +3044,7 @@ class SnippetApplication : Application() { // tag::replication-logging[] CouchbaseLite.init(this, true) - Database.log.console.setDomains(LogDomain.REPLICATOR) - Database.log.console.level = LogLevel.DEBUG + LogSinks.get().console = ConsoleLogSink(LogLevel.DEBUG, LogDomain.REPLICATOR) // end::replication-logging[] } } diff --git a/modules/android/examples/java_snippets/app/build.gradle b/modules/android/examples/java_snippets/app/build.gradle index 9e770296f..d0c4c7a8d 100644 --- a/modules/android/examples/java_snippets/app/build.gradle +++ b/modules/android/examples/java_snippets/app/build.gradle @@ -51,16 +51,16 @@ android { repositories { if (USE_LOCAL_MAVEN) { mavenLocal() - maven { - url "https://proget.sc.couchbase.com/maven2/internalmaven/" - content { includeGroupByRegex "com\\.couchbase\\.lite.*" } - } } - else { - maven { - url "https://mobile.maven.couchbase.com/maven2/dev/" - content { includeGroupByRegex "com\\.couchbase\\.lite.*" } - } + + maven { + url "https://proget.sc.couchbase.com/maven2/internalmaven/" + content { includeGroupByRegex "com\\.couchbase\\.lite.*" } + } + + maven { + url "https://mobile.maven.couchbase.com/maven2/dev/" + content { includeGroupByRegex "com\\.couchbase\\.lite.*" } } google() diff --git a/modules/android/examples/java_snippets/build.gradle b/modules/android/examples/java_snippets/build.gradle index e1657e297..ac8a7f5d3 100644 --- a/modules/android/examples/java_snippets/build.gradle +++ b/modules/android/examples/java_snippets/build.gradle @@ -1,7 +1,7 @@ ext { - CBL_VERSION='3.2.2-18' - EXT_VERSION='1.0.0-26' + CBL_VERSION = project.hasProperty('cblVersion') ? project.cblVersion : { throw new GradleException('cblVersion property is required. Use -PcblVersion=x.x.x-x') }() + EXT_VERSION = project.hasProperty('extVersion') ? project.extVersion : { throw new GradleException('extVersion property is required. Use -PextVersion=x.x.x-x') }() } buildscript { diff --git a/modules/android/examples/kotlin_snippets/app/build.gradle b/modules/android/examples/kotlin_snippets/app/build.gradle index aaf43d0d0..45da1c504 100644 --- a/modules/android/examples/kotlin_snippets/app/build.gradle +++ b/modules/android/examples/kotlin_snippets/app/build.gradle @@ -13,7 +13,7 @@ android { defaultConfig { applicationId "com.couchbase.codesnippets.android.kotlin" - minSdk 23 + minSdk 24 targetSdk 33 versionCode 3 versionName "3.2" @@ -35,16 +35,16 @@ android { repositories { if (USE_LOCAL_MAVEN) { mavenLocal() - maven { - url "https://proget.sc.couchbase.com/maven2/internalmaven/" - content { includeGroupByRegex "com\\.couchbase\\.lite.*" } - } } - else { - maven { - url "https://mobile.maven.couchbase.com/maven2/dev/" - content { includeGroupByRegex "com\\.couchbase\\.lite.*" } - } + + maven { + url "https://proget.sc.couchbase.com/maven2/internalmaven/" + content { includeGroupByRegex "com\\.couchbase\\.lite.*" } + } + + maven { + url "https://mobile.maven.couchbase.com/maven2/dev/" + content { includeGroupByRegex "com\\.couchbase\\.lite.*" } } google() diff --git a/modules/android/examples/kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/ArrayIndexExamples.kt b/modules/android/examples/kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/ArrayIndexExamples.kt index f213e3503..2ed7ecc3d 100644 --- a/modules/android/examples/kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/ArrayIndexExamples.kt +++ b/modules/android/examples/kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/ArrayIndexExamples.kt @@ -13,6 +13,8 @@ // See the License for the specific language governing permissions and // limitations under the License. // +@file:Suppress("UNUSED_VARIABLE", "unused", "DEPRECATION") + package com.couchbase.codesnippets import com.couchbase.lite.ArrayIndexConfiguration @@ -21,21 +23,21 @@ import com.couchbase.lite.CouchbaseLiteException import com.couchbase.lite.IndexConfiguration class ArrayIndexExamples { - fun ArrayIndexConfig() { + fun arrayIndexConfig() { // tag::array-index-config[] val config: IndexConfiguration = ArrayIndexConfiguration("contacts", "type") // end::array-index-config[] } @Throws(CouchbaseLiteException::class) - fun ArrayIndexSingle(collection: Collection) { + fun arrayIndexSingle(collection: Collection) { // tag::array-index-single[] collection.createIndex("myindex", ArrayIndexConfiguration("likes")) // end::array-index-single[] } @Throws(CouchbaseLiteException::class) - fun ArrayIndexNested(collection: Collection) { + fun arrayIndexNested(collection: Collection) { // tag::array-index-nested[] collection.createIndex( "myindex", diff --git a/modules/android/examples/kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/BasicExamples.kt b/modules/android/examples/kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/BasicExamples.kt index 69be5646e..e6f3a5b39 100644 --- a/modules/android/examples/kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/BasicExamples.kt +++ b/modules/android/examples/kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/BasicExamples.kt @@ -13,7 +13,7 @@ // See the License for the specific language governing permissions and // limitations under the License. // -@file:Suppress("UNUSED_VARIABLE", "unused") +@file:Suppress("UNUSED_VARIABLE", "unused", "DEPRECATION") package com.couchbase.codesnippets @@ -51,7 +51,6 @@ import com.couchbase.lite.install import com.couchbase.lite.internal.utils.Fn import com.couchbase.lite.logging.BaseLogSink import com.couchbase.lite.logging.ConsoleLogSink -import com.couchbase.lite.logging.FileLogSink import com.couchbase.lite.logging.LogSinks import com.couchbase.lite.newConfig import java.io.File @@ -428,7 +427,7 @@ class SupportingDatatypes(private val context: Context) { val street = dict?.getString("street") // Iterate dictionary - dict?.forEach { println("${it} -> ${dict.getValue(it)}") } + dict?.forEach { println("$it -> ${dict.getValue(it)}") } // Create a mutable copy val mutableDict = dict?.toMutable() @@ -472,7 +471,7 @@ class SupportingDatatypes(private val context: Context) { val phone = array?.getString(1) // Iterate array - array?.forEachIndexed { index, item -> println("Row ${index} = ${item}") } + array?.forEachIndexed { index, item -> println("Row $index = $item") } // Create a mutable copy val mutableArray = array?.toMutable() diff --git a/modules/android/examples/kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/CollectionExamples.kt b/modules/android/examples/kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/CollectionExamples.kt index 772474322..ab0ef5a05 100644 --- a/modules/android/examples/kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/CollectionExamples.kt +++ b/modules/android/examples/kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/CollectionExamples.kt @@ -28,6 +28,7 @@ import com.couchbase.lite.ValueIndexItem class CollectionExamples { // We need to add a code sample to create a new collection in a scope + @Suppress("VariableNeverRead", "AssignedValueIsNeverRead") @Throws(CouchbaseLiteException::class) fun createCollectionInScope(db: Database) { // tag::scopes-manage-create-collection[] diff --git a/modules/android/examples/kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/ListenerExamples.kt b/modules/android/examples/kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/ListenerExamples.kt index aaf409d14..4cbc999dd 100644 --- a/modules/android/examples/kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/ListenerExamples.kt +++ b/modules/android/examples/kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/ListenerExamples.kt @@ -20,6 +20,7 @@ package com.couchbase.codesnippets import com.couchbase.lite.Collection import com.couchbase.lite.Database import com.couchbase.lite.KeyStoreUtils +import com.couchbase.lite.KeyUsage import com.couchbase.lite.ListenerCertificateAuthenticator import com.couchbase.lite.ListenerPasswordAuthenticator import com.couchbase.lite.TLSIdentity @@ -135,7 +136,7 @@ class ListenerExamples { // under the label 'couchbase-docs-cert' fun listenerWithSelfSignedCert(thisConfig: URLEndpointListenerConfiguration) { val thisIdentity = TLSIdentity.createIdentity( - true, + setOf(KeyUsage.SERVER_AUTH), CERT_ATTRIBUTES, null, "couchbase-docs-cert" diff --git a/modules/android/examples/kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/MultipeerExamples.kt b/modules/android/examples/kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/MultipeerExamples.kt new file mode 100644 index 000000000..9dc02dcfd --- /dev/null +++ b/modules/android/examples/kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/MultipeerExamples.kt @@ -0,0 +1,340 @@ +package com.couchbase.codesnippets + +import android.util.Log +import com.couchbase.lite.Database +import com.couchbase.lite.KeyUsage +import com.couchbase.lite.LogDomain +import com.couchbase.lite.LogLevel +import com.couchbase.lite.MultipeerCertificateAuthenticator +import com.couchbase.lite.MultipeerCollectionConfiguration +import com.couchbase.lite.MultipeerReplicator +import com.couchbase.lite.MultipeerReplicatorConfiguration +import com.couchbase.lite.PeerInfo +import com.couchbase.lite.TLSIdentity +import com.couchbase.lite.logging.ConsoleLogSink +import com.couchbase.lite.logging.LogSinks +import java.io.ByteArrayInputStream +import java.security.cert.CertificateFactory +import java.security.cert.X509Certificate +import java.util.Calendar +import java.util.Date + +@Suppress("PropertyName") +class MultipeerExamples { + companion object { + private const val TAG = "MultipeerExamples" + } + + val _database: Database? = null + val _collection1: com.couchbase.lite.Collection? = null + val _collection2: com.couchbase.lite.Collection? = null + val _collection3: com.couchbase.lite.Collection? = null + + private fun getCAPrivateKeyData() : ByteArray { + return "your_base64_encoded_private_key".toByteArray(Charsets.US_ASCII) + } + + private fun getCACertificateData() : ByteArray { + return "your_base64_encoded_certificate".toByteArray(Charsets.US_ASCII) + } + + fun collectionSimple() : Set { + val collection1 = _collection1!! + val collection2 = _collection2!! + val collection3 = _collection3!! + + // tag::multipeer-collection-simple[] + val collections = mutableSetOf() + for(col in listOf(collection1, collection2, collection3)) { + val builder = MultipeerCollectionConfiguration.Builder(col) + collections.add(builder.build()) + } + // end::multipeer-collection-simple[] + + return collections + } + + fun collectionConfig() : Set { + val collection1 = _collection1!! + val collection2 = _collection2!! + val collection3 = _collection3!! + + // tag::multipeer-collection-config[] + + // Config with custom conflict resolver + val config1 = MultipeerCollectionConfiguration.Builder(collection1) + .setConflictResolver { peerId, conflict -> conflict.remoteDocument } + .build() + + // Config with document IDs filter + val config2 = MultipeerCollectionConfiguration.Builder(collection2) + .setDocumentIDs(setOf("doc1", "doc2")) + .build() + + // Config with push replication filter + val config3 = MultipeerCollectionConfiguration.Builder(collection3) + .setPushFilter { peerId, document, flags -> document.getInt("access-level") == 2 } + .build() + + val collections = setOf(config1, config2, config3) + // end::multipeer-collection-config[] + + return collections + } + + fun createSelfSignedIdentity() : TLSIdentity { + // tag::multipeer-selfsigned-tlsidentity[] + // NOTE: Error handling omitted + + val persistentLabel = "com.myapp.identity" + + // Retrieve the TLS identity from the key store using the persistent label. + var identity = TLSIdentity.getIdentity(persistentLabel) + + // If the identity exists but is expired, delete it. + if(identity != null && identity.expiration.before(Date())) { + TLSIdentity.deleteIdentity(persistentLabel) + } + + if(identity == null) { + // Define certificate attributes and expiration date. + val certAttributes = mapOf( + TLSIdentity.CERT_ATTRIBUTE_COMMON_NAME to "Couchbase Demo", + TLSIdentity.CERT_ATTRIBUTE_ORGANIZATION to "Couchbase", + TLSIdentity.CERT_ATTRIBUTE_ORGANIZATION_UNIT to "Mobile", + TLSIdentity.CERT_ATTRIBUTE_EMAIL_ADDRESS to "noreply@couchbase.com" + ) + + val calendar = Calendar.getInstance() + calendar.add(Calendar.YEAR, 2) + val expiration = calendar.time + + identity = TLSIdentity.createIdentity( + setOf(KeyUsage.CLIENT_AUTH, KeyUsage.SERVER_AUTH), + certAttributes, + expiration, + persistentLabel + ) + } + // end::multipeer-selfsigned-tlsidentity[] + + return identity + } + + fun createCASignedIdentity() : TLSIdentity { + // tag::multipeer-tlsidentity[] + // NOTE: Error handling omitted + + val persistentLabel = "com.myapp.identity" + + // Retrieve the TLS identity from the key store using the persistent label. + var identity = TLSIdentity.getIdentity(persistentLabel) + + // If the identity exists but is expired, delete it. + if(identity != null && identity.expiration.before(Date())) { + // NOTE: Important to delete identity this way for CA signed identities + // since they extend beyond the Android key store + TLSIdentity.deleteIdentity(persistentLabel) + } + + if(identity == null) { + // Define certificate attributes and expiration date. + val certAttributes = mapOf( + TLSIdentity.CERT_ATTRIBUTE_COMMON_NAME to "Couchbase Demo", + TLSIdentity.CERT_ATTRIBUTE_ORGANIZATION to "Couchbase", + TLSIdentity.CERT_ATTRIBUTE_ORGANIZATION_UNIT to "Mobile", + TLSIdentity.CERT_ATTRIBUTE_EMAIL_ADDRESS to "noreply@couchbase.com" + ) + + val calendar = Calendar.getInstance() + calendar.add(Calendar.YEAR, 2) + val expiration = calendar.time + + val caKey = getCAPrivateKeyData() + val caCert = getCACertificateData() + + // As the function name indicates, this is not a secure way of doing things + // and should either be done for testing only, or in an environment that you + // assure to be secure against unknown actors, because otherwise anyone who + // can install the app can probably easily extract the CA key. + identity = TLSIdentity.createdSignedIdentityInsecure( + setOf(KeyUsage.SERVER_AUTH, KeyUsage.CLIENT_AUTH), + certAttributes, + caKey, + caCert, + expiration, + persistentLabel + ) + } + // end::multipeer-tlsidentity[] + + return identity + } + + fun authenticatorWithCallback() : MultipeerCertificateAuthenticator { + // tag::multipeer-authenticator-callback[] + // Use peer and certs to decide whether or not to allow (true) this peer + // or reject (false) + val authenticator = MultipeerCertificateAuthenticator { peer, certs -> true } + // end::multipeer-authenticator-callback[] + + return authenticator + } + + fun authenticatorWithRootCerts() : MultipeerCertificateAuthenticator { + // tag::multipeer-authenticator-rootcerts[] + val caCert = getCACertificateData() + val certificateFactory = CertificateFactory.getInstance("X.509") + val inputStream = ByteArrayInputStream(caCert) + val certObject = certificateFactory.generateCertificate(inputStream) as X509Certificate + val authenticator = MultipeerCertificateAuthenticator(listOf(certObject)) + // end::multipeer-authenticator-rootcerts[] + + return authenticator + } + + fun createConfig() : MultipeerReplicatorConfiguration { + val identity = createCASignedIdentity() + val authenticator = authenticatorWithRootCerts() + val collections = collectionConfig() + + // tag::multipeer-config[] + val config = MultipeerReplicatorConfiguration.Builder() + .setPeerGroupID("com.myapp") + .setIdentity(identity) + .setAuthenticator(authenticator) + .setCollections(collections) + .build() + // end::multipeer-config[] + + return config + } + + fun createMultipeerReplicator() : MultipeerReplicator { + val config = createConfig() + + // tag::multipeer-replicator[] + val replicator = MultipeerReplicator(config) + // end::multipeer-replicator[] + + return replicator + } + + fun startReplicator() { + val replicator = createMultipeerReplicator() + // tag::multipeer-replicator-start[] + replicator.start() + // end::multipeer-replicator-start[] + } + + fun stopReplicator() { + val replicator = createMultipeerReplicator() + // tag::multipeer-replicator-stop[] + replicator.stop() + // end::multipeer-replicator-stop[] + } + + fun statusListener() { + val replicator = createMultipeerReplicator() + + // tag::multipeer-status-listener[] + val token = replicator.addStatusListener { status -> + val state = if(status.isActive) "active" else "inactive" + val error = status.error?.message ?: "none" + Log.i(TAG, "Multipeer replicator: $state, Error: $error") + } + // end::multipeer-status-listener[] + } + + fun peerDiscoveryListener() { + val replicator = createMultipeerReplicator() + + // tag::multipeer-peer-discovery-listener[] + val token = replicator.addPeerDiscoveryStatusListener { status -> + val online = if(status.isOnline) "online" else "offline" + Log.i(TAG, "Peer Discovery Status - Peer ID: ${status.peer}, Status: $online") + } + // end::multipeer-peer-discovery-listener[] + } + + fun peerReplicatorStatus() { + val replicator = createMultipeerReplicator() + // tag::multipeer-replicator-status-listener[] + //val activities = ["stopped", "offline", "connecting", "idle", "busy"] + val token = replicator.addPeerReplicatorStatusListener { status -> + val direction = if(status.isOutgoing) "outgoing" else "incoming" + val activity = status.status.activityLevel.name.lowercase() + val error = status.status.error?.message ?: "none" + Log.i(TAG, "Peer Replicator Status - Peer ID: $status, " + + "Direction: $direction, " + + "Activity: $activity" + + "Error: $error") + } + // end::multipeer-replicator-status-listener[] + } + + fun peerDocumentReplication() { + val replicator = createMultipeerReplicator() + + // tag::multipeer-document-replication-listener[] + val token = replicator.addPeerDocumentReplicationListener { status -> + val direction = if(status.isPush) "push" else "pull" + Log.i(TAG, "Peer Document Replication - Peer ID: ${status.peer}, Direction: $direction") + for(doc in status.documents) { + val error = doc.error?.message ?: "none" + val collection = "${doc.scope}.${doc.collection}" + Log.i(TAG, " Collection: $collection, Document ID: ${doc.id}, " + + "Flags: ${doc.flags}, Error: $error") + } + } + // end::multipeer-document-replication-listener[] + } + + fun peerID() { + val replicator = createMultipeerReplicator() + + // tag::multipeer-peer-id[] + val peerID = replicator.peerId + Log.i(TAG, "Peer ID: $peerID") + // end::multipeer-peer-id[] + } + + fun neighborPeers() { + val replicator = createMultipeerReplicator() + + // tag::multipeer-neighbor-peers[] + Log.i(TAG, "Neighbor Peers:") + replicator.neighborPeers.forEach { peer -> Log.i(TAG, " $peer") } + // end::multipeer-neighbor-peers[] + } + + fun peerInfo() { + val replicator = createMultipeerReplicator() + + // tag::multipeer-peer-info[] + fun printPeerInfo(info: PeerInfo) { + Log.i(TAG, "Peer ID: ${info.peerId}") + Log.i(TAG, " Status: ${if(info.isOnline) "online" else "offline"}") + Log.i(TAG, " Neighbor Peers:") + info.neighbors.forEach { peer -> Log.i(TAG, " $peer") } + + val replStatus = info.replicatorStatus + val activity = replStatus.activityLevel.name.lowercase() + val error = replStatus.error?.message ?: "none" + Log.i(TAG, " Replicator Status: $activity, Error: $error") + } + + for(peer in replicator.neighborPeers) { + printPeerInfo(replicator.getPeerInfo(peer)) + } + // end::multipeer-peer-info[] + } + + fun logging() { + // tag::multipeer-logdomain[] + // Enable verbose console logging for multipeer replicator-related domains only. + LogSinks.get().console = ConsoleLogSink(LogLevel.VERBOSE, LogDomain.PEER_DISCOVERY, + LogDomain.MULTIPEER) + // end::multipeer-logdomain[] + } +} \ No newline at end of file diff --git a/modules/android/examples/kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/ReplicationExamples.kt b/modules/android/examples/kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/ReplicationExamples.kt index 3968e2088..3547399a6 100644 --- a/modules/android/examples/kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/ReplicationExamples.kt +++ b/modules/android/examples/kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/ReplicationExamples.kt @@ -359,7 +359,7 @@ class ReplicationExamples { log("Replicator activity level is ${change.status.activityLevel}") try { if (!repl.isDocumentPending(firstDoc, collection)) { - log("Doc ID ${firstDoc} has been pushed") + log("Doc ID $firstDoc has been pushed") } } catch (err: CouchbaseLiteException) { log("Failed getting pending docs", err) diff --git a/modules/android/examples/kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/SnippetApplication.kt b/modules/android/examples/kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/SnippetApplication.kt index 4a0db6140..93a8d5c09 100644 --- a/modules/android/examples/kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/SnippetApplication.kt +++ b/modules/android/examples/kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/SnippetApplication.kt @@ -13,13 +13,16 @@ // See the License for the specific language governing permissions and // limitations under the License. // +@file:Suppress("UNUSED_VARIABLE", "unused") + package com.couchbase.codesnippets import android.app.Application import com.couchbase.lite.CouchbaseLite -import com.couchbase.lite.Database import com.couchbase.lite.LogDomain import com.couchbase.lite.LogLevel +import com.couchbase.lite.logging.ConsoleLogSink +import com.couchbase.lite.logging.LogSinks class SnippetApplication : Application() { @@ -35,8 +38,7 @@ class SnippetApplication : Application() { // tag::replication-logging[] CouchbaseLite.init(this, true) - Database.log.console.setDomains(LogDomain.REPLICATOR) - Database.log.console.level = LogLevel.DEBUG + LogSinks.get().console = ConsoleLogSink(LogLevel.DEBUG, LogDomain.REPLICATOR) // end::replication-logging[] } } diff --git a/modules/android/examples/kotlin_snippets/build.gradle b/modules/android/examples/kotlin_snippets/build.gradle index 4dfe2e0b6..a648b0517 100644 --- a/modules/android/examples/kotlin_snippets/build.gradle +++ b/modules/android/examples/kotlin_snippets/build.gradle @@ -1,5 +1,7 @@ -ext { CBL_VERSION='3.2.2-18' } +ext { + CBL_VERSION = project.hasProperty('cblVersion') ? project.cblVersion : { throw new GradleException('cblVersion property is required. Use -PcblVersion=x.x.x-x') }() +} buildscript { repositories { diff --git a/modules/android/nav-android.adoc b/modules/android/nav-android.adoc index 7b913500f..2bccbbc32 100644 --- a/modules/android/nav-android.adoc +++ b/modules/android/nav-android.adoc @@ -11,7 +11,7 @@ include::partial$_set_page_context_for_android.adoc[] * xref:android:database.adoc[Databases] * xref:android:prebuilt-database.adoc[Pre-built Database] - + * xref:android:scopes-collections-manage.adoc[Scopes and Collections] * xref:android:document.adoc[Documents] @@ -38,7 +38,8 @@ include::partial$_set_page_context_for_android.adoc[] * Data Sync ** xref:android:dbreplica.adoc[Intra-device Sync] ** xref:android:replication.adoc[Remote Sync Gateway] - ** xref:android:p2psync-websocket.adoc[Peer-to-Peer] + ** xref:android:p2psync-multipeer.adoc[Multipeer Peer-to-Peer Replicator] + ** xref:android:p2psync-websocket.adoc[Active-Passive Peer-to-Peer] *** xref:android:p2psync-websocket-using-passive.adoc[Passive Peer] *** xref:android:p2psync-websocket-using-active.adoc[Active Peer] *** xref:android:p2psync-custom.adoc[Integrate Custom Listener] diff --git a/modules/android/pages/compatibility.adoc b/modules/android/pages/compatibility.adoc index ed3ca2d80..14cb0fb66 100644 --- a/modules/android/pages/compatibility.adoc +++ b/modules/android/pages/compatibility.adoc @@ -25,11 +25,11 @@ Related Content -- xref:cbl-whatsnew.adoc[What's New] | xref:android:releaseno The table below summarizes the compatible versions of Couchbase Lite with Sync Gateway. .Sync Gateway and Couchbase Lite Compatibility Matrix -[cols="3,^1,^1,^1,^1,^1,^1,^1"] +[cols="3,^1,^1,^1,^1,^1,^1,^1,^1"] |=== .2+^.>| Sync Gateway Versions ↓ -7+| Couchbase Lite → +8+| Couchbase Lite → ^| 1.4 *footnote:eos-cbl[This Couchbase Lite version is End of Support]]* ^| 2.0 @@ -38,6 +38,7 @@ The table below summarizes the compatible versions of Couchbase Lite with Sync G ^| 3.0.0 ^| 3.1.0 ^| 3.2.0 +^| 3.3.0 | 1.4 *footnote:eos-sgw[This Sync Gateway version is End of Support]* and 1.5 *footnote:eol-sgw[This Sync Gateway version is End of Life]* | image:ROOT:yes.png[] @@ -47,6 +48,7 @@ The table below summarizes the compatible versions of Couchbase Lite with Sync G | image:ROOT:no.png[] | image:ROOT:no.png[] | image:ROOT:no.png[] +| image:ROOT:no.png[] | 2.0 and 2.1 | image:ROOT:yes.png[] @@ -56,6 +58,7 @@ The table below summarizes the compatible versions of Couchbase Lite with Sync G | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] | 2.5 to 2.8 + with delta sync disabled @@ -66,6 +69,7 @@ with delta sync disabled | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] | 2.5 to 2.8 + with delta sync enabled @@ -76,6 +80,7 @@ with delta sync enabled | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] | 3.0.0 | image:ROOT:no.png[] @@ -85,6 +90,7 @@ with delta sync enabled | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] | 3.1.0 | image:ROOT:no.png[] @@ -94,6 +100,7 @@ with delta sync enabled | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] | 3.2.0 | image:ROOT:no.png[] @@ -103,6 +110,7 @@ with delta sync enabled | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] |=== @@ -112,7 +120,7 @@ with delta sync enabled The table below summarizes the Operating System SDK versions supported by Couchbase Lite. .OS -- SDK Support -[cols="1,^1,^1,^1,^1,^1,^1,^1,^1,^1"] +[cols="1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1"] |=== @@ -126,6 +134,7 @@ The table below summarizes the Operating System SDK versions supported by Couchb ^.>h| 3.0 ^.>h| 3.1 ^.>h| 3.2 +^.>h| 3.3 h| Android | https://docs-archive.couchbase.com/home/index.html[archive link] @@ -136,7 +145,8 @@ h| Android | xref:2.8@couchbase-lite:android:supported-os.adoc[link] | xref:3.0@couchbase-lite:android:supported-os.adoc[link] | xref:3.1@couchbase-lite:android:supported-os.adoc[link] -| https://docs.couchbase.com/couchbase-lite/current/android/supported-os.html[link] +| xref:3.2@couchbase-lite:android:supported-os.adoc[link] +| xref:3.3@couchbase-lite:android:supported-os.adoc[link] h| C | - @@ -147,7 +157,8 @@ h| C | - | xref:3.0@couchbase-lite:c:supported-os.adoc[link] | xref:3.1@couchbase-lite:c:supported-os.adoc[link] -| https://docs.couchbase.com/couchbase-lite/current/c/supported-os.html[link] +| xref:3.2@couchbase-lite:c:supported-os.adoc[link] +| xref:3.3@couchbase-lite:c:supported-os.adoc[link] h| iOS | https://docs-archive.couchbase.com/home/index.html[archive link] @@ -158,7 +169,8 @@ h| iOS | xref:2.8@couchbase-lite:swift:supported-os.adoc[link] | xref:3.0@couchbase-lite:swift:supported-os.adoc[link] | xref:3.1@couchbase-lite:swift:supported-os.adoc[link] -| https://docs.couchbase.com/couchbase-lite/current/swift/supported-os.html[link] +| xref:3.2@couchbase-lite:swift:supported-os.adoc[link] +| xref:3.3@couchbase-lite:swift:supported-os.adoc[link] h| Java @@ -170,7 +182,8 @@ h| Java | xref:2.8@couchbase-lite:java:supported-os.adoc[link] | xref:3.0@couchbase-lite:java:supported-os.adoc[link] | xref:3.1@couchbase-lite:java:supported-os.adoc[link] -| https://docs.couchbase.com/couchbase-lite/current/java/supported-os.html[link] +| xref:3.2@couchbase-lite:java:supported-os.adoc[link] +| xref:3.3@couchbase-lite:java:supported-os.adoc[link] h| Javascript | - @@ -182,6 +195,7 @@ h| Javascript | xref:3.0@couchbase-lite:ROOT:javascript.adoc[link] | xref:3.1@couchbase-lite:ROOT:javascript.adoc[link] | xref:3.2@couchbase-lite:ROOT:javascript.adoc[link] +| xref:3.3@couchbase-lite:ROOT:javascript.adoc[link] h| .NET | https://docs-archive.couchbase.com/home/index.html[archive link] @@ -192,7 +206,8 @@ h| .NET | xref:2.8@couchbase-lite:csharp:supported-os.adoc[link] | xref:3.0@couchbase-lite:csharp:supported-os.adoc[link] | xref:3.1@couchbase-lite:csharp:supported-os.adoc[link] -| https://docs.couchbase.com/couchbase-lite/current/csharp/supported-os.html[link] +| xref:3.2@couchbase-lite:csharp:supported-os.adoc[link] +| xref:3.3@couchbase-lite:csharp:supported-os.adoc[link] |=== diff --git a/modules/android/pages/gs-prereqs.adoc b/modules/android/pages/gs-prereqs.adoc index a2f107494..ed327e9c5 100644 --- a/modules/android/pages/gs-prereqs.adoc +++ b/modules/android/pages/gs-prereqs.adoc @@ -1,14 +1,11 @@ - = Preparing for Couchbase Lite on Android :page-aliases: start/java-android-gs-prereqs.adoc :page-role: :description: Prerequisites for the installation of Couchbase Lite :keywords: edge nosql api android java - :source-language: Java - :source-language: Kotlin @@ -48,8 +45,8 @@ We do not test against, nor guarantee support for, uncertified Android versions |22 |=== -[#supported-versions-for-vector-search-3-2-0] -== Supported Versions for Vector Search 3.2.0 +[#supported-versions-for-vector-search-3-3-0] +== Supported Versions for Vector Search 3.3.0 [IMPORTANT] -- @@ -73,6 +70,26 @@ To verify whether your device supports the AVX2 instructions set, https://www.in |=== +// more applicable for bluetooth implementations - others _should_ work with older Android - commenting out for now +//// +== Supported Versions for Multipeer Replicator + +[%autowidth.stretch] +|=== +|Platform |Runtime architectures |Minimum API Level + +|Android +|arm64-v8a +|35 + +|Android +|x86_64 +|35 +|=== +//// + + + [#related-content] == Related Content ++++ diff --git a/modules/android/pages/indexing.adoc b/modules/android/pages/indexing.adoc index 212d0429d..4d805da02 100644 --- a/modules/android/pages/indexing.adoc +++ b/modules/android/pages/indexing.adoc @@ -154,7 +154,7 @@ include::android:example$codesnippet_collection.java[tags="query-index_Querybuil [#partial-index] == Partial Index -Couchbase Lite 3.2.2 introduces support for Partial Index - Partial Value and Partial Full-Text Indexes. +Couchbase Lite 3.2.2 introduced support for Partial Index - Partial Value and Partial Full-Text Indexes. The Partial Index can create a smaller index, potentially improving index and query performance. You can use Partial Index to specify a `WHERE` clause in your index configuration. If a where clause is specified, the database will index a document only when the where clause condition is met. @@ -265,7 +265,7 @@ include::android:example$kotlin_snippets/app/src/main/kotlin/com/couchbase/codes [#array-indexing] == Array Indexing -Couchbase Lite 3.2.1 introduces functionality to optimize querying arrays. +Couchbase Lite 3.2.1 introduced functionality to optimize querying arrays. xref:android:query-n1ql-mobile.adoc#lbl-unnest[Array `UNNEST`] to unpack arrays within a document to allow joins with the parent object, and array indexes for indexing unnested array's values to allow more efficient queries with `UNNEST`. [#the-array-index] @@ -448,7 +448,7 @@ include::android:example$kotlin_snippets/app/src/main/kotlin/com/couchbase/codes The above snippet creates an array index to allow you to iterate through `contacts[].phones[].type` in the document, namely `"home"` and `"mobile"`. -IMPORTANT: Array literals are not supported in CBL 3.2.1. +IMPORTANT: Array literals are not supported in CBL 3.3.0. Attempting to create a query with array literals will return an error. diff --git a/modules/android/pages/new-logging-api.adoc b/modules/android/pages/new-logging-api.adoc index 044b50b94..88ae13e96 100644 --- a/modules/android/pages/new-logging-api.adoc +++ b/modules/android/pages/new-logging-api.adoc @@ -4,7 +4,7 @@ :page-edition: :page-aliases: :page-role: -:description: Couchbase Lite 3.2.2 introduces a new Logging API. +:description: A new Logging API. :keywords: edge mobile api java kotlin android apple logging file console custom [abstract] @@ -33,7 +33,7 @@ For information about the now deprecated earlier version of the Logging API, see [#logsinks] == LogSinks -Couchbase Lite 3.2.2 introduces a new Logging API. +Couchbase Lite 3.2.2 introduced a new Logging API. The new Logging API has the following benefits: * Log sinks are now thread safe, removing risk of inconsistent states during initialization. diff --git a/modules/android/pages/p2psync-custom.adoc b/modules/android/pages/p2psync-custom.adoc index 09710b055..a4fb8b3e1 100644 --- a/modules/android/pages/p2psync-custom.adoc +++ b/modules/android/pages/p2psync-custom.adoc @@ -34,6 +34,14 @@ To use it in production (also see the https://www.couchbase.com/licensing-and-su This content covers how to integrate a custom __MessageEndpointListener__ solution with Couchbase Lite to handle the data transfer, which is the sending and receiving of data. Where applicable, we discuss how to integrate Couchbase Lite into the workflow. +Couchbase Lite supports different transport modes depending on the peer-to-peer synchronization approach: + +=== Custom Listener Integration +- Supports: Bring your own transport mode +- The application implements the transport layer, allowing for custom protocols including Bluetooth Low Energy +- Couchbase Lite provides the interface definition while the application handles the transport implementation + + The following sections describe a typical Peer-to-Peer workflow. [#peer-discovery] diff --git a/modules/android/pages/p2psync-multipeer.adoc b/modules/android/pages/p2psync-multipeer.adoc new file mode 100644 index 000000000..4785f2f93 --- /dev/null +++ b/modules/android/pages/p2psync-multipeer.adoc @@ -0,0 +1,657 @@ += Multipeer P2P Replicator +ifdef::show_edition[:page-edition: Enterprise Edition] +:description: The Multipeer Replicator enables lightweight, self-organizing mesh networks for apps running on the same local Wi-Fi. +:source-language: Kotlin + + +[abstract] +{description} +This approach requires minimal setup and automates peer discovery and connectivity management, making it simpler than xref:p2psync-websocket.adoc[active-passive P2P configurations]. + + + + +[#introduction] +== Introduction + +Couchbase Lite's Peer-to-Peer synchronization solution offers secure storage and bidirectional data synchronization between mobile and IoT devices without needing a centralized cloud-based control point. + +For small mesh topologies, Multipeer Replicator offers `autodiscovery` for Wi-Fi-based networks and secure communication via TLS and certificate-based authentication. + +The dynamic mesh topology gives optimal peer connectivity and the lightweight and low-maintenance configuration requires less management and less code than using active-passive peer-to-peer sync. + +== Overview + + +To maintain optimal connectivity, efficient data transport, and balanced workloads, the Multipeer Replicator forms a dynamic mesh network among peers in the same group. +The mesh network provides resilience through multiple communication pathways - if one connection fails, data can flow through alternative routes. + +It avoids redundant direct connections, evenly distributes connections across peers, and optimizes communication paths through intelligent routing. + +The mesh network continuously adapts as peers join or leave, automatically healing itself by establishing new connections and rerouting data flow to maintain network integrity. + +This self-organizing approach ensures reliable data synchronization even in challenging network conditions, where individual peer connections may be intermittent or unreliable. + +Multipeer Replicator supports Wi-Fi (IP-based transport) as of CBL 3.3. + +// Mesh Diagram +// [graphviz] +// .... +// graph { +// layout="circo"; +// id1[ label="Android Device #1" shape="square" ] +// id2[ label="Android Device #2" shape="square" ] +// id3[ label="Android Device #3" shape="square" ] +// id4[ label="Android Device #4" shape="square" ] +// id5[ label="Android Device #5" shape="square" ] +// id6[ label="Android Device #6" shape="square" ] +// id1 -- id2 +// id1 -- id3 +// id1 -- id4 +// id1 -- id5 +// id1 -- id6 +// id2 -- id3 +// id2 -- id4 +// id2 -- id5 +// id2 -- id6 +// id3 -- id4 +// id3 -- id5 +// id3 -- id6 +// id4 -- id5 +// id4 -- id6 +// id5 -- id6 +// } +// .... + + +== Prerequisites + + +=== Transport and Peer Discovery Protocol + + +Multipeer Replicator supports Wi-Fi transport, using `DNS-SD` (also known as Bonjour) for peer discovery. +Peers connect to the same Wi-Fi network to discover and establish connections with one another. + + +=== Supported Platforms + + +For Android, we recommend using a recent release, preferably supporting minimum API level 24, or more recent but earlier versions should work with the multipeer sync feature. +See xref:kotlin:supported-os.adoc[Supported Platforms] for more details. + +== Configuration + +The `MultipeerReplicator` requires several configuration components to establish secure peer-to-peer replication between devices. +This section covers the key configurations you need to set up: + +=== Collection Configurations + + +You can specify one or more collections available for replication when creating a `MultipeerReplicatorConfiguration`. + +For each collection, you'll create `MultipeerCollectionConfiguration` with the collection object and optionally configure a custom conflict resolver or any replication filters you want to use for the collection. + + +.Specify collections without any configurations +[source,kotlin] +---- +include::example$kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/MultipeerExamples.kt[tags="multipeer-collection-simple", indent=0] +---- + +.Specify collections with some configuration +[source,kotlin] +---- +include::example$kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/MultipeerExamples.kt[tags="multipeer-collection-config", indent=0] +---- + + +=== Peer Identity + +Each peer in the Multipeer replication is uniquely identified and authenticated by using a peer's certificate. + +Multipeer Replicator which uses TLS communication by default requires to specify a `TLSIdentity` object for specifying the identity. + +You can use either a self-signed certificate for the identity or have an authority or issuer sign the identity's certificate. +The choice depends on your specific security requirements and deployment environment. + +As each peer could be either a client or a server to the other peer in the Multipeer replication environment, you must create the identity's certificate with the extension key usages for both client and server authentication to allow either direction to authenticate the certificate. + +==== CA-Signed Identity + +When using a certificate authority (CA) signed identity, the issuer's certificate authenticates the connecting peer. + +.Get and Create an identity signed by an issuer +[source,kotlin] +---- +include::example$kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/MultipeerExamples.kt[tags="multipeer-tlsidentity", indent=0] +---- + +==== Self-Signed Identity + +For environments where certificate authority management is not feasible, you can implement peer identity using self-signed certificates. +This approach is commonly used in closed network environments where devices need to authenticate with each other without external certificate authorities. + +.Creating a self-signed identity for peer authentication +[source,kotlin] +---- +include::example$kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/MultipeerExamples.kt[tags="multipeer-selfsigned-tlsidentity", indent=0] +---- + +When using self-signed certificates, implement your own certificate validation logic in the authenticator callback to make sure only trusted peers can join your mesh network. + + +=== Peer Authenticator + +`MultipeerReplicator` only supports certificate based authentication. +You can specify the authenticator in two ways: + +* certificate authentication callback +* root certificates. + +When specifying the certificate authentication callback, the callback calls the remote peer's identity certificate. + +When specifying the root certificates, the Multipeer replicator automatically authenticates the remote peer's identity certificate by verifying whether one of the specified root certificates signed the certificate. + + +.Authenticator with authentication callback +[source,kotlin] +---- +include::example$kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/MultipeerExamples.kt[tags="multipeer-authenticator-callback", indent=0] +---- + + +.Authenticator with root certificates +[source,kotlin] +---- +include::example$kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/MultipeerExamples.kt[tags="multipeer-authenticator-rootcerts", indent=0] +---- + +=== Create MultipeerReplicatorConfiguration + + +The `MultipeerReplicatorConfiguration` can be created with a `peerGroupID` which is an identifier that identifies the peer-to-peer network used by the app, collection configurations, peer identity, and authenticator. + + +.Creating MultipeerReplicatorConfiguration +[source,kotlin] +---- +include::example$kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/MultipeerExamples.kt[tags="multipeer-config", indent=0] +---- + +TIP: Performance may vary in mesh networks depending on your specific environment and number of peers. +We recommend running tests with your network configuration to assess any effects on packet loss or latency. + +== Life Cycle + + +=== Create MultipeerReplicator with Configuration + +.Creating MultipeerReplicator +[source,kotlin] +---- +include::example$kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/MultipeerExamples.kt[tags="multipeer-replicator", indent=0] +---- + + +// === Permissions + +// Android requires specific permissions for DNS-SD operations. +// You can get the necessary permissions using: + + +// .Getting necessary permissions +// [source,kotlin] +// ---- +// include::example$kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/MultipeerExamples.kt[tags="multipeer-permissions", indent=0] +// ---- + + +=== Start + +.Starting MultipeerReplicator +[source,kotlin] +---- +include::example$kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/MultipeerExamples.kt[tags="multipeer-replicator-start", indent=0] +---- + + +=== Stop + + +.Stopping MultipeerReplicator +[source,kotlin] +---- +include::example$kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/MultipeerExamples.kt[tags="multipeer-replicator-stop", indent=0] +---- + + +=== Background Behavior + +The `MultipeerReplicator` supports continuous mode, which allows it to operate in the background. + + +When the application is put into the background, the `MultipeerReplicator` will continue to operate in the background. + + +You should make sure that the application has the necessary permissions to run in the background and configure the `MultipeerReplicator` to support background operations. + + +=== Events + +In general, the connection should just work, and most of these optional listen events give status you may only want to use during development and testing. +Event types include the following: + + +==== Multipeer Replicator Status + + +.Multipeer Replicator Status Listener +[source,kotlin] +---- +include::example$kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/MultipeerExamples.kt[tags="multipeer-status-listener", indent=0] +---- + + +==== Peer Discovery Status + + +.Peer Discovery Status Listener +[source,kotlin] +---- +include::example$kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/MultipeerExamples.kt[tags="multipeer-peer-discovery-listener", indent=0] +---- + + +==== Peer's Replicator Status + + +.Peer's Replicator Status Listener +[source,kotlin] +---- +include::example$kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/MultipeerExamples.kt[tags="multipeer-replicator-status-listener", indent=0] +---- + + +==== Peer's Document Replication + + + + +.Peer's Document Replication Listener +[source,kotlin] +---- +include::example$kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/MultipeerExamples.kt[tags="multipeer-document-replication-listener", indent=0] +---- + + + + +== Peer Info + + +=== Peer Identifier + + +A unique `peerID`, which is a digest of the peer's identity certificate, identifies each peer. +You can get your `peerID` from the `peerID` property of the `MultipeerReplicator`. + + +Getting peer ID +[source,kotlin] +---- +include::example$kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/MultipeerExamples.kt[tags="multipeer-peer-id", indent=0] +---- + + +=== Neighbor Peers + + +You can get a list of current online peers' Identifiers from the `MultipeerReplicator` from the `neighborPeers` property. + + +.Getting neighbor peers +[source,kotlin] +---- +include::example$kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/MultipeerExamples.kt[tags="multipeer-neighbor-peers", indent=0] +---- + + +=== Peer Info + + +Getting peer info +[source,kotlin] +---- +include::example$kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/MultipeerExamples.kt[tags="multipeer-peer-info", indent=0] +---- + + +== Logging + + +`LogDomain` sets up the logging of: + + +. Peer discovery log messages +. Multipeer replication and mesh network management log messages + + +[source,kotlin] +---- +include::example$kotlin_snippets/app/src/main/kotlin/com/couchbase/codesnippets/MultipeerExamples.kt[tags="multipeer-logdomain", indent=0] +---- + + +== API Reference + + +You can find https://docs.couchbase.com/mobile/{major}.{minor}.{maintenance-kotlin}{empty}/couchbase-lite-kotlin[Kotlin API References] here. + + + + + + + + + + + + + + +// == Overview + + +// The Multipeer P2P Replicator automatically advertises its presence, discovers other peers, +// and establishes connections for data replication with peers that share the same group identifier defined by the application. + + +// To maintain optimal connectivity, efficient data transport, and balanced workloads, the Multipeer P2P Replicator forms a dynamic mesh network among peers in the same group. +// It avoids redundant direct connections, evenly distributes connections across peers, and optimizes communication paths. +// The mesh network continuously adapts as peers join or leave. + + +// [mermaid] +// .... +// flowchart TB; +// id1[Android Device #1] +// id2[Android Device #2] +// id3[Android Device #3] +// id4[Android Device #4] +// id5[Android Device #5] +// id6[Android Device #6] +// id1<-->id2 +// id1<-->id3 +// id1<-->id4 +// id1<-->id5 +// id1<-->id6 +// id2<-->id3 +// id2<-->id4 +// id2<-->id5 +// id2<-->id6 +// id3<-->id4 +// id3<-->id5 +// id3<-->id6 +// id4<-->id5 +// id4<-->id6 +// id5<-->id6 +// .... + + + + +// == Configuration + + +// .Configuration for creating a Multipeer P2P Replicator +// [source,java] +// ---- +// public struct MultipeerReplicatorConfiguration { +// /// Identifier for discovering and connecting peers. +// public let peerGroupID: String + + +// /// Peer identity. +// /// @Note The identity’s certificate must be both server and client certificate. +// public let identity: TLSIdentity + + + + +// /// Peer authenticator. +// public let authenticator: MultipeerAuthenticator + + + + +// /// Collections to replicate. +// public let collections: [MultipeerCollectionConfiguration] + + + + +// /// Initialize the configuration with a peer group identifier, identity, +// /// authenticator and collections. +// public init(peerGroupID: String, +// identity: TLSIdentity, +// authenticator: MultipeerCertificateAuthenticator, +// collections: [MultipeerCollectionConfiguration]) +// } +// ---- + + + + + + + + + + +// TIP: In version 3.3.0, the recommended maximum number of peers in a mesh network is approximately 15. + + + + +// === Life Cycle + + +// Starting and stopping a peer-to-peer connection... + + + + +// === Listening for Changes + + +// Event types... + + + + +// `PeerDocumentReplication` + + + + +// == Example Use + + +// Here we will show how to instansiate a `MultipeerReplicatorConfiguration` configuration with self-signed certificates, and connect it to an example collection. + + +// [source,kotlin] +// ---- +// // Code sample +// ---- + + +// === MultipeerCollectionConfiguration + + +// `MultipeerCollectionConfiguration` specifies a collection and its associated settings. +// This includes a conflict resolver and replication filters. +// A list of these configurations is required to define which collections will be replicated within the peer group network. + + + + +// [source,kotlin] +// ---- +// /// Type Alias for Multipeer Replication Filter Function. +// public typealias MultipeerReplicationFilter = +// (PeerID, Document, DocumentFlags) -> Bool + + + + +// /// Multipeer Conflict Resolver Protocol. +// public protocol MultipeerConflictResolver { +// func resolve(peerID: PeerID, conflict: Conflict) -> Document? +// } + + +// /// Defines collection for replication including optional filters and +// /// custom conflict resolver. +// public struct MultipeerCollectionConfiguration { +// /// The collection. +// public let collection: Collection + + +// /// Document IDs filter. +// public var documentIDs: Array? + + +// /// Push filter. +// public var pushFilter: MultipeerReplicationFilter? + + +// /// Pull filter. +// public var pullFilter: MultipeerReplicationFilter? + + + + +// /// Custom conflict resolver. +// public var conflictResolver: MultipeerConflictResolver? + + + + +// /// Initialize with a collection. +// public init(collection: Collection) +// } +// ---- + + + + +// === Authenticator + + +// `MultipeerCertificateAuthenticator` + + +// === Peer Info + + +// `PeerInfo` provides information about the peer, including a peer unique identifier, the peer certificate, online status, replicator status, and its current `neighborPeers`. + + + + +// [source,kotlin] +// ---- + + +// ---- + + +// === Self-signed Certs + + +// .Creating a self-signed certificate that can be used as both client and server cert +// [source,kotlin] +// ---- +// /// Extended Key Usage for which the certified public key may be used. +// public struct KeyUsages: OptionSet { +// /// For Server Authentication +// public static let serverAuth = 0x40 + + +// /// For Client Authentication +// public static let clientAuth = 0x80 +// } + + +// /// TLS Identity +// public class TLSIdentity { +// /// Create a TLS identity from private key and certificate data. +// /// +// /// The private key and certificate data must be either in PEM or DER format. +// /// This method can be used to create an issuer identity for signing +// /// a certificate when generating a new TLS identity. +// public static func createIdentity(privateKey: Data, +// certificate: Data) throws -> TLSIdentity + + + + +// /// Generate a TLS identity, either self-signed or signed by an issuer identity. +// /// +// /// The `attributes` must include a common name (CN); otherwise an error +// /// will be thrown. +// /// +// /// If no the expiration date is specified, the default validity of one year +// /// will be applied. +// /// +// /// The optional issuer identity may be specified to sign the certificate. +// /// The issuer identity can be created using +// /// `createIdentity(privateKeyData:certificateData:)`. If no issuer is specified, +// /// the certificate will be self-signed. +// /// +// /// If a `label` is provided, the identity will be stored in the +// /// platform’s secure key storage under that label. +// public static func createIdentity(keyUsages: KeyUsages, +// attributes: [String: String], +// expiration: Date?, +// issuer: TLSIdentity?, +// label: String?) throws -> TLSIdentity + + + + + + + + +// @Deprecated, “Use createIdentity(keyUsages:attributes:expiration:issuer:label)” +// public static func createIdentity(server: Bool, +// attributes: [String: String], +// expiration: Date?, +// label: String) throws -> TLSIdentity +// } +// ---- + + + + + + +// === Logging + + +// `LogDomain` + + + + +// == API Reference + + +// *URL* + + + diff --git a/modules/android/pages/p2psync-websocket.adoc b/modules/android/pages/p2psync-websocket.adoc index 134df7a3f..f9be7ede4 100644 --- a/modules/android/pages/p2psync-websocket.adoc +++ b/modules/android/pages/p2psync-websocket.adoc @@ -1,9 +1,8 @@ - -= Data Sync Peer-to-Peer += Active-Passive Peer-to-Peer Sync :page-aliases: learn/java-android-p2psync-websocket.adoc ifdef::show_edition[:page-edition: Enterprise Edition] :page-role: -:description: Couchbase Lite's Peer-to-Peer Synchronization enables edge devices to synchronize securely without consuming centralized cloud-server resources +:description: Where MultiPeer Sync is not available, Couchbase Lite's Active-Passive Peer-to-Peer Synchronization enables edge devices to synchronize securely without consuming centralized cloud-server resources :source-language: Java @@ -21,6 +20,20 @@ Related Content -- https://docs.couchbase.com/mobile/{major}.{minor}.{maintenanc -- +[TIP] +xref:p2psync-multipeer.adoc[Multipeer P2P Replicator] +==== +Multipeer P2P Replicator is available for + +* Auto-discovery over local Wi-Fi (via `DNS-SD`) +* Lightweight and low-maintenance configuration +* Dynamic mesh topology for optimal peer connectivity +* Secure communication via TLS and certificate-based authentication +==== + + + + [#introduction] == Introduction // tag::introduction-full[] @@ -69,6 +82,12 @@ Therefore, to use Peer-to-Peer synchronization in your application, you must con Here you can see configuration involves a xref:android:p2psync-websocket-using-passive.adoc[Passive Peer] and an xref:android:p2psync-websocket-using-active.adoc[Active Peer] and a user-friendly Listener configuration in <>. +Couchbase Lite supports different transport modes depending on the peer-to-peer synchronization approach: + +=== Active-Passive Peer-to-Peer +- Supports: Wi-Fi (IP-based transport modes only) + + You can also learn how to implement Peer-to-Peer synchronization by referring to our tutorial -- see: xref:tutorials:cbl-p2p-sync-websockets:swift/cbl-p2p-sync-websockets.adoc[Getting Started with Peer-to-Peer Synchronization]. [#features] diff --git a/modules/android/pages/query-n1ql-mobile.adoc b/modules/android/pages/query-n1ql-mobile.adoc index caa083519..f591dc0db 100644 --- a/modules/android/pages/query-n1ql-mobile.adoc +++ b/modules/android/pages/query-n1ql-mobile.adoc @@ -462,7 +462,7 @@ The query above will then produce the following output: The output demonstrates retrieval of both primary and secondary contact numbers listed as type `"mobile"`. -IMPORTANT: Array literals are not supported in CBL 3.2.1. +IMPORTANT: Array literals are not supported in CBL 3.3.0. Attempting to create a query with array literals will return an error. [#lbl-where] diff --git a/modules/android/pages/releasenotes.adoc b/modules/android/pages/releasenotes.adoc index a2e6fc2bd..868480801 100644 --- a/modules/android/pages/releasenotes.adoc +++ b/modules/android/pages/releasenotes.adoc @@ -8,14 +8,4 @@ ifdef::prerelease[:page-status: {prerelease}] :param-title: Android [#maint-latest] -include::partial$release-notes/couchbase-mobile-android-release-note.3.2.4.adoc[] - -include::partial$release-notes/couchbase-mobile-android-release-note.3.2.3.adoc[] - -include::partial$release-notes/couchbase-mobile-android-release-note.3.2.2.adoc[] - -include::partial$release-notes/couchbase-mobile-android-release-note.3.2.1.adoc[] - -include::partial$release-notes/couchbase-mobile-android-release-note.3.2.0.adoc[] - -include::partial$release-notes/couchbase-mobile-android-release-note.3.2.0-beta.adoc[] +include::partial$release-notes/couchbase-mobile-android-release-note.4.0.0.adoc[] diff --git a/modules/android/partials/release-notes/couchbase-mobile-android-release-note.3.2.0-beta.adoc b/modules/android/partials/release-notes/couchbase-mobile-android-release-note.3.2.0-beta.adoc deleted file mode 100644 index 9a1eee7d4..000000000 --- a/modules/android/partials/release-notes/couchbase-mobile-android-release-note.3.2.0-beta.adoc +++ /dev/null @@ -1,202 +0,0 @@ -[#maint-3-2-0-beta-1] -== 3.2.0 -- August 2024 - -Version 3.2.0 Beta 1 for {param-title} delivers the following features and enhancements: - -=== Enhancements - -* https://issues.couchbase.com/browse/CBL-4378[CBL-4378 - Add consumer-rules.pro to Android maven and zip distributions] - -* https://issues.couchbase.com/browse/CBL-5213[CBL-5213 - Implement Proxy Authenticator API for Android / Java] - -* https://issues.couchbase.com/browse/CBL-5207[CBL-5207 - Implement Collection's database property] - -* https://issues.couchbase.com/browse/CBL-5201[CBL-5201 - Implementation of Collection's full-name property] - -* https://issues.couchbase.com/browse/CBL-5361[CBL-5361 - Control the JNI library's publication of symbols] - -* https://issues.couchbase.com/browse/CBL-5270[CBL-5270 - Ensure that c4queryobs_* functions are called under the database-exclusive lock] - -* https://issues.couchbase.com/browse/CBL-4897[CBL-4897 - Revise zipfile production] - -// LiteCore - -* https://issues.couchbase.com/browse/CBL-5241[CBL-5241 - Upsert performance is degraded when the number of docs is increased] - -* https://issues.couchbase.com/browse/CBL-5379[CBL-5379 - Update iOS Target Version to 12] - -* https://issues.couchbase.com/browse/CBL-5287[CBL-5287 - Enable Prediction Function in SQL++ Parser] - -* https://issues.couchbase.com/browse/CBL-283[CBL-283 - Date Format other than ISO 8601] - -* https://issues.couchbase.com/browse/CBL-68[CBL-68 - DATE_DIFF_MILLIS(date1, date2, part)] - -* https://issues.couchbase.com/browse/CBL-67[CBL-67 - DATE_ADD_STR(date1, n, part)] - -* https://issues.couchbase.com/browse/CBL-66[CBL-66 - DATE_ADD_MILLIS(date1, n, part)] - -* https://issues.couchbase.com/browse/CBL-65[CBL-65 - MILLIS_TO_UTC(date1 [, fmt])] - -* https://issues.couchbase.com/browse/CBL-64[CBL-64 - MILLIS_TO_TZ(date1, tz [, fmt])] - -* https://issues.couchbase.com/browse/CBL-62[CBL-62 - STR_TO_TZ(date1, tz)] - -* https://issues.couchbase.com/browse/CBL-61[CBL-61 - MILLIS_TO_STR(date1 [, fmt ])] - -* https://issues.couchbase.com/browse/CBL-60[CBL-60 - DATE_DIFF_STR(date1, date2, part)] - -=== Issues and Resolutions - -* https://issues.couchbase.com/browse/CBL-5310[CBL-5310 - Fix concurrent modification during iteration] - -* https://issues.couchbase.com/browse/CBL-5037[CBL-5037 - Allow empty Domain list for Console Logger] - -* https://issues.couchbase.com/browse/CBL-5225[CBL-5225 - Fix ReplicatedDocument getters do not comply with the spec] - -* https://issues.couchbase.com/browse/CBL-4992[CBL-4992 - Beryllium: Null is a legal revId in createC4DocumentChange] - -* https://issues.couchbase.com/browse/CBL-4990[CBL-4990 - Fix Beryllium: `CollectionChangeNotifier.getChanges()` prematurely signals end of changes] - -* https://issues.couchbase.com/browse/CBL-4988[CBL-4988 - Beryllium: Map LiteCore log domain "Changes" to LogDomain.DATABASE] - -* https://issues.couchbase.com/browse/CBL-4986[CBL-4986 - Remap Changes LiteCore Log Domain to Database Domain] - -* https://issues.couchbase.com/browse/CBL-5455[CBL-5455 - FixResult.toJSON is annotated @NonNull, but can return null] - -* https://issues.couchbase.com/browse/CBL-4841[CBL-4841 - Fix Logic bug in Conflict Resolver] - -* https://issues.couchbase.com/browse/CBL-4742[CBL-4742 - Stop treating all connection failures as Server Errors] - -* https://issues.couchbase.com/browse/CBL-4797[CBL-4797 - Database.exists should support the default directory] - -* https://issues.couchbase.com/browse/CBL-4294[CBL-4294 - ReplicatorConfiguration.setAuthenticator should allow a null argument] - -* https://issues.couchbase.com/browse/CBL-4837[CBL-4837 - Lower the max size on the ClientTask thread pool to 8] - -* https://issues.couchbase.com/browse/CBL-4874[CBL-4874 - Strip LiteCore binaries] - -* https://issues.couchbase.com/browse/CBL-4667[CBL-4667 - Port to Beryllium: Proguard rules are not sufficient] - -* https://issues.couchbase.com/browse/CBL-4663[CBL-4663 - Port to Beryllium: Failure in OkHttp authenticator] - -* https://issues.couchbase.com/browse/CBL-4572[CBL-4572 - Fix hand copy of DB produces corrupt database] - -* https://issues.couchbase.com/browse/CBL-3882[CBL-3882 - Fix logging fails locating JNI implementations on some devices] - -* https://issues.couchbase.com/browse/CBL-4292[CBL-4292 - `Collection.collectionChangeFlow` requires an argument] - -* https://issues.couchbase.com/browse/CBL-4298[CBL-4298 - Work Manager Replication thows on Replication complete (Beryllium)] - -// Litecore enhancements - -* https://issues.couchbase.com/browse/CBL-5336[CBL-5336 - Over the bound of FLDicIterator should be banned] - -* https://issues.couchbase.com/browse/CBL-5335[CBL-5335 - array_agg seem to fail under some circumstances] - -* https://issues.couchbase.com/browse/CBL-5332[CBL-5332 - Crash during document expiration] - -* https://issues.couchbase.com/browse/CBL-5307[CBL-5307 - Updating remote revision when pulling the existing revision] - -* https://issues.couchbase.com/browse/CBL-5044[CBL-5044 - Don't capture backtrace for OutOfRange error FLDictIterator_Next] - -* https://issues.couchbase.com/browse/CBL-5033[CBL-5033 - Puller revoked docs should queue with other revs] - -* https://issues.couchbase.com/browse/CBL-5449[CBL-5449 - Port - Attachments flag is dropped when applying delta to incoming rev] - -* https://issues.couchbase.com/browse/CBL-4536[CBL-4536 - Error when saving documents with LiteCore error 17: must be called during a transaction] - -* https://issues.couchbase.com/browse/CBL-4506[CBL-4506 - Investigate Replicator starts up slow for big database] - -* https://issues.couchbase.com/browse/CBL-4499[CBL-4499 - Replicator may get stuck when there is an error of "Invalid delta"] - -* https://issues.couchbase.com/browse/CBL-4493[CBL-4493 - Couchbase Lite C - Flutter plugin (dart language bindings) replication not resuming when internet reconnected] - -* https://issues.couchbase.com/browse/CBL-4802[CBL-4802 - Websocket implementation unable to handle continuation fragments] - -* https://issues.couchbase.com/browse/CBL-4801[CBL-4801 - Open an old db is slow in V3.1 first time] - -* https://issues.couchbase.com/browse/CBL-4390[CBL-4390 - The URL Scheme the HTTP Message is incorrect when using proxy] - -* https://issues.couchbase.com/browse/CBL-4247[CBL-4247 - Replicator binary logs with collections cannot be decoded] - -* https://issues.couchbase.com/browse/CBL-4245[CBL-4245 - Update sockcpp to cbl-3663] - -* https://issues.couchbase.com/browse/CBL-4600[CBL-4600 - Doc update c4repl_start] - -* https://issues.couchbase.com/browse/CBL-4568[CBL-4568 - URLEndpointListener.getURLs returns an empty list on Android v>=11] - -* https://issues.couchbase.com/browse/CBL-4334[CBL-4334 - Data getting corrupted during collection replication] - -* https://issues.couchbase.com/browse/CBL-4326[CBL-4326 - Opening the upgraded database from 2.8 to 3.0.2 is slow] - -* https://issues.couchbase.com/browse/CBL-4413[CBL-4413 - Compaction could cause "database is locked" error when the replicator attempts to save its checkpoint at the same time] - -* https://issues.couchbase.com/browse/CBL-4391[CBL-4391 - Stop replicator could cause 'database is locked' error when saving a document] - -* https://issues.couchbase.com/browse/CBL-4913[CBL-4913 - Regression in pull of blobs/legacy attachment handling] - -* https://issues.couchbase.com/browse/CBL-4547[CBL-4547 - Allow DictKeys to cache shared keys from query results] - -* https://issues.couchbase.com/browse/CBL-4750[CBL-4750 - c4queryenum_next crashes with FTS] - -* https://issues.couchbase.com/browse/CBL-4639[CBL-4639 - Use FTS match() in the WHERE clause of LEFT OUTER JOINS Not Returning Correct Result] - -* https://issues.couchbase.com/browse/CBL-4838[CBL-4838 - Attachments/Blobs got deleted after compaction&re-sync] - -* https://issues.couchbase.com/browse/CBL-4470[CBL-4470 - FLTimestamp_ToString() could return a slice with a wrong size] - -* https://issues.couchbase.com/browse/CBL-4424[Uninitialized struct] - -* https://issues.couchbase.com/browse/CBL-3836[CBL-3836 - Corrupt Revision Data error when saving documents] - -=== Known Issues - -None for this release - -=== Deprecations - -* https://issues.couchbase.com/browse/CBL-5491[CBL-5491 - Default's `MAX_ATTEMPT_WAIT_TIME` and `USE_PLAIN_TEXT` are deprecated] - -* https://issues.couchbase.com/browse/CBL-4316[CBL-4316 - Replicator's `getPendingDocumentIds()` and `isDocumentPending(String id)` are deprecated] - -* https://issues.couchbase.com/browse/CBL-4315[CBL-4315 - ReplicatorConfiguration's filters and conflict resolver properties are deprecated] - -* https://issues.couchbase.com/browse/CBL-4314[CBL-4314 - ReplicatorConfiguration APIs with Database object are deprecated ] - -* https://issues.couchbase.com/browse/CBL-4313[CBL-4313 - MessageEndpointListenerConfiguration APIs using Database object are deprecated] - -* https://issues.couchbase.com/browse/CBL-4312[CBL-4312 - URLEndpointListenerConfiguration APIs using Database object are deprecated] - -* https://issues.couchbase.com/browse/CBL-4311[CBL-4311 - QueryBuilder : `isNullOrMissing()` and `notNullOrMissing()` are deprecated] - -* https://issues.couchbase.com/browse/CBL-4310[CBL-4310 - QueryBuilder : FullTextFunction's `rank(String index)` and `match(String index, String query)` are deprecated] - -* https://issues.couchbase.com/browse/CBL-4309[CBL-4309 - QueryBuilder : DataSource's `database()` is deprecated] - -* https://issues.couchbase.com/browse/CBL-4307[CBL-4307 - DocumentChange's database property is deprecated] - -* https://issues.couchbase.com/browse/CBL-4306[CBL-4306 - DatabaseChange and DatabaseChangeListener are deprecated] - -* https://issues.couchbase.com/browse/CBL-4305[CBL-4305 - Database's removeChangeListener() is deprecated] - -* https://issues.couchbase.com/browse/CBL-4304[CBL-4304 - Database's Document APIs are deprecated] - -* https://issues.couchbase.com/browse/CBL-4264[CBL-4264 - Increased security: store BasicAuthenticator password as a char[] and zero before release] - -* https://issues.couchbase.com/browse/CBL-4262[CBL-4262 - ReplicatorConfiguration.setPinnedServerCertificate should take a Certificate] - -* https://issues.couchbase.com/browse/CBL-3963[CBL-3963 - Remove Deprecated ReplicatorConfiguration.ReplicatorType] - -* https://issues.couchbase.com/browse/CBL-1727[CBL-1727 - Improved naming for AbstractReplicatorConfiguration.ReplicatorType] - -* https://issues.couchbase.com/browse/CBL-4263[CBL-4263 - The public type ReplicatorConfiguration.ReplicatorType is not visible from Kotlin] - -* https://issues.couchbase.com/browse/CBL-4267[CBL-4267 - Support Scopes and Collections in Kotlin Extensions] - -* https://issues.couchbase.com/browse/CBL-4266[CBL-4266 - Kotlin Configuration Factories to support IndexExpression] - -* https://issues.couchbase.com/browse/CBL-4265[CBL-4265 - Standard naming for Kotlin ConfigurationFactories] - -* https://issues.couchbase.com/browse/CBL-4324[CBL-4324 - Replace database oriented Factory methods with collection oriented equvalents] - -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] diff --git a/modules/android/partials/release-notes/couchbase-mobile-android-release-note.3.2.0.adoc b/modules/android/partials/release-notes/couchbase-mobile-android-release-note.3.2.0.adoc deleted file mode 100644 index 6675edc7e..000000000 --- a/modules/android/partials/release-notes/couchbase-mobile-android-release-note.3.2.0.adoc +++ /dev/null @@ -1,200 +0,0 @@ -[#maint-3-2-0] -== 3.2.0 -- August 2024 - -Version 3.2.0 for {param-title} delivers the following features and enhancements: - -=== Downgrade Support - -Downgrades from 3.2.x to any other version of Couchbase Lite are not supported. - -=== Enhancements - -// Lite Core begin - -* https://issues.couchbase.com/browse/CBL-5287[CBL-5287 - Enable Prediction Function in SQL++] - -* https://issues.couchbase.com/browse/CBL-5634[CBL-5634 - NoRev enhancement with Replacement Rev in pull replication] - -* https://issues.couchbase.com/browse/CBL-5687[CBL-5687 - Update replication protocol doc per ReplacementRev changes] - -* https://issues.couchbase.com/browse/CBL-4412[CBL-4412 - Enhance checkpoint resolution algorithm when local and remote checkpoint are mismatched] - -* https://issues.couchbase.com/browse/CBL-5346[CBL-5346 - Logging Replicator reasons of state change] - -* https://issues.couchbase.com/browse/CBL-283[CBL-283 - Support Date Format other than ISO 8601 in SQL++] - -* https://issues.couchbase.com/browse/CBL-68[CBL-68 - DATE_DIFF_MILLIS(date1, date2, part)] - -* https://issues.couchbase.com/browse/CBL-67[CBL-67 - DATE_ADD_STR(date1, n, part)] - -* https://issues.couchbase.com/browse/CBL-66[CBL-66 - DATE_ADD_MILLIS(date1, n, part)] - -* https://issues.couchbase.com/browse/CBL-65[CBL-65 - MILLIS_TO_UTC(date1 [, fmt])] - -* https://issues.couchbase.com/browse/CBL-64[CBL-64 - MILLIS_TO_TZ(date1, tz [, fmt])] - -* https://issues.couchbase.com/browse/CBL-62[CBL-62 - STR_TO_TZ(date1, tz)] - -* https://issues.couchbase.com/browse/CBL-61[CBL-61 - MILLIS_TO_STR(date1 [, fmt ])] - -* https://issues.couchbase.com/browse/CBL-60[CBL-60 - DATE_DIFF_STR(date1, date2, part)] - -// Lite Core end - -* https://issues.couchbase.com/browse/CBL-5213[CBL-5213 - Implement Proxy Authenticator API for Android / Java] - -* https://issues.couchbase.com/browse/CBL-5207[CBL-5207 - Implement Collection's database property] - -* https://issues.couchbase.com/browse/CBL-5201[CBL-5201 - Implementation Collection's full-name property] - -* https://issues.couchbase.com/browse/CBL-5683[CBL-5683 - Database.getDefaultCollection should not be nullable] - -* https://issues.couchbase.com/browse/CBL-5535[CBL-5535 - Update OkHTTP to 4.12] - -* https://issues.couchbase.com/browse/CBL-4435[CBL-4435 - Replicator.close() stops state updates] - -* https://issues.couchbase.com/browse/CBL-4725[CBL-4725 - Remove deprecated C4QueryOptions] - -* https://issues.couchbase.com/browse/CBL-4897[CBL-4897 - Revise zipfile production] - -* https://issues.couchbase.com/browse/CBL-5361[CBL-5361 - Control the JNI library's publication of symbols] - -* https://issues.couchbase.com/browse/CBL-5487[CBL-5847 - Dates in Parameters can now be encoded] - -* https://issues.couchbase.com/browse/CBL-4383[CBL-4383 - Support X509ExtendedTrustManager on API >=24] - -=== Issues and Resolutions - -// Lite Core begin - -* https://issues.couchbase.com/browse/CBL-3846[CBL-3846 - Fixed corrupt Revision Data error when saving documents] - -* https://issues.couchbase.com/browse/CBL-4247[CBL-4247 - Fixed Replicator binary logs with collections cannot be decoded] - -* https://issues.couchbase.com/browse/CBL-4326[CBL-4326 - Fixed opening the upgraded database from 2.8 to 3.0.2 is slow] - -* https://issues.couchbase.com/browse/CBL-4334[CBL-4334 - Fixed Data getting corrupted during collection replication] - -* https://issues.couchbase.com/browse/CBL-4390[CBL-4390 - Fixed The URL Scheme the HTTP Message is incorrect when using proxy] - -* https://issues.couchbase.com/browse/CBL-4391[CBL-4391 - Fixed Stop replicator could cause 'database is locked' error when saving a document] - -* https://issues.couchbase.com/browse/CBL-4413[CBL-4413 - Fixed Compaction could cause "database is locked" error when the replicator attempts to save its checkpoint at the same time] - -* https://issues.couchbase.com/browse/CBL-4470[CBL-4470 - Fixed FLTimestamp_ToString() could return a slice with a wrong size] - -* https://issues.couchbase.com/browse/CBL-4493[CBL-4493 - Fixed Couchbase Lite C - Flutter plugin (dart language bindings) replication not resuming when internet reconnected] - -* https://issues.couchbase.com/browse/CBL-4499[CBL-4499 - Fixed Replicator may get stuck when there is an error of "Invalid delta"] - -* https://issues.couchbase.com/browse/CBL-4506[CBL-4506 - Fixed Replicator starts up slow for big database] - -* https://issues.couchbase.com/browse/CBL-4536[CBL-4536 - Fixed error when saving documents with LiteCore error 17: must be called during a transaction] - -* https://issues.couchbase.com/browse/CBL-4547[CBL-4547 - Allow DictKeys to cache shared keys from query results] - -* https://issues.couchbase.com/browse/CBL-4568[CBL-4568 - Fixed URLEndpointListener.getURLs returns an empty list on Android v>=11] - -* https://issues.couchbase.com/browse/CBL-4639[CBL-4639 - Use FTS match() in the WHERE clause of LEFT OUTER JOINS Not Returning Correct Result] - -* https://issues.couchbase.com/browse/CBL-4750[CBL-4750 - Fixed c4queryenum_next crashes with FTS] - -* https://issues.couchbase.com/browse/CBL-4801[CBL-4801 - Fixed opening an old db is slow in V3.1 the first time] - -* https://issues.couchbase.com/browse/CBL-4802[CBL-4802 - Fixed websocket implementation unable to handle continuation fragments] - -* https://issues.couchbase.com/browse/CBL-4838[CBL-4838 - Fixed Attachments/Blobs got deleted after compaction&re-sync] - -* https://issues.couchbase.com/browse/CBL-4913[CBL-4913 - Fixed regression in pull of blobs/legacy attachment handling] - -* https://issues.couchbase.com/browse/CBL-5082[CBL-5082 - Fixed crash in setting Housekeeper::_doExpiration()] - -* https://issues.couchbase.com/browse/CBL-5033[CBL-5033 - Fixed Puller revoked docs should queue with other revs] - -* https://issues.couchbase.com/browse/CBL-5044[CBL-5044 - Don't capture backtrace for OutOfRange error FLDictIterator_Next] - -* https://issues.couchbase.com/browse/CBL-5307[CBL-5307 - Correctly updating remote revision when pulling the existing revision] - -* https://issues.couchbase.com/browse/CBL-5332[CBL-5332 - Fixed crash during document expiration] - -* https://issues.couchbase.com/browse/CBL-5335[CBL-5335 - Fixed array_agg failures] - -* https://issues.couchbase.com/browse/CBL-5336[CBL-5336 - Over the bound of FLDicIterator should be banned] - -* https://issues.couchbase.com/browse/CBL-5377[CBL-5377 - Fixed MILLIS_TO_STRING is returning UTC instead of local time zone] - -* https://issues.couchbase.com/browse/CBL-5449[CBL-5449 - Fixed Attachments flag is dropped when applying delta to incoming rev] - -* https://issues.couchbase.com/browse/CBL-5515[CBL-5515 - Fixed Result alias can't be used elsewhere in query] - -* https://issues.couchbase.com/browse/CBL-5540[CBL-5540 - Fixed pthread_mutex_lock called on a destroyed mutex] - -* https://issues.couchbase.com/browse/CBL-5587[CBL-5587 - Fixed Remote rev KeepBody flag could be cleared accidentally] - -* https://issues.couchbase.com/browse/CBL-5589[CBL-5589 - Fixed N1QL Parser has exponential slowdown for redundant parentheses] - -* https://issues.couchbase.com/browse/CBL-5646[CBL-5646 - Fixed Null dereference crash in gotHTTPResponse] - -* https://issues.couchbase.com/browse/CBL-5724[CBL-5724 - Fixed Replicator syncs from beginning when using prebuilt dbs synced from SG] - -// Lite Core end - -* https://issues.couchbase.com/browse/CBL-5225[CBL-5225 - Fixed ReplicatedDocument getters do not comply with the spec] - -* https://issues.couchbase.com/browse/CBL-5310[CBL-5310 - Fixed concurrent modification during iteration] - -* https://issues.couchbase.com/browse/CBL-5584[CBL-5584 - Fixed NativeC4QueryObserver.free should disable the listener before freeing it] - -* https://issues.couchbase.com/browse/CBL-5513[CBL-5513 - Query.setParameters should throw] - -* https://issues.couchbase.com/browse/CBL-5512[CBL-5512 - toJSON should throw] - -* https://issues.couchbase.com/browse/CBL-4782[CBL-4782 - Stop treating all connection failures as Server Errors] - -* https://issues.couchbase.com/browse/CBL-4298[CBL-4298 - Fixed Work Manager Replication thows on Replication complete] - -* https://issues.couchbase.com/browse/CBL-4294[CBL-4294- ReplicatorConfiguration.setAuthenticator should allow a null argument] - -* https://issues.couchbase.com/browse/CBL-4992[CBL-4992 - Fixed Null is a legal revId in createC4DocumentChange] - -* https://issues.couchbase.com/browse/CBL-4990[CBL-4990 - Fixed CollectionChangeNotifier.getChanges() prematurely signals end of changes] - -* https://issues.couchbase.com/browse/CBL-4988[CBL-4988 - Map LiteCore log domain "Changes" to LogDomain.DATABASE] - -* https://issues.couchbase.com/browse/CBL-5037[CBL-5037 - Allow empty Domain list for Console Logger] - -* https://issues.couchbase.com/browse/CBL-4797[CBL-4797 - Database.exists should support the default directory] - -* https://issues.couchbase.com/browse/CBL-5486[CBL-5486 - Fixed native crash in objects derived from ResultSet] - -* https://issues.couchbase.com/browse/CBL-4841[CBL-4841 - Fixed logic bug in Conflict Resolver] - -* https://issues.couchbase.com/browse/CBL-4837[CBL-4837 - Lower the max size on the ClientTask thread pool to 8] - -* https://issues.couchbase.com/browse/CBL-5853[CBL-5853 - Dictionary and Array should allow adding self] - -* https://issues.couchbase.com/browse/CBL-5455[CBL-5455 - Fixed Result.toJSON is annotated @NonNull, but can return null] - -* https://issues.couchbase.com/browse/CBL-4874[CBL-4874 - Strip LiteCore binaries] - -* https://issues.couchbase.com/browse/CBL-4667[CBL-4667 - Enhance Proguard rules] - -* https://issues.couchbase.com/browse/CBL-4663[CBL-4663 - Fixed failure in OkHttp authenticator] - -* https://issues.couchbase.com/browse/CBL-4572[CBL-4572 - Fixed hand copy of DB produces corrupt database] - -* https://issues.couchbase.com/browse/CBL-4579[CBL-4579 - Client code should not require Spotbugs annotations] - -* https://issues.couchbase.com/browse/CBL-3882[CBL-3882 - Fixed logging fails locating JNI implementations on some devices] - -* https://issues.couchbase.com/browse/CBL-4292[CBL-4292 - Fixed Collection.collectionChangeFlow requires an argument] - -=== Known Issues - -None for this release - -=== Deprecations - -No new deprecations for GA release - -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] diff --git a/modules/android/partials/release-notes/couchbase-mobile-android-release-note.3.2.1.adoc b/modules/android/partials/release-notes/couchbase-mobile-android-release-note.3.2.1.adoc deleted file mode 100644 index 116a935a4..000000000 --- a/modules/android/partials/release-notes/couchbase-mobile-android-release-note.3.2.1.adoc +++ /dev/null @@ -1,38 +0,0 @@ -[#maint-3-2-1] -== 3.2.1 -- November 2024 - -Version 3.2.1 for {param-title} delivers the following features and enhancements: - -=== Enhancements - -// Lite Core begin - -* https://jira.issues.couchbase.com/browse/CBL-5169[CBL-5169 - Support for Unnest Query and Array Index] - -* https://jira.issues.couchbase.com/browse/CBL-6303[CBL-6303 - Add ability to disable mmap usage] - -// Lite Core end - -* https://jira.issues.couchbase.com/browse/CBL-6074[CBL-6074 - Replace Java Finalizer with Cleaner Using Phantom Reference] - -=== Issues and Resolutions - -// Lite Core begin - -* https://jira.issues.couchbase.com/browse/CBL-6131[CBL-6131 - Fixed race creating the expiration column in a collection table] - -* https://jira.issues.couchbase.com/browse/CBL-6245[CBL-6245 - Fixed query parser regression related to brackets] - -* https://jira.issues.couchbase.com/browse/CBL-6378[CBL-6378 - Crash when calling onWebSocketGotTLSCertificate callback after the connection is closed] - -// Lite Core end - -=== Known Issues - -None for this release - -=== Deprecations - -No new deprecations for GA release - -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] diff --git a/modules/android/partials/release-notes/couchbase-mobile-android-release-note.3.2.2.adoc b/modules/android/partials/release-notes/couchbase-mobile-android-release-note.3.2.2.adoc deleted file mode 100644 index 99a13acfa..000000000 --- a/modules/android/partials/release-notes/couchbase-mobile-android-release-note.3.2.2.adoc +++ /dev/null @@ -1,30 +0,0 @@ -[#maint-3-2-2] -== 3.2.2 -- March 2025 - -Version 3.2.2 for {param-title} delivers the following features and enhancements: - -=== Enhancements - -* https://jira.issues.couchbase.com/browse/CBL-5185[CBL-5185 - Support for Partial Indexes in Value and Full-Text Indexes] - -* https://jira.issues.couchbase.com/browse/CBL-6451[CBL-6451 - LogSink API for Configuring Couchbase Lite Logging] - -=== Issues and Resolutions - -// Lite Core begin - -* https://jira.issues.couchbase.com/browse/CBL-6534[CBL-6534 - No Such Table Error When Upgrading from 3.1.9 to 3.2.1] - -* https://jira.issues.couchbase.com/browse/CBL-6822[CBL-6822 - Replicator may hang while stopping the housekeeper task during stop] - -// Lite Core end - -=== Known Issues - -None for this release - -=== Deprecations - -* https://jira.issues.couchbase.com/browse/CBL-6679[CBL-6679 - Deprecated: Database.log API for Configuring Couchbase Lite Logging — Use LogSink API Instead] - -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] diff --git a/modules/android/partials/release-notes/couchbase-mobile-android-release-note.3.2.3.adoc b/modules/android/partials/release-notes/couchbase-mobile-android-release-note.3.2.3.adoc deleted file mode 100644 index 0dd27fa15..000000000 --- a/modules/android/partials/release-notes/couchbase-mobile-android-release-note.3.2.3.adoc +++ /dev/null @@ -1,22 +0,0 @@ -[#maint-3-2-3] -== 3.2.3 -- April 2025 - -Version 3.2.3 for {param-title} delivers the following features and enhancements: - -=== Enhancements - -* https://jira.issues.couchbase.com/browse/CBL-6884[CBL-6884 -- Support 16 KB page size] - -=== Issues and Resolutions - -include::ROOT:partial$release-notes/couchbase-mobile-litecore-release-note.3.2.3.adoc[tags=fixes] - -=== Known Issues - -None for this release - -=== Deprecations - -None for this release - -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] diff --git a/modules/android/partials/release-notes/couchbase-mobile-android-release-note.3.3.0.adoc b/modules/android/partials/release-notes/couchbase-mobile-android-release-note.3.3.0.adoc new file mode 100644 index 000000000..de285bf8f --- /dev/null +++ b/modules/android/partials/release-notes/couchbase-mobile-android-release-note.3.3.0.adoc @@ -0,0 +1,42 @@ +[#maint-3-3-0] +== 3.3.0 -- September 2025 + +Version 3.3.0 for {param-title} delivers the following features and enhancements: + +=== Enhancements + +// Lite Core begin + +* https://jira.issues.couchbase.com/browse/CBL-6733[CBL-6733 -- Multipeer Replicator for Peer-to-Peer Sync over Wi-Fi] +* https://jira.issues.couchbase.com/browse/CBL-6980[CBL-6980 -- Find out how the JVM finds libicu*] +* https://jira.issues.couchbase.com/browse/CBL-7194[CBL-7194 -- Upgrade mbedTLS to 3.6.3] +* https://jira.issues.couchbase.com/browse/CBL-7195[CBL-7195 -- Upgrade SQLite to 3.50.3] +* https://jira.issues.couchbase.com/browse/CBL-7214[CBL-7214 -- Update minimum supported API level to 24] +* https://jira.issues.couchbase.com/browse/CBL-7225[CBL-7225 -- Add info about default collection used in the replication] +* https://jira.issues.couchbase.com/browse/CBL-7233[CBL-7233 -- Add API for creating `ReplicatorConfiguration` with collection configs and endpoint] + +// Lite Core end + +=== Issues and Resolutions + +==== Fixed Issues + +* https://jira.issues.couchbase.com/browse/CBL-6791[CBL-6791 -- Starting a Live Query in the Background May Crash the App] +* https://jira.issues.couchbase.com/browse/CBL-6799[CBL-6799 -- Potential crash in `URLEndpointListener`] +* https://jira.issues.couchbase.com/browse/CBL-7181[CBL-7181 -- Assertion Failure in `URLEndpointListener`] +* https://jira.issues.couchbase.com/browse/CBL-7189[CBL-7189 -- Assertion failure caused by Pull Filter during replication] + + + +=== Known Issues + +None for this release + +=== Deprecations + +* https://jira.issues.couchbase.com/browse/CBL-7009[CBL-7009 -- Deprecate: Create Identity API with Server Flag] +* https://jira.issues.couchbase.com/browse/CBL-7235[CBL-7235 -- Deprecate: `ReplicatorConfiguration` constructor with a target endpoint only] +* https://jira.issues.couchbase.com/browse/CBL-7237[CBL-7237 -- Deprecate: `ReplicatorConfiguration` API for managing collection configurations] +* https://jira.issues.couchbase.com/browse/CBL-7239[CBL-7239 -- Deprecate: `CollectionConfiguration` constructors without collection] + +NOTE: For an overview of the latest features offered in Couchbase Lite 3.3.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.3] diff --git a/modules/android/partials/release-notes/couchbase-mobile-android-release-note.4.0.0.adoc b/modules/android/partials/release-notes/couchbase-mobile-android-release-note.4.0.0.adoc new file mode 100644 index 000000000..efe5e3f7b --- /dev/null +++ b/modules/android/partials/release-notes/couchbase-mobile-android-release-note.4.0.0.adoc @@ -0,0 +1,53 @@ +[#maint-4-0-0] +== 4.0.0 -- Q1 2025 + +Version 4.0.0 for {param-title} delivers the following features and enhancements: + +== Couchbase Lite Release Notes + +=== Downgrade Support + +Downgrades from 4.0 to earlier versions of Couchbase Lite are not supported. + +=== Enhancements + +// Lite Core begin + +NOTE: TODO + +* https://issues.couchbase.com/browse/CBL-5287[CBL-5287 - Enable Prediction Function in SQL++] + +// Lite Core end + +NOTE: TODO + +* https://issues.couchbase.com/browse/CBL-5213[CBL-5213 - Implement Proxy Authenticator API for Android / Java] + +=== Issues and Resolutions + +// Lite Core begin + +NOTE: TODO + +* https://issues.couchbase.com/browse/CBL-3846[CBL-3846 - Fixed corrupt Revision Data error when saving documents] + + +// Lite Core end + +NOTE: TODO + +* https://issues.couchbase.com/browse/CBL-5225[CBL-5225 - Fixed ReplicatedDocument getters do not comply with the spec] + +=== Known Issues + +NOTE: TODO + +None for this release + +=== Deprecations + +NOTE: TODO + +No new deprecations for GA release + +NOTE: For an overview of the latest features offered in Couchbase Lite 4.0.0, see xref:ROOT:cbl-whatsnew.adoc[New in 4.0] diff --git a/modules/android/partials/release-notes/couchbase-mobile-android-vs-release-note.1.0.0-beta.adoc b/modules/android/partials/release-notes/couchbase-mobile-android-vs-release-note.1.0.0-beta.adoc index e724df9e8..9db0cf88a 100644 --- a/modules/android/partials/release-notes/couchbase-mobile-android-vs-release-note.1.0.0-beta.adoc +++ b/modules/android/partials/release-notes/couchbase-mobile-android-vs-release-note.1.0.0-beta.adoc @@ -21,4 +21,4 @@ None for this release None for this release -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] +NOTE: For an overview of the latest features offered in Couchbase Lite 4.0.0, see xref:ROOT:cbl-whatsnew.adoc[New in 4.0] diff --git a/modules/c/pages/compatibility.adoc b/modules/c/pages/compatibility.adoc index eabd29c2e..ddef2a0c3 100644 --- a/modules/c/pages/compatibility.adoc +++ b/modules/c/pages/compatibility.adoc @@ -25,11 +25,11 @@ Related Content -- xref:cbl-whatsnew.adoc[What's New] | xref:c:releasenotes.ad The table below summarizes the compatible versions of Couchbase Lite with Sync Gateway. .Sync Gateway and Couchbase Lite Compatibility Matrix -[cols="3,^1,^1,^1,^1,^1,^1,^1"] +[cols="3,^1,^1,^1,^1,^1,^1,^1,^1"] |=== .2+^.>| Sync Gateway Versions ↓ -7+| Couchbase Lite → +8+| Couchbase Lite → ^| 1.4 *footnote:eos-cbl[This Couchbase Lite version is End of Support]]* ^| 2.0 @@ -38,6 +38,7 @@ The table below summarizes the compatible versions of Couchbase Lite with Sync G ^| 3.0.0 ^| 3.1.0 ^| 3.2.0 +^| 3.3.0 | 1.4 *footnote:eos-sgw[This Sync Gateway version is End of Support]* and 1.5 *footnote:eol-sgw[This Sync Gateway version is End of Life]* | image:ROOT:yes.png[] @@ -47,6 +48,7 @@ The table below summarizes the compatible versions of Couchbase Lite with Sync G | image:ROOT:no.png[] | image:ROOT:no.png[] | image:ROOT:no.png[] +| image:ROOT:no.png[] | 2.0 and 2.1 | image:ROOT:yes.png[] @@ -56,6 +58,7 @@ The table below summarizes the compatible versions of Couchbase Lite with Sync G | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] | 2.5 to 2.8 + with delta sync disabled @@ -66,6 +69,7 @@ with delta sync disabled | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] | 2.5 to 2.8 + with delta sync enabled @@ -76,6 +80,7 @@ with delta sync enabled | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] | 3.0.0 | image:ROOT:no.png[] @@ -85,6 +90,7 @@ with delta sync enabled | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] | 3.1.0 | image:ROOT:no.png[] @@ -94,6 +100,7 @@ with delta sync enabled | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] | 3.2.0 | image:ROOT:no.png[] @@ -103,6 +110,17 @@ with delta sync enabled | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] + +| 3.3.0 +| image:ROOT:no.png[] +| image:ROOT:yes.png[] +| image:ROOT:yes.png[] +| image:ROOT:yes.png[] +| image:ROOT:yes.png[] +| image:ROOT:yes.png[] +| image:ROOT:yes.png[] +| image:ROOT:yes.png[] |=== @@ -112,7 +130,7 @@ with delta sync enabled The table below summarizes the Operating System SDK versions supported by Couchbase Lite. .OS -- SDK Support -[cols="1,^1,^1,^1,^1,^1,^1,^1,^1,^1"] +[cols="1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1"] |=== @@ -126,6 +144,7 @@ The table below summarizes the Operating System SDK versions supported by Couchb ^.>h| 3.0 ^.>h| 3.1 ^.>h| 3.2 +^.>h| 3.3 h| Android | https://docs-archive.couchbase.com/home/index.html[archive link] @@ -136,7 +155,8 @@ h| Android | xref:2.8@couchbase-lite:android:supported-os.adoc[link] | xref:3.0@couchbase-lite:android:supported-os.adoc[link] | xref:3.1@couchbase-lite:android:supported-os.adoc[link] -| https://docs.couchbase.com/couchbase-lite/current/android/supported-os.html[link] +| xref:3.2@couchbase-lite:android:supported-os.adoc[link] +| xref:3.3@couchbase-lite:android:supported-os.adoc[link] h| C | - @@ -147,7 +167,8 @@ h| C | - | xref:3.0@couchbase-lite:c:supported-os.adoc[link] | xref:3.1@couchbase-lite:c:supported-os.adoc[link] -| https://docs.couchbase.com/couchbase-lite/current/c/supported-os.html[link] +| xref:3.2@couchbase-lite:c:supported-os.adoc[link] +| xref:3.3@couchbase-lite:c:supported-os.adoc[link] h| iOS | https://docs-archive.couchbase.com/home/index.html[archive link] @@ -158,7 +179,8 @@ h| iOS | xref:2.8@couchbase-lite:swift:supported-os.adoc[link] | xref:3.0@couchbase-lite:swift:supported-os.adoc[link] | xref:3.1@couchbase-lite:swift:supported-os.adoc[link] -| https://docs.couchbase.com/couchbase-lite/current/swift/supported-os.html[link] +| xref:3.2@couchbase-lite:swift:supported-os.adoc[link] +| xref:3.3@couchbase-lite:swift:supported-os.adoc[link] h| Java @@ -170,7 +192,8 @@ h| Java | xref:2.8@couchbase-lite:java:supported-os.adoc[link] | xref:3.0@couchbase-lite:java:supported-os.adoc[link] | xref:3.1@couchbase-lite:java:supported-os.adoc[link] -| https://docs.couchbase.com/couchbase-lite/current/java/supported-os.html[link] +| xref:3.2@couchbase-lite:java:supported-os.adoc[link] +| xref:3.3@couchbase-lite:java:supported-os.adoc[link] h| Javascript | - @@ -182,6 +205,7 @@ h| Javascript | xref:3.0@couchbase-lite:ROOT:javascript.adoc[link] | xref:3.1@couchbase-lite:ROOT:javascript.adoc[link] | xref:3.2@couchbase-lite:ROOT:javascript.adoc[link] +| xref:3.3@couchbase-lite:ROOT:javascript.adoc[link] h| .NET | https://docs-archive.couchbase.com/home/index.html[archive link] @@ -192,7 +216,8 @@ h| .NET | xref:2.8@couchbase-lite:csharp:supported-os.adoc[link] | xref:3.0@couchbase-lite:csharp:supported-os.adoc[link] | xref:3.1@couchbase-lite:csharp:supported-os.adoc[link] -| https://docs.couchbase.com/couchbase-lite/current/csharp/supported-os.html[link] +| xref:3.2@couchbase-lite:csharp:supported-os.adoc[link] +| xref:3.3@couchbase-lite:csharp:supported-os.adoc[link] |=== diff --git a/modules/c/pages/gs-downloads.adoc b/modules/c/pages/gs-downloads.adoc index 70b300b75..ce3c592c6 100644 --- a/modules/c/pages/gs-downloads.adoc +++ b/modules/c/pages/gs-downloads.adoc @@ -25,24 +25,23 @@ xref:c:gs-build.adoc[Build and Run] .Downloads are available for the following versions: **** -<> | -<> | -<> | +<> | <> | // | **** // This block will always represent the major release version +NOTE: TODO this is the "inlined" version after mobile-simplification, that would require more manual work, but is more explicit. -:release-dir-ee: pass:q,a[libcblite-3.2.4] -:release-dir-dev-ee: pass:q,a[libcblite-dev-3.2.4] +:release-dir-ee: pass:q,a[libcblite-3.3.0] +:release-dir-dev-ee: pass:q,a[libcblite-dev-3.3.0] // If both parameters are defined, render CBL downloads -[#release-3-2-4,id=release-3-2-4] -== Couchbase Lite Release 3.2.4 +[#release-3-3-0,id=release-3-3-0] +== Couchbase Lite Release 3.3.0 _Couchbase Lite for C_ is available for all xref:c:supported-os.adoc[Supported Platforms]. You can obtain downloads for _Linux_ and _macOS_ from the links here in the downloads table. @@ -54,994 +53,16 @@ page for instructions on how to get the software using a package manager. .Available platforms are: **** -<> | -<> | -<> | -<> | +<> | +<> | +<> | +<> | **** -[#macos-3-2-4,id=macos-3-2-4] +[#macos-3-3-0,id=macos-3-3-0] === MacOS -[#tbl-downloads-3.2.4] -.Download link table -[tabs] -===== - - -[#tbl-downloads-3-enterprise-edition] -Enterprise Edition:: -+ --- -[#tbl-downloads-ee,cols="1,4,4,4", options="header"] -|=== -| Platform | Download | SHA | Debug Symbols - -.1+| MacOS -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-macos.zip[couchbase-lite-c-enterprise-3.2.4-macos.zip] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-macos.zip.sha256[couchbase-lite-c-enterprise-3.2.4-macos.zip.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-macos-symbols.zip[couchbase-lite-c-enterprise-3.2.4-macos-symbols.zip] - -|=== --- - -[#tbl-downloads-3-community-edition] -Community Edition:: -+ --- -[#tbl-downloads-ce,cols="1,4,4,4 ", options="header"] -|=== -| Platform | Download | SHA | Debug Symbols - -| MacOS -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-macos.zip[couchbase-lite-c-community-3.2.4-macos.zip] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-macos.zip.sha256[couchbase-lite-c-community-3.2.4-macos.zip.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-macos-symbols.zip[couchbase-lite-c-community-3.2.4-macos-symbols.zip] - -|=== - --- - -===== - -[#windows-3-2-4,id=windows-3-2-4] -=== Windows - -[#tbl-downloads-3.2.4] -.Download link table -[tabs] -===== - - -[#tbl-downloads-3-enterprise-edition-2] -Enterprise Edition:: -+ --- -[#tbl-downloads-ee,cols="1,4,4,4", options="header"] -|=== -| Platform | Download | SHA | Debug Symbols - -.1+| Windows -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-windows-x86_64.zip[couchbase-lite-c-enterprise-3.2.4-windows-x86_64.zip] -| {empty} -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-windows-x86_64-symbols.zip[couchbase-lite-c-enterprise-3.2.4-windows-x86_64-symbols.zip] - -|=== --- - -[#tbl-downloads-3-community-edition-2] -Community Edition:: -+ --- -[#tbl-downloads-ce,cols="1,4,4,4 ", options="header"] -|=== -| Platform | Download | SHA | Debug Symbols - -.1+| Windows -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-windows-x86_64.zip[couchbase-lite-c-community-3.2.4-windows-x86_64.zip] -| {empty} -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-windows-x86_64-symbols.zip[couchbase-lite-c-community-3.2.4-windows-x86_64-symbols.zip] - -|=== - --- - -===== - -[#debian-3-2-4,id=debian-3-2-4] -=== Debian - -[#tbl-downloads-3.2.4] -.Download link table -[tabs] -===== - - -[#tbl-downloads-3-enterprise-edition-3] -Enterprise Edition:: -+ --- -[#tbl-downloads-ee,cols="1,4,4,4", options="header"] -|=== -| Platform | Download | SHA | Debug Symbols - -.99+| Debian - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-linux-arm64.tar.gz[couchbase-lite-c-enterprise-3.2.4-linux-arm64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-linux-arm64.tar.gz.sha256[couchbase-lite-c-enterprise-3.2.4-linux-arm64.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-linux-arm64-symbols.tar.gz[couchbase-lite-c-enterprise-3.2.4-linux-arm64-symbols.tar.gz] - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-linux-armhf.tar.gz[couchbase-lite-c-enterprise-3.2.4-linux-armhf.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-linux-armhf.tar.gz.sha256[couchbase-lite-c-enterprise-3.2.4-linux-armhf.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-linux-armhf-symbols.tar.gz[couchbase-lite-c-enterprise-3.2.4-linux-armhf-symbols.tar.gz] - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-enterprise-3.2.2-linux-x86_64.tar.gz[couchbase-lite-c-enterprise-3.2.2-linux-x86_64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-enterprise-3.2.2-linux-x86_64.tar.gz.sha256[couchbase-lite-c-enterprise-3.2.2-linux-x86_64.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-enterprise-3.2.2-linux-x86_64-symbols.tar.gz[couchbase-lite-c-enterprise-3.2.2-linux-x86_64-symbols.tar.gz] - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-debian11_amd64.deb[libcblite-enterprise_3.2.4-debian11_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-debian11_amd64.deb.sha256[libcblite-enterprise_3.2.4-debian11_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-debian11_amd64.deb[libcblite-dev-enterprise_3.2.4-debian11_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-debian11_amd64.deb.sha256[libcblite-dev-enterprise_3.2.4-debian11_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-debian11_arm64.deb[libcblite-enterprise_3.2.4-debian11_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-debian11_arm64.deb.sha256[libcblite-enterprise_3.2.4-debian11_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-debian11_arm64.deb[libcblite-dev-enterprise_3.2.4-debian11_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-debian11_arm64.deb.sha256[libcblite-dev-enterprise_3.2.4-debian11_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-debian11_armhf.deb[libcblite-enterprise_3.2.4-debian11_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-debian11_armhf.deb.sha256[libcblite-enterprise_3.2.4-debian11_armhf.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-debian11_armhf.deb[libcblite-dev-enterprise_3.2.4-debian11_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-debian11_armhf.deb.sha256[libcblite-dev-enterprise_3.2.4-debian11_armhf.deb.sha256] -| - - -// Debian 10 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-debian10_amd64.deb[libcblite-enterprise_3.2.4-debian10_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-debian10_amd64.deb.sha256[libcblite-enterprise_3.2.4-debian10_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-debian10_amd64.deb[libcblite-dev-enterprise_3.2.4-debian10_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-debian10_amd64.deb.sha256[libcblite-dev-enterprise_3.2.4-debian10_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-debian10_arm64.deb[libcblite-enterprise_3.2.4-debian10_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-debian10_arm64.deb.sha256[libcblite-enterprise_3.2.4-debian10_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-debian10_arm64.deb[libcblite-dev-enterprise_3.2.4-debian10_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-debian10_arm64.deb.sha256[libcblite-dev-enterprise_3.2.4-debian10_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-debian10_armhf.deb[libcblite-enterprise_3.2.4-debian10_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-debian10_armhf.deb.sha256[libcblite-enterprise_3.2.4-debian10_armhf.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-debian10_armhf.deb[libcblite-dev-enterprise_3.2.4-debian10_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-debian10_armhf.deb.sha256[libcblite-dev-enterprise_3.2.4-debian10_armhf.deb.sha256] -| - - -// Debian 9 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-debian9_amd64.deb[libcblite-enterprise_3.2.4-debian9_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-debian9_amd64.deb.sha256[libcblite-enterprise_3.2.4-debian9_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-debian9_amd64.deb[libcblite-dev-enterprise_3.2.4-debian9_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-debian9_amd64.deb.sha256[libcblite-dev-enterprise_3.2.4-debian9_amd64.deb.sha256] -| - - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-debian9_armhf.deb[libcblite-enterprise_3.2.4-debian9_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-debian9_armhf.deb.sha256[libcblite-enterprise_3.2.4-debian9_armhf.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-debian9_armhf.deb[libcblite-dev-enterprise_3.2.4-debian9_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-debian9_armhf.deb.sha256[libcblite-dev-enterprise_3.2.4-debian9_armhf.deb.sha256] -| - -|=== --- - -[#tbl-downloads-3-community-edition-3] -Community Edition:: -+ --- -[#tbl-downloads-ce,cols="1,4,4,4 ", options="header"] -|=== -| Platform | Download | SHA | Debug Symbols - -.99+| Debian - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-linux-arm64.tar.gz[couchbase-lite-c-community-3.2.4-linux-arm64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-linux-arm64.tar.gz.sha256[couchbase-lite-c-community-3.2.4-linux-arm64.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-linux-arm64-symbols.tar.gz[couchbase-lite-c-community-3.2.4-linux-arm64-symbols.tar.gz] - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-linux-armhf.tar.gz[couchbase-lite-c-community-3.2.4-linux-armhf.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-linux-armhf.tar.gz.sha256[couchbase-lite-c-community-3.2.4-linux-armhf.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-linux-armhf-symbols.tar.gz[couchbase-lite-c-community-3.2.4-linux-armhf-symbols.tar.gz] - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-linux-x86_64.tar.gz[couchbase-lite-c-community-3.2.4-linux-x86_64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-linux-x86_64.tar.gz.sha256[couchbase-lite-c-community-3.2.4-linux-x86_64.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-linux-x86_64-symbols.tar.gz[couchbase-lite-c-community-3.2.4-linux-x86_64-symbols.tar.gz] - -// Debian 11 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian11_amd64.deb[libcblite-community_3.2.4-debian11_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian11_amd64.deb.sha256[libcblite-community_3.2.4-debian11_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian11_amd64.deb[libcblite-dev-community_3.2.4-debian11_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian11_amd64.deb.sha256[libcblite-dev-community_3.2.4-debian11_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian11_arm64.deb[libcblite-community_3.2.4-debian11_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian11_arm64.deb.sha256[libcblite-community_3.2.4-debian11_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian11_arm64.deb[libcblite-dev-community_3.2.4-debian11_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian11_arm64.deb.sha256[libcblite-dev-community_3.2.4-debian11_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian11_armhf.deb[libcblite-community_3.2.4-debian11_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian11_armhf.deb.sha256[libcblite-community_3.2.4-debian11_armhf.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian11_armhf.deb[libcblite-dev-community_3.2.4-debian11_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian11_armhf.deb.sha256[libcblite-dev-community_3.2.4-debian11_armhf.deb.sha256] -| - - -// Debian 10 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian10_amd64.deb[libcblite-community_3.2.4-debian10_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian10_amd64.deb.sha256[libcblite-community_3.2.4-debian10_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian10_amd64.deb[libcblite-dev-community_3.2.4-debian10_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian10_amd64.deb.sha256[libcblite-dev-community_3.2.4-debian10_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian10_arm64.deb[libcblite-community_3.2.4-debian10_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian10_arm64.deb.sha256[libcblite-community_3.2.4-debian10_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian10_arm64.deb[libcblite-dev-community_3.2.4-debian10_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian10_arm64.deb.sha256[libcblite-dev-community_3.2.4-debian10_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian10_armhf.deb[libcblite-community_3.2.4-debian10_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian10_armhf.deb.sha256[libcblite-community_3.2.4-debian10_armhf.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian10_armhf.deb[libcblite-dev-community_3.2.4-debian10_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian10_armhf.deb.sha256[libcblite-dev-community_3.2.4-debian10_armhf.deb.sha256] -| - - -// Debian 9 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian9_amd64.deb[libcblite-community_3.2.4-debian9_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian9_amd64.deb.sha256[libcblite-community_3.2.4-debian9_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian9_amd64.deb[libcblite-dev-community_3.2.4-debian9_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian9_amd64.deb.sha256[libcblite-dev-community_3.2.4-debian9_amd64.deb.sha256] -| - - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian9_armhf.deb[libcblite-community_3.2.4-debian9_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian9_armhf.deb.sha256[libcblite-community_3.2.4-debian9_armhf.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian9_armhf.deb[libcblite-dev-community_3.2.4-debian9_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian9_armhf.deb.sha256[libcblite-dev-community_3.2.4-debian9_armhf.deb.sha256] -| - -|=== - --- - -===== - - -[#ubuntu-3-2-4,id=ubuntu-3-2-4] -=== Ubuntu - -[#tbl-downloads-3.2.4] -.Download link table -[tabs] -===== - - -[#tbl-downloads-3-enterprise-edition-4] -Enterprise Edition:: -+ --- -[#tbl-downloads-ee,cols="1,4,4,4", options="header"] -|=== -| Platform | Download | SHA | Debug Symbols - -.99+| Ubuntu - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-linux-arm64.tar.gz[couchbase-lite-c-enterprise-3.2.4-linux-arm64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-linux-arm64.tar.gz.sha256[couchbase-lite-c-enterprise-3.2.4-linux-arm64.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-linux-arm64-symbols.tar.gz[couchbase-lite-c-enterprise-3.2.4-linux-arm64-symbols.tar.gz] - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-linux-armhf.tar.gz[couchbase-lite-c-enterprise-3.2.4-linux-armhf.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-linux-armhf.tar.gz.sha256[couchbase-lite-c-enterprise-3.2.4-linux-armhf.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-linux-armhf-symbols.tar.gz[couchbase-lite-c-enterprise-3.2.4-linux-armhf-symbols.tar.gz] - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-enterprise-3.2.2-linux-x86_64.tar.gz[couchbase-lite-c-enterprise-3.2.2-linux-x86_64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-enterprise-3.2.2-linux-x86_64.tar.gz.sha256[couchbase-lite-c-enterprise-3.2.2-linux-x86_64.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-enterprise-3.2.2-linux-x86_64-symbols.tar.gz[couchbase-lite-c-enterprise-3.2.2-linux-x86_64-symbols.tar.gz] - - -// Ubuntu 22.04 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-ubuntu22.04_amd64.deb[libcblite-enterprise_3.2.4-ubuntu22.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-ubuntu22.04_amd64.deb.sha256[libcblite-enterprise_3.2.4-ubuntu22.04_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-ubuntu22.04_amd64.deb[libcblite-dev-enterprise_3.2.4-ubuntu22.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-ubuntu22.04_amd64.deb.sha256[libcblite-dev-enterprise_3.2.4-ubuntu22.04_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-ubuntu22.04_arm64.deb[libcblite-enterprise_3.2.4-ubuntu22.04_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-ubuntu22.04_arm64.deb.sha256[libcblite-enterprise_3.2.4-ubuntu22.04_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-ubuntu22.04_arm64.deb[libcblite-dev-enterprise_3.2.4-ubuntu22.04_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-ubuntu22.04_arm64.deb.sha256[libcblite-dev-enterprise_3.2.4-ubuntu22.04_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-ubuntu22.04_armhf.deb[libcblite-enterprise_3.2.4-ubuntu22.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-ubuntu22.04_armhf.deb.sha256[libcblite-enterprise_3.2.4-ubuntu22.04_armhf.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-ubuntu22.04_armhf.deb[libcblite-dev-enterprise_3.2.4-ubuntu22.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-ubuntu22.04_armhf.deb.sha256[libcblite-dev-enterprise_3.2.4-ubuntu22.04_armhf.deb.sha256] -| - - -// Ubuntu 20.04 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-ubuntu20.04_amd64.deb[libcblite-enterprise_3.2.4-ubuntu20.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-ubuntu20.04_amd64.deb.sha256[libcblite-enterprise_3.2.4-ubuntu20.04_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-ubuntu20.04_amd64.deb[libcblite-dev-enterprise_3.2.4-ubuntu20.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-ubuntu20.04_amd64.deb.sha256[libcblite-dev-enterprise_3.2.4-ubuntu20.04_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-ubuntu20.04_arm64.deb[libcblite-enterprise_3.2.4-ubuntu20.04_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-ubuntu20.04_arm64.deb.sha256[libcblite-enterprise_3.2.4-ubuntu20.04_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-ubuntu20.04_arm64.deb[libcblite-dev-enterprise_3.2.4-ubuntu20.04_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-ubuntu20.04_arm64.deb.sha256[libcblite-dev-enterprise_3.2.4-ubuntu20.04_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-ubuntu20.04_armhf.deb[libcblite-enterprise_3.2.4-ubuntu20.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-ubuntu20.04_armhf.deb.sha256[libcblite-enterprise_3.2.4-ubuntu20.04_armhf.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-ubuntu20.04_armhf.deb[libcblite-dev-enterprise_3.2.4-ubuntu20.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-ubuntu20.04_armhf.deb.sha256[libcblite-dev-enterprise_3.2.4-ubuntu20.04_armhf.deb.sha256] -| - - -|=== --- - -[#tbl-downloads-3-community-edition-4] -Community Edition:: -+ --- -[#tbl-downloads-ce,cols="1,4,4,4 ", options="header"] -|=== -| Platform | Download | SHA | Debug Symbols - -.99+| Ubuntu - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-linux-arm64.tar.gz[couchbase-lite-c-community-3.2.4-linux-arm64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-linux-arm64.tar.gz.sha256[couchbase-lite-c-community-3.2.4-linux-arm64.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-linux-arm64-symbols.tar.gz[couchbase-lite-c-community-3.2.4-linux-arm64-symbols.tar.gz] - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-linux-armhf.tar.gz[couchbase-lite-c-community-3.2.4-linux-armhf.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-linux-armhf.tar.gz.sha256[couchbase-lite-c-community-3.2.4-linux-armhf.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-linux-armhf-symbols.tar.gz[couchbase-lite-c-community-3.2.4-linux-armhf-symbols.tar.gz] - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-community-3.2.2-linux-x86_64.tar.gz[couchbase-lite-c-community-3.2.2-linux-x86_64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-community-3.2.2-linux-x86_64.tar.gz.sha256[couchbase-lite-c-community-3.2.2-linux-x86_64.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-community-3.2.2-linux-x86_64-symbols.tar.gz[couchbase-lite-c-community-3.2.2-linux-x86_64-symbols.tar.gz] - - -// Ubuntu 22.04 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-ubuntu22.04_amd64.deb[libcblite-community_3.2.4-ubuntu22.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-ubuntu22.04_amd64.deb.sha256[libcblite-community_3.2.4-ubuntu22.04_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-ubuntu22.04_amd64.deb[libcblite-dev-community_3.2.4-ubuntu22.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-ubuntu22.04_amd64.deb.sha256[libcblite-dev-community_3.2.4-ubuntu22.04_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-ubuntu22.04_arm64.deb[libcblite-community_3.2.4-ubuntu22.04_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-ubuntu22.04_arm64.deb.sha256[libcblite-community_3.2.4-ubuntu22.04_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-ubuntu22.04_arm64.deb[libcblite-dev-community_3.2.4-ubuntu22.04_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-ubuntu22.04_arm64.deb.sha256[libcblite-dev-community_3.2.4-ubuntu22.04_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-ubuntu22.04_armhf.deb[libcblite-community_3.2.4-ubuntu22.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-ubuntu22.04_armhf.deb.sha256[libcblite-community_3.2.4-ubuntu22.04_armhf.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-ubuntu22.04_armhf.deb[libcblite-dev-community_3.2.4-ubuntu22.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-ubuntu22.04_armhf.deb.sha256[libcblite-dev-community_3.2.4-ubuntu22.04_armhf.deb.sha256] -| - - -// Ubuntu 20.04 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-ubuntu20.04_amd64.deb[libcblite-community_3.2.4-ubuntu20.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-ubuntu20.04_amd64.deb.sha256[libcblite-community_3.2.4-ubuntu20.04_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-ubuntu20.04_amd64.deb[libcblite-dev-community_3.2.4-ubuntu20.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-ubuntu20.04_amd64.deb.sha256[libcblite-dev-community_3.2.4-ubuntu20.04_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-ubuntu20.04_arm64.deb[libcblite-community_3.2.4-ubuntu20.04_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-ubuntu20.04_arm64.deb.sha256[libcblite-community_3.2.4-ubuntu20.04_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-ubuntu20.04_arm64.deb[libcblite-dev-community_3.2.4-ubuntu20.04_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-ubuntu20.04_arm64.deb.sha256[libcblite-dev-community_3.2.4-ubuntu20.04_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-ubuntu20.04_armhf.deb[libcblite-community_3.2.4-ubuntu20.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-ubuntu20.04_armhf.deb.sha256[libcblite-community_3.2.4-ubuntu20.04_armhf.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-ubuntu20.04_armhf.deb[libcblite-dev-community_3.2.4-ubuntu20.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-ubuntu20.04_armhf.deb.sha256[libcblite-dev-community_3.2.4-ubuntu20.04_armhf.deb.sha256] -| - -|=== - --- - -===== - -[#raspbian-3-2-2,id=raspbian-3-2-2] -=== Raspbian - -Please use the <> choosing the appropriate version (`debian9` or `debian10`) and architecture. - - -// If both are defined render vector search downloads - - -:release-dir-ee: pass:q,a[libcblite-3.2.3] -:release-dir-dev-ee: pass:q,a[libcblite-dev-3.2.3] - - -// If both parameters are defined, render CBL downloads - -[#release-3-2-3,id=release-3-2-3] -== Couchbase Lite Release 3.2.3 - -_Couchbase Lite for C_ is available for all xref:c:supported-os.adoc[Supported Platforms]. -You can obtain downloads for _Linux_ and _macOS_ from the links here in the downloads table. -Ensure you select the correct package for your application's compiler and architecture. - -Alternatively, check the -xref:c:gs-install.adoc[install] -page for instructions on how to get the software using a package manager. - -.Available platforms are: -**** -<> | -<> | -<> | -<> | -**** - -[#macos-3-2-3,id=macos-3-2-3] -=== MacOS - -[#tbl-downloads-3.2.3] -.Download link table -[tabs] -===== - - -[#tbl-downloads-3-enterprise-edition-5] -Enterprise Edition:: -+ --- -[#tbl-downloads-ee,cols="1,4,4,4", options="header"] -|=== -| Platform | Download | SHA | Debug Symbols - -.1+| MacOS -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-enterprise-3.2.3-macos.zip[couchbase-lite-c-enterprise-3.2.3-macos.zip] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-enterprise-3.2.3-macos.zip.sha256[couchbase-lite-c-enterprise-3.2.3-macos.zip.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-enterprise-3.2.3-macos-symbols.zip[couchbase-lite-c-enterprise-3.2.3-macos-symbols.zip] - -|=== --- - -[#tbl-downloads-3-community-edition-5] -Community Edition:: -+ --- -[#tbl-downloads-ce,cols="1,4,4,4 ", options="header"] -|=== -| Platform | Download | SHA | Debug Symbols - -| MacOS -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-community-3.2.3-macos.zip[couchbase-lite-c-community-3.2.3-macos.zip] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-community-3.2.3-macos.zip.sha256[couchbase-lite-c-community-3.2.3-macos.zip.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-community-3.2.3-macos-symbols.zip[couchbase-lite-c-community-3.2.3-macos-symbols.zip] - -|=== - --- - -===== - -[#windows-3-2-3,id=windows-3-2-3] -=== Windows - -[#tbl-downloads-3.2.3] -.Download link table -[tabs] -===== - - -[#tbl-downloads-3-enterprise-edition-6] -Enterprise Edition:: -+ --- -[#tbl-downloads-ee,cols="1,4,4,4", options="header"] -|=== -| Platform | Download | SHA | Debug Symbols - -.1+| Windows -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-enterprise-3.2.3-windows-x86_64.zip[couchbase-lite-c-enterprise-3.2.3-windows-x86_64.zip] -| {empty} -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-enterprise-3.2.3-windows-x86_64-symbols.zip[couchbase-lite-c-enterprise-3.2.3-windows-x86_64-symbols.zip] - -|=== --- - -[#tbl-downloads-3-community-edition-6] -Community Edition:: -+ --- -[#tbl-downloads-ce,cols="1,4,4,4 ", options="header"] -|=== -| Platform | Download | SHA | Debug Symbols - -.1+| Windows -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-community-3.2.3-windows-x86_64.zip[couchbase-lite-c-community-3.2.3-windows-x86_64.zip] -| {empty} -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-community-3.2.3-windows-x86_64-symbols.zip[couchbase-lite-c-community-3.2.3-windows-x86_64-symbols.zip] - -|=== - --- - -===== - -[#debian-3-2-3,id=debian-3-2-3] -=== Debian - -[#tbl-downloads-3.2.3] -.Download link table -[tabs] -===== - - -[#tbl-downloads-3-enterprise-edition-7] -Enterprise Edition:: -+ --- -[#tbl-downloads-ee,cols="1,4,4,4", options="header"] -|=== -| Platform | Download | SHA | Debug Symbols - -.99+| Debian - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-enterprise-3.2.3-linux-arm64.tar.gz[couchbase-lite-c-enterprise-3.2.3-linux-arm64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-enterprise-3.2.3-linux-arm64.tar.gz.sha256[couchbase-lite-c-enterprise-3.2.3-linux-arm64.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-enterprise-3.2.3-linux-arm64-symbols.tar.gz[couchbase-lite-c-enterprise-3.2.3-linux-arm64-symbols.tar.gz] - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-enterprise-3.2.3-linux-armhf.tar.gz[couchbase-lite-c-enterprise-3.2.3-linux-armhf.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-enterprise-3.2.3-linux-armhf.tar.gz.sha256[couchbase-lite-c-enterprise-3.2.3-linux-armhf.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-enterprise-3.2.3-linux-armhf-symbols.tar.gz[couchbase-lite-c-enterprise-3.2.3-linux-armhf-symbols.tar.gz] - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-enterprise-3.2.3-linux-x86_64.tar.gz[couchbase-lite-c-enterprise-3.2.3-linux-x86_64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-enterprise-3.2.3-linux-x86_64.tar.gz.sha256[couchbase-lite-c-enterprise-3.2.3-linux-x86_64.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-enterprise_3.2.3-debian11_amd64.deb[libcblite-enterprise_3.2.3-debian11_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-enterprise_3.2.3-debian11_amd64.deb.sha256[libcblite-enterprise_3.2.3-debian11_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-enterprise_3.2.3-debian11_amd64.deb[libcblite-dev-enterprise_3.2.3-debian11_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-enterprise_3.2.3-debian11_amd64.deb.sha256[libcblite-dev-enterprise_3.2.3-debian11_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-enterprise_3.2.3-debian11_arm64.deb[libcblite-enterprise_3.2.3-debian11_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-enterprise_3.2.3-debian11_arm64.deb.sha256[libcblite-enterprise_3.2.3-debian11_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-enterprise_3.2.3-debian11_arm64.deb[libcblite-dev-enterprise_3.2.3-debian11_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-enterprise_3.2.3-debian11_arm64.deb.sha256[libcblite-dev-enterprise_3.2.3-debian11_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-enterprise_3.2.3-debian11_armhf.deb[libcblite-enterprise_3.2.3-debian11_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-enterprise_3.2.3-debian11_armhf.deb.sha256[libcblite-enterprise_3.2.3-debian11_armhf.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-enterprise_3.2.3-debian11_armhf.deb[libcblite-dev-enterprise_3.2.3-debian11_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-enterprise_3.2.3-debian11_armhf.deb.sha256[libcblite-dev-enterprise_3.2.3-debian11_armhf.deb.sha256] -| - - -// Debian 10 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-enterprise_3.2.3-debian10_amd64.deb[libcblite-enterprise_3.2.3-debian10_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-enterprise_3.2.3-debian10_amd64.deb.sha256[libcblite-enterprise_3.2.3-debian10_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-enterprise_3.2.3-debian10_amd64.deb[libcblite-dev-enterprise_3.2.3-debian10_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-enterprise_3.2.3-debian10_amd64.deb.sha256[libcblite-dev-enterprise_3.2.3-debian10_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.1/libcblite-enterprise_3.2.1-debian10_arm64.deb[libcblite-enterprise_3.2.1-debian10_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.1/libcblite-enterprise_3.2.1-debian10_arm64.deb.sha256[libcblite-enterprise_3.2.1-debian10_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-enterprise_3.2.3-debian10_arm64.deb[libcblite-dev-enterprise_3.2.3-debian10_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-enterprise_3.2.3-debian10_arm64.deb.sha256[libcblite-dev-enterprise_3.2.3-debian10_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-enterprise_3.2.3-debian10_armhf.deb[libcblite-enterprise_3.2.3-debian10_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-enterprise_3.2.3-debian10_armhf.deb.sha256[libcblite-enterprise_3.2.3-debian10_armhf.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-enterprise_3.2.3-debian10_armhf.deb[libcblite-dev-enterprise_3.2.3-debian10_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-enterprise_3.2.3-debian10_armhf.deb.sha256[libcblite-dev-enterprise_3.2.3-debian10_armhf.deb.sha256] -| - - -// Debian 9 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-enterprise_3.2.3-debian9_amd64.deb[libcblite-enterprise_3.2.3-debian9_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-enterprise_3.2.3-debian9_amd64.deb.sha256[libcblite-enterprise_3.2.3-debian9_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-enterprise_3.2.3-debian9_amd64.deb[libcblite-dev-enterprise_3.2.3-debian9_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-enterprise_3.2.3-debian9_amd64.deb.sha256[libcblite-dev-enterprise_3.2.3-debian9_amd64.deb.sha256] -| - - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-enterprise_3.2.3-debian9_armhf.deb[libcblite-enterprise_3.2.3-debian9_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-enterprise_3.2.3-debian9_armhf.deb.sha256[libcblite-enterprise_3.2.3-debian9_armhf.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-enterprise_3.2.3-debian9_armhf.deb[libcblite-dev-enterprise_3.2.3-debian9_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-enterprise_3.2.3-debian9_armhf.deb.sha256[libcblite-dev-enterprise_3.2.3-debian9_armhf.deb.sha256] -| - -|=== --- - -[#tbl-downloads-3-community-edition-7] -Community Edition:: -+ --- -[#tbl-downloads-ce,cols="1,4,4,4 ", options="header"] -|=== -| Platform | Download | SHA | Debug Symbols - -.99+| Debian - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-community-3.2.3-linux-arm64.tar.gz[couchbase-lite-c-community-3.2.3-linux-arm64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-community-3.2.3-linux-arm64.tar.gz.sha256[couchbase-lite-c-community-3.2.3-linux-arm64.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-community-3.2.3-linux-arm64-symbols.tar.gz[couchbase-lite-c-community-3.2.3-linux-arm64-symbols.tar.gz] - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-community-3.2.3-linux-armhf.tar.gz[couchbase-lite-c-community-3.2.3-linux-armhf.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-community-3.2.3-linux-armhf.tar.gz.sha256[couchbase-lite-c-community-3.2.3-linux-armhf.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-community-3.2.3-linux-armhf-symbols.tar.gz[couchbase-lite-c-community-3.2.3-linux-armhf-symbols.tar.gz] - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-community-3.2.3-linux-x86_64.tar.gz[couchbase-lite-c-community-3.2.3-linux-x86_64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-community-3.2.3-linux-x86_64.tar.gz.sha256[couchbase-lite-c-community-3.2.3-linux-x86_64.tar.gz. - -// Debian 11 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-community_3.2.3-debian11_amd64.deb[libcblite-community_3.2.3-debian11_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-community_3.2.3-debian11_amd64.deb.sha256[libcblite-community_3.2.3-debian11_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-community_3.2.3-debian11_amd64.deb[libcblite-dev-community_3.2.3-debian11_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-community_3.2.3-debian11_amd64.deb.sha256[libcblite-dev-community_3.2.3-debian11_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-community_3.2.3-debian11_arm64.deb[libcblite-community_3.2.3-debian11_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-community_3.2.3-debian11_arm64.deb.sha256[libcblite-community_3.2.3-debian11_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-community_3.2.3-debian11_arm64.deb[libcblite-dev-community_3.2.3-debian11_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-community_3.2.3-debian11_arm64.deb.sha256[libcblite-dev-community_3.2.3-debian11_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-community_3.2.3-debian11_armhf.deb[libcblite-community_3.2.3-debian11_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-community_3.2.3-debian11_armhf.deb.sha256[libcblite-community_3.2.3-debian11_armhf.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-community_3.2.3-debian11_armhf.deb[libcblite-dev-community_3.2.3-debian11_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-community_3.2.3-debian11_armhf.deb.sha256[libcblite-dev-community_3.2.3-debian11_armhf.deb.sha256] -| - - -// Debian 10 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-community_3.2.3-debian10_amd64.deb[libcblite-community_3.2.3-debian10_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-community_3.2.3-debian10_amd64.deb.sha256[libcblite-community_3.2.3-debian10_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-community_3.2.3-debian10_amd64.deb[libcblite-dev-community_3.2.3-debian10_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-community_3.2.3-debian10_amd64.deb.sha256[libcblite-dev-community_3.2.3-debian10_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-community_3.2.3-debian10_arm64.deb[libcblite-community_3.2.3-debian10_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-community_3.2.3-debian10_arm64.deb.sha256[libcblite-community_3.2.3-debian10_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-community_3.2.3-debian10_arm64.deb[libcblite-dev-community_3.2.3-debian10_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-community_3.2.3-debian10_arm64.deb.sha256[libcblite-dev-community_3.2.3-debian10_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-community_3.2.3-debian10_armhf.deb[libcblite-community_3.2.3-debian10_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-community_3.2.3-debian10_armhf.deb.sha256[libcblite-community_3.2.3-debian10_armhf.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-community_3.2.3-debian10_armhf.deb[libcblite-dev-community_3.2.3-debian10_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-community_3.2.3-debian10_armhf.deb.sha256[libcblite-dev-community_3.2.3-debian10_armhf.deb.sha256] -| - - -// Debian 9 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-community_3.2.3-debian9_amd64.deb[libcblite-community_3.2.3-debian9_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-community_3.2.3-debian9_amd64.deb.sha256[libcblite-community_3.2.3-debian9_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-community_3.2.3-debian9_amd64.deb[libcblite-dev-community_3.2.3-debian9_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-community_3.2.3-debian9_amd64.deb.sha256[libcblite-dev-community_3.2.3-debian9_amd64.deb.sha256] -| - - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-community_3.2.3-debian9_armhf.deb[libcblite-community_3.2.3-debian9_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-community_3.2.3-debian9_armhf.deb.sha256[libcblite-community_3.2.3-debian9_armhf.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-community_3.2.3-debian9_armhf.deb[libcblite-dev-community_3.2.3-debian9_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-community_3.2.3-debian9_armhf.deb.sha256[libcblite-dev-community_3.2.3-debian9_armhf.deb.sha256] -| - -|=== - --- - -===== - - -[#ubuntu-3-2-2,id=ubuntu-3-2-2] -=== Ubuntu - -[#tbl-downloads-3.2.2] -.Download link table -[tabs] -===== - - -[#tbl-downloads-3-enterprise-edition-8] -Enterprise Edition:: -+ --- -[#tbl-downloads-ee,cols="1,4,4,4", options="header"] -|=== -| Platform | Download | SHA | Debug Symbols - -.99+| Ubuntu - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-enterprise-3.2.3-linux-arm64.tar.gz[couchbase-lite-c-enterprise-3.2.3-linux-arm64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-enterprise-3.2.3-linux-arm64.tar.gz.sha256[couchbase-lite-c-enterprise-3.2.3-linux-arm64.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-enterprise-3.2.3-linux-arm64-symbols.tar.gz[couchbase-lite-c-enterprise-3.2.3-linux-arm64-symbols.tar.gz] - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-enterprise-3.2.3-linux-armhf.tar.gz[couchbase-lite-c-enterprise-3.2.3-linux-armhf.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-enterprise-3.2.3-linux-armhf.tar.gz.sha256[couchbase-lite-c-enterprise-3.2.3-linux-armhf.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-enterprise-3.2.3-linux-armhf-symbols.tar.gz[couchbase-lite-c-enterprise-3.2.3-linux-armhf-symbols.tar.gz] - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-enterprise-3.2.3-linux-x86_64.tar.gz[couchbase-lite-c-enterprise-3.2.3-linux-x86_64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-enterprise-3.2.3-linux-x86_64.tar.gz.sha256[couchbase-lite-c-enterprise-3.2.3-linux-x86_64.tar. - - -// Ubuntu 22.04 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-enterprise_3.2.3-ubuntu22.04_amd64.deb[libcblite-enterprise_3.2.3-ubuntu22.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-enterprise_3.2.3-ubuntu22.04_amd64.deb.sha256[libcblite-enterprise_3.2.3-ubuntu22.04_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-enterprise_3.2.3-ubuntu22.04_amd64.deb[libcblite-dev-enterprise_3.2.3-ubuntu22.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-enterprise_3.2.3-ubuntu22.04_amd64.deb.sha256[libcblite-dev-enterprise_3.2.3-ubuntu22.04_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-enterprise_3.2.3-ubuntu22.04_arm64.deb[libcblite-enterprise_3.2.3-ubuntu22.04_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-enterprise_3.2.3-ubuntu22.04_arm64.deb.sha256[libcblite-enterprise_3.2.3-ubuntu22.04_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-enterprise_3.2.3-ubuntu22.04_arm64.deb[libcblite-dev-enterprise_3.2.3-ubuntu22.04_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-enterprise_3.2.3-ubuntu22.04_arm64.deb.sha256[libcblite-dev-enterprise_3.2.3-ubuntu22.04_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-enterprise_3.2.3-ubuntu22.04_armhf.deb[libcblite-enterprise_3.2.3-ubuntu22.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-enterprise_3.2.3-ubuntu22.04_armhf.deb.sha256[libcblite-enterprise_3.2.3-ubuntu22.04_armhf.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-enterprise_3.2.3-ubuntu22.04_armhf.deb[libcblite-dev-enterprise_3.2.3-ubuntu22.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-enterprise_3.2.3-ubuntu22.04_armhf.deb.sha256[libcblite-dev-enterprise_3.2.3-ubuntu22.04_armhf.deb.sha256] -| - - -// Ubuntu 20.04 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-enterprise_3.2.3-ubuntu20.04_amd64.deb[libcblite-enterprise_3.2.3-ubuntu20.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-enterprise_3.2.3-ubuntu20.04_amd64.deb.sha256[libcblite-enterprise_3.2.3-ubuntu20.04_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-enterprise_3.2.3-ubuntu20.04_amd64.deb[libcblite-dev-enterprise_3.2.3-ubuntu20.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite- -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-enterprise_3.2.3-ubuntu20.04_arm64.deb[libcblite-enterprise_3.2.3-ubuntu20.04_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-enterprise_3.2.3-ubuntu20.04_arm64.deb.sha256[libcblite-enterprise_3.2.3-ubuntu20.04_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-enterprise_3.2.3-ubuntu20.04_arm64.deb[libcblite-dev-enterprise_3.2.3-ubuntu20.04_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-enterprise_3.2.3-ubuntu20.04_arm64.deb.sha256[libcblite-dev-enterprise_3.2.3-ubuntu20.04_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-enterprise_3.2.3-ubuntu20.04_armhf.deb[libcblite-enterprise_3.2.3-ubuntu20.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-enterprise_3.2.3-ubuntu20.04_armhf.deb.sha256[libcblite-enterprise_3.2.3-ubuntu20.04_armhf.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-enterprise_3.2.3-ubuntu20.04_armhf.deb[libcblite-dev-enterprise_3.2.3-ubuntu20.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-enterprise_3.2.3-ubuntu20.04_armhf.deb.sha256[libcblite-dev-enterprise_3.2.3-ubuntu20.04_armhf.deb.sha256] -| - - -|=== --- - -[#tbl-downloads-3-community-edition-8] -Community Edition:: -+ --- -[#tbl-downloads-ce,cols="1,4,4,4 ", options="header"] -|=== -| Platform | Download | SHA | Debug Symbols - -.99+| Ubuntu - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3 /couchbase-lite-c-community-3.2.3-linux-arm64.tar.gz[couchbase-lite-c-community-3.2.3-linux-arm64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-community-3.2.3-linux-arm64.tar.gz.sha256[couchbase-lite-c-community-3.2.3-linux-arm64.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-community-3.2.3-linux-arm64-symbols.tar.gz[couchbase-lite-c-community-3.2.3-linux-arm64-symbols.tar.gz] - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-community-3.2.3-linux-armhf.tar.gz[couchbase-lite-c-community-3.2.3-linux-armhf.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-community-3.2.3-linux-armhf.tar.gz.sha256[couchbase-lite-c-community-3.2.3-linux-armhf.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-community-3.2.3-linux-armhf-symbols.tar.gz[couchbase-lite-c-community-3.2.3-linux-armhf-symbols.tar.gz] - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-community-3.2.3-linux-x86_64.tar.gz[couchbase-lite-c-community-3.2.3-linux-x86_64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-community-3.2.3-linux-x86_64.tar.gz.sha256[couchbase-lite-c-community-3.2.3-linux-x86_64.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/couchbase-lite-c-community-3.2.3-linux-x86_64-symbols.tar.gz[couchbase-lite-c-community-3.2.3-linux-x86_64-symbols.tar.gz] - - -// Ubuntu 22.04 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-community_3.2.3-ubuntu22.04_amd64.deb[libcblite-community_3.2.3-ubuntu22.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-community_3.2.3-ubuntu22.04_amd64.deb.sha256[libcblite-community_3.2.3-ubuntu22.04_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-community_3.2.3-ubuntu22.04_amd64.deb[libcblite-dev-community_3.2.3-ubuntu22.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-community_3.2.3-ubuntu22.04_amd64.deb.sha256[libcblite-dev-community_3.2.3-ubuntu22.04_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-community_3.2.3-ubuntu22.04_arm64.deb[libcblite-community_3.2.3-ubuntu22.04_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-community_3.2.3-ubuntu22.04_arm64.deb.sha256[libcblite-community_3.2.3-ubuntu22.04_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-community_3.2.3-ubuntu22.04_arm64.deb[libcblite-dev-community_3.2.3-ubuntu22.04_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-community_3.2.3-ubuntu22.04_arm64.deb.sha256[libcblite-dev-community_3.2.3-ubuntu22.04_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-community_3.2.3-ubuntu22.04_armhf.deb[libcblite-community_3.2.3-ubuntu22.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-community_3.2.3-ubuntu22.04_armhf.deb.sha256[libcblite-community_3.2.3-ubuntu22.04_armhf.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-community_3.2.3-ubuntu22.04_armhf.deb[libcblite-dev-community_3.2.3-ubuntu22.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-community_3.2.3-ubuntu22.04_armhf.deb.sha256[libcblite-dev-community_3.2.3-ubuntu22.04_armhf.deb.sha256] -| - - -// Ubuntu 20.04 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-community_3.2.3-ubuntu20.04_amd64.deb[libcblite-community_3.2.3-ubuntu20.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-community_3.2.3-ubuntu20.04_amd64.deb.sha256[libcblite-community_3.2.3-ubuntu20.04_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-community_3.2.3-ubuntu20.04_amd64.deb[libcblite-dev-community_3.2.3-ubuntu20.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-community_3.2.3-ubuntu20.04_amd64.deb.sha256[libcblite-dev-community_3.2.3-ubuntu20.04_amd64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-community_3.2.3-ubuntu20.04_arm64.deb[libcblite-community_3.2.3-ubuntu20.04_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-community_3.2.3-ubuntu20.04_arm64.deb.sha256[libcblite-community_3.2.3-ubuntu20.04_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-community_3.2.3-ubuntu20.04_arm64.deb[libcblite-dev-community_3.2.3-ubuntu20.04_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-community_3.2.3-ubuntu20.04_arm64.deb.sha256[libcblite-dev-community_3.2.3-ubuntu20.04_arm64.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-community_3.2.3-ubuntu20.04_armhf.deb[libcblite-community_3.2.3-ubuntu20.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-community_3.2.3-ubuntu20.04_armhf.deb.sha256[libcblite-community_3.2.3-ubuntu20.04_armhf.deb.sha256] -| - -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-community_3.2.3-ubuntu20.04_armhf.deb[libcblite-dev-community_3.2.3-ubuntu20.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.3/libcblite-dev-community_3.2.3-ubuntu20.04_armhf.deb.sha256[libcblite-dev-community_3.2.3-ubuntu20.04_armhf.deb.sha256] -| - -|=== - --- - -===== - -[#raspbian-3-2-2,id=raspbian-3-2-3] -=== Raspbian - -Please use the <> choosing the appropriate version (`debian9` or `debian10`) and architecture. - - -// If both are defined render vector search downloads - - -:release-dir-ee: pass:q,a[libcblite-3.2.3] -:release-dir-dev-ee: pass:q,a[libcblite-dev-3.2.3] - - -// If both parameters are defined, render CBL downloads - -[#release-3-2-3,id=release-3-2-2] -== Couchbase Lite Release 3.2.2 - -_Couchbase Lite for C_ is available for all xref:c:supported-os.adoc[Supported Platforms]. -You can obtain downloads for _Linux_ and _macOS_ from the links here in the downloads table. -Ensure you select the correct package for your application's compiler and architecture. - -Alternatively, check the -xref:c:gs-install.adoc[install] -page for instructions on how to get the software using a package manager. - -.Available platforms are: -**** -<> | -<> | -<> | -<> | -**** - -[#macos-3-2-2,id=macos-3-2-2] -=== MacOS - -[#tbl-downloads-3.2.2] +[#tbl-downloads-3.3.0] .Download link table [tabs] ===== @@ -1056,9 +77,9 @@ Enterprise Edition:: | Platform | Download | SHA | Debug Symbols .1+| MacOS -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-enterprise-3.2.2-macos.zip[couchbase-lite-c-enterprise-3.2.2-macos.zip] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-enterprise-3.2.2-macos.zip.sha256[couchbase-lite-c-enterprise-3.2.2-macos.zip.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-enterprise-3.2.2-macos-symbols.zip[couchbase-lite-c-enterprise-3.2.2-macos-symbols.zip] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-macos.zip[couchbase-lite-c-enterprise-3.3.0-macos.zip] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-macos.zip.sha256[couchbase-lite-c-enterprise-3.3.0-macos.zip.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-macos-symbols.zip[couchbase-lite-c-enterprise-3.3.0-macos-symbols.zip] |=== -- @@ -1072,9 +93,9 @@ Community Edition:: | Platform | Download | SHA | Debug Symbols | MacOS -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-community-3.2.2-macos.zip[couchbase-lite-c-community-3.2.2-macos.zip] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-community-3.2.2-macos.zip.sha256[couchbase-lite-c-community-3.2.2-macos.zip.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-community-3.2.2-macos-symbols.zip[couchbase-lite-c-community-3.2.2-macos-symbols.zip] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-macos.zip[couchbase-lite-c-community-3.3.0-macos.zip] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-macos.zip.sha256[couchbase-lite-c-community-3.3.0-macos.zip.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-macos-symbols.zip[couchbase-lite-c-community-3.3.0-macos-symbols.zip] |=== @@ -1082,10 +103,10 @@ Community Edition:: ===== -[#windows-3-2-2,id=windows-3-2-2] +[#windows-3-3-0,id=windows-3-3-0] === Windows -[#tbl-downloads-3.2.2] +[#tbl-downloads-3.3.0] .Download link table [tabs] ===== @@ -1100,9 +121,9 @@ Enterprise Edition:: | Platform | Download | SHA | Debug Symbols .1+| Windows -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-enterprise-3.2.2-windows-x86_64.zip[couchbase-lite-c-enterprise-3.2.2-windows-x86_64.zip] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-windows-x86_64.zip[couchbase-lite-c-enterprise-3.3.0-windows-x86_64.zip] | {empty} -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-enterprise-3.2.2-windows-x86_64-symbols.zip[couchbase-lite-c-enterprise-3.2.2-windows-x86_64-symbols.zip] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-windows-x86_64-symbols.zip[couchbase-lite-c-enterprise-3.3.0-windows-x86_64-symbols.zip] |=== -- @@ -1116,9 +137,9 @@ Community Edition:: | Platform | Download | SHA | Debug Symbols .1+| Windows -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-community-3.2.2-windows-x86_64.zip[couchbase-lite-c-community-3.2.2-windows-x86_64.zip] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-windows-x86_64.zip[couchbase-lite-c-community-3.3.0-windows-x86_64.zip] | {empty} -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-community-3.2.2-windows-x86_64-symbols.zip[couchbase-lite-c-community-3.2.2-windows-x86_64-symbols.zip] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-windows-x86_64-symbols.zip[couchbase-lite-c-community-3.3.0-windows-x86_64-symbols.zip] |=== @@ -1126,10 +147,10 @@ Community Edition:: ===== -[#debian-3-2-2,id=debian-3-2-2] +[#debian-3-3-0,id=debian-3-3-0] === Debian -[#tbl-downloads-3.2.2] +[#tbl-downloads-3.3.0] .Download link table [tabs] ===== @@ -1145,85 +166,85 @@ Enterprise Edition:: .99+| Debian -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-enterprise-3.2.2-linux-arm64.tar.gz[couchbase-lite-c-enterprise-3.2.2-linux-arm64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-enterprise-3.2.2-linux-arm64.tar.gz.sha256[couchbase-lite-c-enterprise-3.2.2-linux-arm64.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-enterprise-3.2.2-linux-arm64-symbols.tar.gz[couchbase-lite-c-enterprise-3.2.2-linux-arm64-symbols.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-arm64.tar.gz[couchbase-lite-c-enterprise-3.3.0-linux-arm64.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-arm64.tar.gz.sha256[couchbase-lite-c-enterprise-3.3.0-linux-arm64.tar.gz.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-arm64-symbols.tar.gz[couchbase-lite-c-enterprise-3.3.0-linux-arm64-symbols.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-enterprise-3.2.2-linux-armhf.tar.gz[couchbase-lite-c-enterprise-3.2.2-linux-armhf.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-enterprise-3.2.2-linux-armhf.tar.gz.sha256[couchbase-lite-c-enterprise-3.2.2-linux-armhf.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-enterprise-3.2.2-linux-armhf-symbols.tar.gz[couchbase-lite-c-enterprise-3.2.2-linux-armhf-symbols.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-armhf.tar.gz[couchbase-lite-c-enterprise-3.3.0-linux-armhf.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-armhf.tar.gz.sha256[couchbase-lite-c-enterprise-3.3.0-linux-armhf.tar.gz.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-armhf-symbols.tar.gz[couchbase-lite-c-enterprise-3.3.0-linux-armhf-symbols.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-enterprise-3.2.2-linux-x86_64.tar.gz[couchbase-lite-c-enterprise-3.2.2-linux-x86_64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-enterprise-3.2.2-linux-x86_64.tar.gz.sha256[couchbase-lite-c-enterprise-3.2.2-linux-x86_64.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-enterprise-3.2.2-linux-x86_64-symbols.tar.gz[couchbase-lite-c-enterprise-3.2.2-linux-x86_64-symbols.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-x86_64.tar.gz[couchbase-lite-c-enterprise-3.3.0-linux-x86_64.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-x86_64.tar.gz.sha256[couchbase-lite-c-enterprise-3.3.0-linux-x86_64.tar.gz.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-x86_64-symbols.tar.gz[couchbase-lite-c-enterprise-3.3.0-linux-x86_64-symbols.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-enterprise_3.2.1-debian11_amd64.deb[libcblite-enterprise_3.2.1-debian11_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-enterprise_3.2.2-debian11_amd64.deb.sha256[libcblite-enterprise_3.2.2-debian11_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian11_amd64.deb[libcblite-enterprise_3.3.0-debian11_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian11_amd64.deb.sha256[libcblite-enterprise_3.3.0-debian11_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-enterprise_3.2.2-debian11_amd64.deb[libcblite-dev-enterprise_3.2.2-debian11_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-enterprise_3.2.2-debian11_amd64.deb.sha256[libcblite-dev-enterprise_3.2.2-debian11_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian11_amd64.deb[libcblite-dev-enterprise_3.3.0-debian11_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian11_amd64.deb.sha256[libcblite-dev-enterprise_3.3.0-debian11_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-enterprise_3.2.2-debian11_arm64.deb[libcblite-enterprise_3.2.2-debian11_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-enterprise_3.2.2-debian11_arm64.deb.sha256[libcblite-enterprise_3.2.2-debian11_arm64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian11_arm64.deb[libcblite-enterprise_3.3.0-debian11_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian11_arm64.deb.sha256[libcblite-enterprise_3.3.0-debian11_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-enterprise_3.2.2-debian11_arm64.deb[libcblite-dev-enterprise_3.2.2-debian11_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-enterprise_3.2.2-debian11_arm64.deb.sha256[libcblite-dev-enterprise_3.2.2-debian11_arm64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian11_arm64.deb[libcblite-dev-enterprise_3.3.0-debian11_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian11_arm64.deb.sha256[libcblite-dev-enterprise_3.3.0-debian11_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-enterprise_3.2.2-debian11_armhf.deb[libcblite-enterprise_3.2.2-debian11_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-enterprise_3.2.2-debian11_armhf.deb.sha256[libcblite-enterprise_3.2.2-debian11_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian11_armhf.deb[libcblite-enterprise_3.3.0-debian11_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian11_armhf.deb.sha256[libcblite-enterprise_3.3.0-debian11_armhf.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-enterprise_3.2.2-debian11_armhf.deb[libcblite-dev-enterprise_3.2.2-debian11_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-enterprise_3.2.2-debian11_armhf.deb.sha256[libcblite-dev-enterprise_3.2.2-debian11_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian11_armhf.deb[libcblite-dev-enterprise_3.3.0-debian11_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian11_armhf.deb.sha256[libcblite-dev-enterprise_3.3.0-debian11_armhf.deb.sha256] | // Debian 10 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-enterprise_3.2.2-debian10_amd64.deb[libcblite-enterprise_3.2.2-debian10_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-enterprise_3.2.2-debian10_amd64.deb.sha256[libcblite-enterprise_3.2.2-debian10_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian10_amd64.deb[libcblite-enterprise_3.3.0-debian10_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian10_amd64.deb.sha256[libcblite-enterprise_3.3.0-debian10_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-enterprise_3.2.2-debian10_amd64.deb[libcblite-dev-enterprise_3.2.2-debian10_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-enterprise_3.2.2-debian10_amd64.deb.sha256[libcblite-dev-enterprise_3.2.2-debian10_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian10_amd64.deb[libcblite-dev-enterprise_3.3.0-debian10_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian10_amd64.deb.sha256[libcblite-dev-enterprise_3.3.0-debian10_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-enterprise_3.2.2-debian10_arm64.deb[libcblite-enterprise_3.2.2-debian10_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-enterprise_3.2.2-debian10_arm64.deb.sha256[libcblite-enterprise_3.2.2-debian10_arm64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian10_arm64.deb[libcblite-enterprise_3.3.0-debian10_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian10_arm64.deb.sha256[libcblite-enterprise_3.3.0-debian10_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-enterprise_3.2.2-debian10_arm64.deb[libcblite-dev-enterprise_3.2.2-debian10_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-enterprise_3.2.2-debian10_arm64.deb.sha256[libcblite-dev-enterprise_3.2.2-debian10_arm64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian10_arm64.deb[libcblite-dev-enterprise_3.3.0-debian10_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian10_arm64.deb.sha25[libcblite-dev-enterprise_3.3.0-debian10_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-enterprise_3.2.2-debian10_armhf.deb[libcblite-enterprise_3.2.2-debian10_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-enterprise_3.2.2-debian10_armhf.deb.sha256[libcblite-enterprise_3.2.2-debian10_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian10_armhf.deb[libcblite-enterprise_3.3.0-debian10_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian10_armhf.deb.sha256[libcblite-enterprise_3.3.0-debian10_armhf.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-enterprise_3.2.2-debian10_armhf.deb[libcblite-dev-enterprise_3.2.2-debian10_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-enterprise_3.2.2-debian10_armhf.deb.sha256[libcblite-dev-enterprise_3.2.2-debian10_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian10_armhf.deb[libcblite-dev-enterprise_3.3.0-debian10_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian10_armhf.deb.sha256[libcblite-dev-enterprise_3.3.0-debian10_armhf.deb.sha256] | // Debian 9 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-enterprise_3.2.2-debian9_amd64.deb[libcblite-enterprise_3.2.2-debian9_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-enterprise_3.2.2-debian9_amd64.deb.sha256[libcblite-enterprise_3.2.2-debian9_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian9_amd64.deb[libcblite-enterprise_3.3.0-debian9_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian9_amd64.deb.sha256[libcblite-enterprise_3.3.0-debian9_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-enterprise_3.2.2-debian9_amd64.deb[libcblite-dev-enterprise_3.2.2-debian9_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-enterprise_3.2.2-debian9_amd64.deb.sha256[libcblite-dev-enterprise_3.2.2-debian9_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian9_amd64.deb[libcblite-dev-enterprise_3.3.0-debian9_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian9_amd64.deb.sha256[libcblite-dev-enterprise_3.3.0-debian9_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-enterprise_3.2.2-debian9_armhf.deb[libcblite-enterprise_3.2.2-debian9_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-enterprise_3.2.2-debian9_armhf.deb.sha256[libcblite-enterprise_3.2.2-debian9_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian9_armhf.deb[libcblite-enterprise_3.3.0-debian9_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian9_armhf.deb.sha256[libcblite-enterprise_3.3.0-debian9_armhf.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-enterprise_3.2.2-debian9_armhf.deb[libcblite-dev-enterprise_3.2.2-debian9_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-enterprise_3.2.2-debian9_armhf.deb.sha256[libcblite-dev-enterprise_3.2.2-debian9_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian9_armhf.deb[libcblite-dev-enterprise_3.3.0-debian9_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian9_armhf.deb.sha256[libcblite-dev-enterprise_3.3.0-debian9_armhf.deb.sha256] | |=== @@ -1239,85 +260,86 @@ Community Edition:: .99+| Debian -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-community-3.2.2-linux-arm64.tar.gz[couchbase-lite-c-community-3.2.2-linux-arm64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-community-3.2.2-linux-arm64.tar.gz.sha256[couchbase-lite-c-community-3.2.2-linux-arm64.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-community-3.2.2-linux-arm64-symbols.tar.gz[couchbase-lite-c-community-3.2.2-linux-arm64-symbols.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-arm64.tar.gz[couchbase-lite-c-community-3.3.0-linux-arm64.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-arm64.tar.gz.sha256[couchbase-lite-c-community-3.3.0-linux-arm64.tar.gz.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-arm64-symbols.tar.gz[couchbase-lite-c-community-3.3.0-linux-arm64-symbols.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-community-3.2.2-linux-armhf.tar.gz[couchbase-lite-c-community-3.2.2-linux-armhf.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-community-3.2.2-linux-armhf.tar.gz.sha256[couchbase-lite-c-community-3.2.2-linux-armhf.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-community-3.2.2-linux-armhf-symbols.tar.gz[couchbase-lite-c-community-3.2.2-linux-armhf-symbols.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-armhf.tar.gz[couchbase-lite-c-community-3.3.0-linux-armhf.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-armhf.tar.gz.sha256[couchbase-lite-c-community-3.3.0-linux-armhf.tar.gz.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-armhf-symbols.tar.gz[couchbase-lite-c-community-3.3.0-linux-armhf-symbols.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-community-3.2.2-linux-x86_64.tar.gz[couchbase-lite-c-community-3.2.2-linux-x86_64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-community-3.2.2-linux-x86_64.tar.gz.sha256[couchbase-lite-c-community-3.2.2-linux-x86_64 +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-x86_64.tar.gz[couchbase-lite-c-community-3.3.0-linux-x86_64.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-x86_64.tar.gz.sha256[couchbase-lite-c-community-3.3.0-linux-x86_64.tar.gz.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-x86_64-symbols.tar.gz[couchbase-lite-c-community-3.3.0-linux-x86_64-symbols.tar.gz] // Debian 11 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-community_3.2.2-debian11_amd64.deb[libcblite-community_3.2.2-debian11_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-community_3.2.2-debian11_amd64.deb.sha256[libcblite-community_3.2.2-debian11_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian11_amd64.deb[libcblite-community_3.3.0-debian11_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian11_amd64.deb.sha256[libcblite-community_3.3.0-debian11_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-community_3.2.2-debian11_amd64.deb[libcblite-dev-community_3.2.2-debian11_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-community_3.2.2-debian11_amd64.deb.sha256[libcblite-dev-community_3.2.2-debian11_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian11_amd64.deb[libcblite-dev-community_3.3.0-debian11_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian11_amd64.deb.sha256[libcblite-dev-community_3.3.0-debian11_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-community_3.2.2-debian11_arm64.deb[libcblite-community_3.2.2-debian11_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-community_3.2.2-debian11_arm64.deb.sha256[libcblite-community_3.2.2-debian11_arm64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian11_arm64.deb[libcblite-community_3.3.0-debian11_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian11_arm64.deb.sha256[libcblite-community_3.3.0-debian11_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-community_3.2.2-debian11_arm64.deb[libcblite-dev-community_3.2.2-debian11_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-community_3.2.2-debian11_arm64.deb.sha256[libcblite-dev-community_3.2.2-debian11_arm64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian11_arm64.deb[libcblite-dev-community_3.3.0-debian11_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian11_arm64.deb.sha256[libcblite-dev-community_3.3.0-debian11_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-community_3.2.2-debian11_armhf.deb[libcblite-community_3.2.2-debian11_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-community_3.2.2-debian11_armhf.deb.sha256[libcblite-community_3.2.2-debian11_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian11_armhf.deb[libcblite-community_3.3.0-debian11_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian11_armhf.deb.sha256[libcblite-community_3.3.0-debian11_armhf.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-community_3.2.2-debian11_armhf.deb[libcblite-dev-community_3.2.2-debian11_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-community_3.2.2-debian11_armhf.deb.sha256[libcblite-dev-community_3.2.2-debian11_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian11_armhf.deb[libcblite-dev-community_3.3.0-debian11_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian11_armhf.deb.sha256[libcblite-dev-community_3.3.0-debian11_armhf.deb.sha256] | // Debian 10 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-community_3.2.2-debian10_amd64.deb[libcblite-community_3.2.2-debian10_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-community_3.2.2-debian10_amd64.deb.sha256[libcblite-community_3.2.2-debian10_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian10_amd64.deb[libcblite-community_3.3.0-debian10_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian10_amd64.deb.sha256[libcblite-community_3.3.0-debian10_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-community_3.2.2-debian10_amd64.deb[libcblite-dev-community_3.2.2-debian10_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-community_3.2.2-debian10_amd64.deb.sha256[libcblite-dev-community_3.2.2-debian10_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian10_amd64.deb[libcblite-dev-community_3.3.0-debian10_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian10_amd64.deb.sha256[libcblite-dev-community_3.3.0-debian10_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-community_3.2.2-debian10_arm64.deb[libcblite-community_3.2.2-debian10_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-community_3.2.2-debian10_arm64.deb.sha256[libcblite-community_3.2.2-debian10_arm64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian10_arm64.deb[libcblite-community_3.3.0-debian10_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian10_arm64.deb.sha256[libcblite-community_3.3.0-debian10_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-community_3.2.2-debian10_arm64.deb[libcblite-dev-community_3.2.2-debian10_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-community_3.2.2-debian10_arm64.deb.sha256[libcblite-dev-community_3.2.2-debian10_arm64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian10_arm64.deb[libcblite-dev-community_3.3.0-debian10_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian10_arm64.deb.sha256[libcblite-dev-community_3.3.0-debian10_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-community_3.2.2-debian10_armhf.deb[libcblite-community_3.2.2-debian10_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-community_3.2.2-debian10_armhf.deb.sha256[libcblite-community_3.2.2-debian10_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian10_armhf.deb[libcblite-community_3.3.0-debian10_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian10_armhf.deb.sha256[libcblite-community_3.3.0-debian10_armhf.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-community_3.2.2-debian10_armhf.deb[libcblite-dev-community_3.2.2-debian10_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-community_3.2.2-debian10_armhf.deb.sha256[libcblite-dev-community_3.2.2-debian10_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian10_armhf.deb[libcblite-dev-community_3.3.0-debian10_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian10_armhf.deb.sha256[libcblite-dev-community_3.3.0-debian10_armhf.deb.sha256] | // Debian 9 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-community_3.2.2-debian9_amd64.deb[libcblite-community_3.2.2-debian9_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-community_3.2.2-debian9_amd64.deb.sha256[libcblite-community_3.2.2-debian9_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian9_amd64.deb[libcblite-community_3.3.0-debian9_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian9_amd64.deb.sha256[libcblite-community_3.3.0-debian9_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-community_3.2.2-debian9_amd64.deb[libcblite-dev-community_3.2.2-debian9_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-community_3.2.2-debian9_amd64.deb.sha256[libcblite-dev-community_3.2.2-debian9_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian9_amd64.deb[libcblite-dev-community_3.3.0-debian9_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian9_amd64.deb.sha256[libcblite-dev-community_3.3.0-debian9_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-community_3.2.2-debian9_armhf.deb[libcblite-community_3.2.2-debian9_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-community_3.2.2-debian9_armhf.deb.sha256[libcblite-community_3.2.2-debian9_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian9_armhf.deb[libcblite-community_3.3.0-debian9_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian9_armhf.deb.sha256[libcblite-community_3.3.0-debian9_armhf.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-community_3.2.2-debian9_armhf.deb[libcblite-dev-community_3.2.2-debian9_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-community_3.2.2-debian9_armhf.deb.sha256[libcblite-dev-community_3.2.2-debian9_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian9_armhf.deb[libcblite-dev-community_3.3.0-debian9_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian9_armhf.deb.sha256[libcblite-dev-community_3.3.0-debian9_armhf.deb.sha256] | |=== @@ -1327,10 +349,10 @@ Community Edition:: ===== -[#ubuntu-3-2-2,id=ubuntu-3-2-2] +[#ubuntu-3-3-0,id=ubuntu-3-3-0] === Ubuntu -[#tbl-downloads-3.2.2] +[#tbl-downloads-3.3.0] .Download link table [tabs] ===== @@ -1346,66 +368,68 @@ Enterprise Edition:: .99+| Ubuntu -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-enterprise-3.2.2-linux-arm64.tar.gz[couchbase-lite-c-enterprise-3.2.2-linux-arm64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-enterprise-3.2.2-linux-arm64.tar.gz.sha256[couchbase-lite-c-enterprise-3.2.2-linux-arm64.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-enterprise-3.2.2-linux-arm64-symbols.tar.gz[couchbase-lite-c-enterprise-3.2.2-linux-arm64-symbols.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-arm64.tar.gz[couchbase-lite-c-enterprise-3.3.0-linux-arm64.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-arm64.tar.gz.sha256[couchbase-lite-c-enterprise-3.3.0-linux-arm64.tar.gz.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-arm64-symbols.tar.gz[couchbase-lite-c-enterprise-3.3.0-linux-arm64-symbols.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-enterprise-3.2.2-linux-armhf.tar.gz[couchbase-lite-c-enterprise-3.2.2-linux-armhf.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-enterprise-3.2.2-linux-armhf.tar.gz.sha256[couchbase-lite-c-enterprise-3.2.2-linux-armhf.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-enterprise-3.2.2-linux-armhf-symbols.tar.gz[couchbase-lite-c-enterprise-3.2.2-linux-armhf-symbols.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-armhf.tar.gz[couchbase-lite-c-enterprise-3.3.0-linux-armhf.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-armhf.tar.gz.sha256[couchbase-lite-c-enterprise-3.3.0-linux-armhf.tar.gz.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-armhf-symbols.tar.gz[couchbase-lite-c-enterprise-3.3.0-linux-armhf-symbols.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-enterprise-3.2.2-linux-x86_64.tar.gz[couchbase-lite-c-enterprise-3.2.2-linux-x86_64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-enterprise-3.2.2-linux-x86_64.tar.gz.sha256[couchbase-lite-c-enterprise-3.2.2-linux-x86_64. +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-x86_64.tar.gz[couchbase-lite-c-enterprise-3.3.0-linux-x86_64.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-x86_64.tar.gz.sha256[couchbase-lite-c-enterprise-3.3.0-linux-x86_64.tar.gz.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-x86_64-symbols.tar.gz[couchbase-lite-c-enterprise-3.3.0-linux-x86_64-symbols.tar.gz] // Ubuntu 22.04 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-enterprise_3.2.2-ubuntu22.04_amd64.deb[libcblite-enterprise_3.2.2-ubuntu22.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-enterprise_3.2.2-ubuntu22.04_amd64.deb.sha256[libcblite-enterprise_3.2.2-ubuntu22.04_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-ubuntu22.04_amd64.deb[libcblite-enterprise_3.3.0-ubuntu22.04_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-ubuntu22.04_amd64.deb.sha256[libcblite-enterprise_3.3.0-ubuntu22.04_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-enterprise_3.2.2-ubuntu22.04_amd64.deb[libcblite-dev-enterprise_3.2.2-ubuntu22.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-enterprise_3.2.2-ubuntu22.04_amd64.deb.sha256[libcblite-dev-enterprise_3.2.2-ubuntu22.04_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-ubuntu22.04_amd64.deb[libcblite-dev-enterprise_3.3.0-ubuntu22.04_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-ubuntu22.04_amd64.deb.sha256[libcblite-dev-enterprise_3.3.0-ubuntu22.04_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-enterprise_3.2.2-ubuntu22.04_arm64.deb[libcblite-enterprise_3.2.2-ubuntu22.04_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-enterprise_3.2.2-ubuntu22.04_arm64.deb.sha256[libcblite-enterprise_3.2.2-ubuntu22.04_arm64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-ubuntu22.04_arm64.deb[libcblite-enterprise_3.3.0-ubuntu22.04_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-ubuntu22.04_arm64.deb.sha256[libcblite-enterprise_3.3.0-ubuntu22.04_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-enterprise_3.2.2-ubuntu22.04_arm64.deb[libcblite-dev-enterprise_3.2.2-ubuntu22.04_arm +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-ubuntu22.04_arm64.deb[libcblite-dev-enterprise_3.3.0-ubuntu22.04_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-ubuntu22.04_arm64.deb.sha256[libcblite-dev-enterprise_3.3.0-ubuntu22.04_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-enterprise_3.2.2-ubuntu22.04_armhf.deb[libcblite-enterprise_3.2.2-ubuntu22.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-enterprise_3.2.2-ubuntu22.04_armhf.deb.sha256[libcblite-enterprise_3.2.2-ubuntu22.04_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-ubuntu22.04_armhf.deb[libcblite-enterprise_3.3.0-ubuntu22.04_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-ubuntu22.04_armhf.deb.sha256[libcblite-enterprise_3.3.0-ubuntu22.04_armhf.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-enterprise_3.2.2-ubuntu22.04_armhf.deb[libcblite-dev-enterprise_3.2.2-ubuntu22.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-enterprise_3.2.2-ubuntu22.04_armhf.deb.sha256[libcblite-dev-enterprise_3.2.2-ubuntu22.04_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-ubuntu22.04_armhf.deb[libcblite-dev-enterprise_3.3.0-ubuntu22.04_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-ubuntu22.04_armhf.deb.sha256[libcblite-dev-enterprise_3.3.0-ubuntu22.04_armhf.deb.sha256] | // Ubuntu 20.04 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-enterprise_3.2.2-ubuntu20.04_amd64.deb[libcblite-enterprise_3.2.2-ubuntu20.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-enterprise_3.2.2-ubuntu20.04_amd64.deb.sha256[libcblite-enterprise_3.2.2-ubuntu20.04_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-ubuntu20.04_amd64.deb[libcblite-enterprise_3.3.0-ubuntu20.04_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-ubuntu20.04_amd64.deb.sha256[libcblite-enterprise_3.3.0-ubuntu20.04_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-enterprise_3.2.2-ubuntu20.04_amd64.deb[libcblite-dev-enterprise_3.2.2-ubuntu20.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-enterprise_3.2.2-ubuntu20.04_amd64.deb.sha256[libcblite-dev-enterprise_3.2.2-ubuntu20.04_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-ubuntu20.04_amd64.deb[libcblite-dev-enterprise_3.3.0-ubuntu20.04_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-ubuntu20.04_amd64.deb.sha256[libcblite-dev-enterprise_3.3.0-ubuntu20.04_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-enterprise_3.2.2-ubuntu20.04_arm64.deb[libcblite-enterprise_3.2.2-ubuntu20.04_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-enterprise_3.2.2-ubuntu20.04_arm64.deb.sha256[libcblite-enterprise_3.2.2-ubuntu20.04_arm64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-ubuntu20.04_arm64.deb[libcblite-enterprise_3.3.0-ubuntu20.04_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-ubuntu20.04_arm64.deb.sha256[libcblite-enterprise_3.3.0-ubuntu20.04_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-enterprise_3.2.2-ubuntu20.04_arm64.deb[libcblite-dev-enterprise_3.2.2-ubuntu20.04_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-enterprise_3.2.2-ubuntu20.04_arm64.deb.sha256[libcblite-dev-enterprise_3.2.2-ubuntu20.04_arm64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-ubuntu20.04_arm64.deb[libcblite-dev-enterprise_3.3.0-ubuntu20.04_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-ubuntu20.04_arm64.deb.sha256[libcblite-dev-enterprise_3.3.0-ubuntu20.04_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-enterprise_3.2.2-ubuntu20.04_armhf.deb[libcblite-enterprise_3.2.2-ubuntu20.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-enterprise_3.2.2-ubuntu20.04_armhf.deb.sha256[libcblite-enterprise_3.2.2-ubuntu20.04_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-ubuntu20.04_armhf.deb[libcblite-enterprise_3.3.0-ubuntu20.04_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-ubuntu20.04_armhf.deb.sha256[libcblite-enterprise_3.3.0-ubuntu20.04_armhf.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-enterprise_3.2.2-ubuntu20.04_armhf.deb[libcblite-dev-enterprise_3.2.2-ubuntu20.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-enterprise_3.2.2-ubuntu20.04_armhf.deb.sha256[libcblite-dev-enterprise_3.2.2-ubuntu20.04_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-ubuntu20.04_armhf.deb[libcblite-dev-enterprise_3.3.0-ubuntu20.04_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-ubuntu20.04_armhf.deb.sha256[libcblite-dev-enterprise_3.3.0-ubuntu20.04_armhf.deb.sha256] | @@ -1422,65 +446,68 @@ Community Edition:: .99+| Ubuntu -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-community-3.2.2-linux-arm64.tar.gz[couchbase-lite-c-community-3.2.2-linux-arm64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-community-3.2.2-linux-arm64.tar.gz.sha256[couchbase-lite-c-community-3.2.2-linux-arm64.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-community-3.2.2-linux-arm64-symbols.tar.gz[couchbase-lite-c-community-3.2.2-linux-arm64-symbols.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-arm64.tar.gz[couchbase-lite-c-community-3.3.0-linux-arm64.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-arm64.tar.gz.sha256[couchbase-lite-c-community-3.3.0-linux-arm64.tar.gz.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-arm64-symbols.tar.gz[couchbase-lite-c-community-3.3.0-linux-arm64-symbols.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-community-3.2.2-linux-armhf.tar.gz[couchbase-lite-c-community-3.2.2-linux-armhf.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-community-3.2.2-linux-armhf.tar.gz.sha256[couchbase-lite-c-community-3.2.2-linux-armhf.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-community-3.2.2-linux-armhf-symbols.tar.gz[couchbase-lite-c-community-3.2.2-linux-armhf-symbols.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-armhf.tar.gz[couchbase-lite-c-community-3.3.0-linux-armhf.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-armhf.tar.gz.sha256[couchbase-lite-c-community-3.3.0-linux-armhf.tar.gz.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-armhf-symbols.tar.gz[couchbase-lite-c-community-3.3.0-linux-armhf-symbols.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-community-3.2.2-linux-x86_64.tar.gz[couchbase-lite-c-community-3.2.2-linux-x86_64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/couchbase-lite-c-community-3.2.2-linux-x86_64.tar.gz.sha256[couchbase-lite-c-community-3.2.2-linux-x86_64 +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-x86_64.tar.gz[couchbase-lite-c-community-3.3.0-linux-x86_64.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-x86_64.tar.gz.sha256[couchbase-lite-c-community-3.3.0-linux-x86_64.tar.gz.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-x86_64-symbols.tar.gz[couchbase-lite-c-community-3.3.0-linux-x86_64-symbols.tar.gz] // Ubuntu 22.04 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-community_3.2.2-ubuntu22.04_amd64.deb[libcblite-community_3.2.2-ubuntu22.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-community_3.2.2-ubuntu22.04_amd64.deb.sha256[libcblite-community_3.2.2-ubuntu22.04_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-ubuntu22.04_amd64.deb[libcblite-community_3.3.0-ubuntu22.04_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-ubuntu22.04_amd64.deb.sha256[libcblite-community_3.3.0-ubuntu22.04_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-community_3.2.2-ubuntu22.04_amd64.deb[libcblite-dev-community_3.2.2-ubuntu22.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-community_3.2.2-ubuntu22.04_amd64.deb.sha256[libcblite-dev-community_3.2.2-ubuntu22.04_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-ubuntu22.04_amd64.deb[libcblite-dev-community_3.3.0-ubuntu22.04_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-ubuntu22.04_amd64.deb.sha256[libcblite-dev-community_3.3.0-ubuntu22.04_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-community_3.2.2-ubuntu22.04_arm64.deb[libcblite-community_3.2.2-ubuntu22.04_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-community_3.2.2-ubuntu22.04_arm64.deb.sha256[libcblite-community_3.2.2-ubuntu22.04_arm64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-ubuntu22.04_arm64.deb[libcblite-community_3.3.0-ubuntu22.04_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-ubuntu22.04_arm64.deb.sha256[libcblite-community_3.3.0-ubuntu22.04_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-community_3.2.2-ubuntu22.04_arm64.deb[libcblite-dev-community_3.2.2-ubuntu22 +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-ubuntu22.04_arm64.deb[libcblite-dev-community_3.3.0-ubuntu22.04_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-ubuntu22.04_arm64.deb.sha256[libcblite-dev-community_3.3.0-ubuntu22.04_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-community_3.2.2-ubuntu22.04_armhf.deb[libcblite-community_3.2.2-ubuntu22.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-community_3.2.2-ubuntu22.04_armhf.deb.sha256[libcblite-community_3.2.2-ubuntu22.04_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-ubuntu22.04_armhf.deb[libcblite-community_3.3.0-ubuntu22.04_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-ubuntu22.04_armhf.deb.sha256[libcblite-community_3.3.0-ubuntu22.04_armhf.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-community_3.2.2-ubuntu22.04_armhf.deb[libcblite-dev-community_3.2.2-ubuntu22.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-community_3.2.2-ubuntu22.04_armhf.deb.sha256[libcblite-dev-community_3.2.2-ubuntu22.04_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-ubuntu22.04_armhf.deb[libcblite-dev-community_3.3.0-ubuntu22.04_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-ubuntu22.04_armhf.deb.sha256[libcblite-dev-community_3.3.0-ubuntu22.04_armhf.deb.sha256] | // Ubuntu 20.04 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-community_3.2.2-ubuntu20.04_amd64.deb[libcblite-community_3.2.2-ubuntu20.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-community_3.2.2-ubuntu20.04_amd64.deb.sha256[libcblite-community_3.2.2-ubuntu20.04_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-ubuntu20.04_amd64.deb[libcblite-community_3.3.0-ubuntu20.04_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-ubuntu20.04_amd64.deb.sha256[libcblite-community_3.3.0-ubuntu20.04_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-community_3.2.2-ubuntu20.04_amd64.deb[libcblite-dev-community_3.2.2-ubuntu20.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-community_3.2.2-ubuntu20.04_amd64.deb.sha256[libcblite-dev-community_3.2.2-ubuntu20.04_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-ubuntu20.04_amd64.deb[libcblite-dev-community_3.3.0-ubuntu20.04_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-ubuntu20.04_amd64.deb.sha256[libcblite-dev-community_3.3.0-ubuntu20.04_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-community_3.2.2-ubuntu20.04_arm64.deb[libcblite-community_3.2.2-ubuntu20.04_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-community_3.2.2-ubuntu20.04_arm64.deb.sha256[libcblite-community_3.2.2-ubuntu20.04_arm64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-ubuntu20.04_arm64.deb[libcblite-community_3.3.0-ubuntu20.04_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-ubuntu20.04_arm64.deb.sha256[libcblite-community_3.3.0-ubuntu20.04_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-community_3.2.2-ubuntu20.04_arm64.deb[libcblite-dev-community_3.2.2-ubuntu20.04_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-ubuntu20.04_arm64.deb[libcblite-dev-community_3.3.0-ubuntu20.04_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-ubuntu20.04_arm64.deb.sha256[libcblite-dev-community_3.3.0-ubuntu20.04_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-community_3.2.2-ubuntu20.04_armhf.deb[libcblite-community_3.2.2-ubuntu20.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-community_3.2.2-ubuntu20.04_armhf.deb.sha256[libcblite-community_3.2.2-ubuntu20.04_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-ubuntu20.04_armhf.deb[libcblite-community_3.3.0-ubuntu20.04_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-ubuntu20.04_armhf.deb.sha256[libcblite-community_3.3.0-ubuntu20.04_armhf.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-community_3.2.2-ubuntu20.04_armhf.deb[libcblite-dev-community_3.2.2-ubuntu20.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.2/libcblite-dev-community_3.2.2-ubuntu20.04_armhf.deb.sha256[libcblite-dev-community_3.2.2-ubuntu20.04_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-ubuntu20.04_armhf.deb[libcblite-dev-community_3.3.0-ubuntu20.04_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-ubuntu20.04_armhf.deb.sha256[libcblite-dev-community_3.3.0-ubuntu20.04_armhf.deb.sha256] | |=== @@ -1489,17 +516,17 @@ Community Edition:: ===== -[#raspbian-3-2-2,id=raspbian-3-2-2] +[#raspbian-3-3-0,id=raspbian-3-3-0] === Raspbian -Please use the <> choosing the appropriate version (`debian9` or `debian10`) and architecture. +Please use the <> choosing the appropriate version (`debian9` or `debian10`) and architecture. // If both are defined render vector search downloads -:release-dir-ee: pass:q,a[libcblite-3.2.0] -:release-dir-dev-ee: pass:q,a[libcblite-dev-3.2.0] +:release-dir-ee: pass:q,a[libcblite-3.3.0] +:release-dir-dev-ee: pass:q,a[libcblite-dev-3.3.0] // If both parameters are defined, render CBL downloads @@ -1572,7 +599,7 @@ Enterprise:: Enterprise Edition:: + -- -[#tbl-downloads-ee,cols="1,4,4,4", options="header"] +[#tbl-downloads-ee,cols="1,4,4", options="header"] |=== | Platform | Download | SHA | Debug Symbols @@ -1652,10 +679,9 @@ Enterprise:: .4+| Linux -| https://packages.couchbase.com/releases/couchbase-lite-vector-search/1.0.0/couchbase-lite-vector-search-1.0.0-linux-arm64.zip.sha256[couchbase-lite-vector-search-1.0.0-linux-arm64.zip.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-vector-search/1.0.0/couchbase-lite-vector-search-1.0.0-linux-arm64.zip[couchbase-lite-vector-search-1.0.0-linux-arm64.zip] -| https://packages.couchbase.com/releases/couchbase-lite-vector-search/1.0.0/couchbase-lite-vector-search-1.0.0-linux-arm64-symbols.zip[couchbase-lite-vector-search-1.0.0-linux-arm64-symbols.zip] - +| https://packages.couchbase.com/releases/couchbase-lite-vector-search/1.0.0/couchbase-lite-vector-search-1.0.0-linux-aarch64.zip[couchbase-lite-vector-search-1.0.0-linux-aarch64.zip] +| https://packages.couchbase.com/releases/couchbase-lite-vector-search/1.0.0/couchbase-lite-vector-search-1.0.0-linux-aarch64.zip.sha256[couchbase-lite-vector-search-1.0.0-linux-aarch64.zip.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-vector-search/1.0.0/couchbase-lite-vector-search-1.0.0-linux-aarch64-symbols.zip[couchbase-lite-vector-search-1.0.0-linux-aarch64-symbols.zip] | https://packages.couchbase.com/releases/couchbase-lite-vector-search/1.0.0/couchbase-lite-vector-search-1.0.0-linux-x86_64.zip[couchbase-lite-vector-search-1.0.0-linux-x86_64.zip] | https://packages.couchbase.com/releases/couchbase-lite-vector-search/1.0.0/couchbase-lite-vector-search-1.0.0-linux-x86_64.zip.sha256[couchbase-lite-vector-search-1.0.0-linux-x86_64.zip.sha256] | https://packages.couchbase.com/releases/couchbase-lite-vector-search/1.0.0/couchbase-lite-vector-search-1.0.0-linux-x86_64-symbols.zip[couchbase-lite-vector-search-1.0.0-linux-x86_64-symbols.zip] @@ -1707,4 +733,10 @@ https://docs.couchbase.com/tutorials/[Tutorials] ++++ +NOTE: TODO this is the automated style if we want to continue using that +:param-version: 4.0.0 +:param-version-hyphenated: 4-0-0 +include::partial$downloadslist.adoc[] +:param-version!: +:param-version-hyphenated!: diff --git a/modules/c/pages/gs-install.adoc b/modules/c/pages/gs-install.adoc index 543c6d07a..642ee85eb 100644 --- a/modules/c/pages/gs-install.adoc +++ b/modules/c/pages/gs-install.adoc @@ -502,10 +502,7 @@ Couchbase Lite for C is available on the platforms shown in the tables below. -- Support for the following will be deprecated in this release and will be removed in a future release: -* macOS 12 (Monterey) -* Ubuntu - 20.04 LTS -* Raspbian - 9 -* Debian 9, 10 +* macOS 13 (Ventura) Please plan to migrate your apps to use an appropriate alternative version. -- @@ -528,7 +525,7 @@ Please plan to migrate your apps to use an appropriate alternative version. |=== .>| Version | x86 | x64 | ARM 32 | ARM 64 -| 12+ +| 13+ | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] @@ -546,7 +543,6 @@ Please plan to migrate your apps to use an appropriate alternative version. | macOS 14 (Sonoma) a| image:ROOT:yes.png[] | image:ROOT:yes.png[] | macOS 13 (Ventura) a| image:ROOT:yes.png[] | image:ROOT:yes.png[] -| macOS 12 (Monterey) a| image:ROOT:yes.png[] | image:ROOT:yes.png[] |=== @@ -559,17 +555,16 @@ Please plan to migrate your apps to use an appropriate alternative version. .>| Distro | Version .>| x64 .>| ARM 32 .>| ARM 64 .4+| Debian -| 9 | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] -| 10 (Buster) | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] | 11 (Bullseye) | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] | 12 (Bookworm) | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] -| Raspberry Pi OS | 10 | | image:ROOT:yes.png[] | image:ROOT:yes.png[] -| Raspbian | 9 | | image:ROOT:yes.png[] | +.4+| Raspberry Pi OS +| 11 (Bullseye) | | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| 12 (Bookworm) | | image:ROOT:yes.png[] | image:ROOT:yes.png[] .2+| Ubuntu -| 20.04 LTS | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] | 22.04 LTS | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| 24.04 LTS | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] |=== @@ -581,17 +576,16 @@ Please plan to migrate your apps to use an appropriate alternative version. .>| Distro | Version .>| x64 .>| ARM 32 .>| ARM 64 .4+| Debian -| 9 | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] -| 10 (Buster) | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] | 11 (Bullseye) | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] | 12 (Bookworm) | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] -| Raspberry Pi OS | 10 | | image:ROOT:yes.png[] | image:ROOT:yes.png[] -| Raspbian | 9 | | image:ROOT:yes.png[] | +.4+| Raspberry Pi OS +| 11 (Bullseye) | | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| 12 (Bookworm) | | image:ROOT:yes.png[] | image:ROOT:yes.png[] .2+| Ubuntu -| 20.04 LTS | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] | 22.04 LTS | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| 24.04 LTS | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] |=== @@ -602,7 +596,7 @@ Please plan to migrate your apps to use an appropriate alternative version. |=== .>|| Version | x64 -| Desktop | 10+ | image:ROOT:yes.png[] +| Desktop | 11+ | image:ROOT:yes.png[] |=== @@ -613,14 +607,14 @@ Please plan to migrate your apps to use an appropriate alternative version. // Include the same parameters as in gs-downloads, but only for latest version -:release-dir-ee: pass:q,a[libcblite-3.2.4] -:release-dir-dev-ee: pass:q,a[libcblite-dev-3.2.4] +:release-dir-ee: pass:q,a[libcblite-3.3.0] +:release-dir-dev-ee: pass:q,a[libcblite-dev-3.3.0] // If both parameters are defined, render CBL downloads -[#release-3-2-4,id=release-3-2-4] -=== Couchbase Lite Release 3.2.4 +[#release-3-2-1,id=release-3-2-1] +=== Couchbase Lite Release 3.3.0 _Couchbase Lite for C_ is available for all xref:c:supported-os.adoc[Supported Platforms]. You can obtain downloads for _Linux_ and _macOS_ from the links here in the downloads table. @@ -632,16 +626,16 @@ page for instructions on how to get the software using a package manager. .Available platforms are: **** -<> | -<> | -<> | -<> | +<> | +<> | +<> | +<> | **** -[#macos-3-2-4,id=macos-3-2-4] +[#macos-3-2-1,id=macos-3-2-1] ==== MacOS -[#tbl-downloads-3.2.4] +[#tbl-downloads-3.3.0] .Download link table [tabs] ===== @@ -656,9 +650,9 @@ Enterprise Edition:: | Platform | Download | SHA | Debug Symbols .1+| MacOS -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-macos.zip[couchbase-lite-c-enterprise-3.2.4-macos.zip] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-macos.zip.sha256[couchbase-lite-c-enterprise-3.2.4-macos.zip.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-macos-symbols.zip[couchbase-lite-c-enterprise-3.2.4-macos-symbols.zip] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-macos.zip[couchbase-lite-c-enterprise-3.3.0-macos.zip] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-macos.zip.sha256[couchbase-lite-c-enterprise-3.3.0-macos.zip.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-macos-symbols.zip[couchbase-lite-c-enterprise-3.3.0-macos-symbols.zip] |=== -- @@ -672,9 +666,9 @@ Community Edition:: | Platform | Download | SHA | Debug Symbols | MacOS -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-macos.zip[couchbase-lite-c-community-3.2.4-macos.zip] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-macos.zip.sha256[couchbase-lite-c-community-3.2.4-macos.zip.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-macos-symbols.zip[couchbase-lite-c-community-3.2.4-macos-symbols.zip] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-macos.zip[couchbase-lite-c-community-3.3.0-macos.zip] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-macos.zip.sha256[couchbase-lite-c-community-3.3.0-macos.zip.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-macos-symbols.zip[couchbase-lite-c-community-3.3.0-macos-symbols.zip] |=== @@ -682,10 +676,10 @@ Community Edition:: ===== -[#windows-3-2-4,id=windows-3-2-4] +[#windows-3-2-1,id=windows-3-2-1] ==== Windows -[#tbl-downloads-3.2.4] +[#tbl-downloads-3.3.0] .Download link table [tabs] ===== @@ -700,9 +694,9 @@ Enterprise Edition:: | Platform | Download | SHA | Debug Symbols .1+| Windows -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-windows-x86_64.zip[couchbase-lite-c-enterprise-3.2.4-windows-x86_64.zip] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-windows-x86_64.zip[couchbase-lite-c-enterprise-3.3.0-windows-x86_64.zip] | {empty} -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-windows-x86_64-symbols.zip[couchbase-lite-c-enterprise-3.2.4-windows-x86_64-symbols.zip] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-windows-x86_64-symbols.zip[couchbase-lite-c-enterprise-3.3.0-windows-x86_64-symbols.zip] |=== -- @@ -716,9 +710,9 @@ Community Edition:: | Platform | Download | SHA | Debug Symbols .1+| Windows -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-windows-x86_64.zip[couchbase-lite-c-community-3.2.4-windows-x86_64.zip] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-windows-x86_64.zip[couchbase-lite-c-community-3.3.0-windows-x86_64.zip] | {empty} -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-windows-x86_64-symbols.zip[couchbase-lite-c-community-3.2.4-windows-x86_64-symbols.zip] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-windows-x86_64-symbols.zip[couchbase-lite-c-community-3.3.0-windows-x86_64-symbols.zip] |=== @@ -726,10 +720,10 @@ Community Edition:: ===== -[#debian-3-2-4,id=debian-3-2-4] +[#debian-3-2-1,id=debian-3-2-1] ==== Debian -[#tbl-downloads-3.2.4] +[#tbl-downloads-3.3.0] .Download link table [tabs] ===== @@ -745,83 +739,85 @@ Enterprise Edition:: .99+| Debian -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-linux-arm64.tar.gz[couchbase-lite-c-enterprise-3.2.4-linux-arm64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-linux-arm64.tar.gz.sha256[couchbase-lite-c-enterprise-3.2.4-linux-arm64.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-linux-arm64-symbols.tar.gz[couchbase-lite-c-enterprise-3.2.4-linux-arm64-symbols.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-arm64.tar.gz[couchbase-lite-c-enterprise-3.3.0-linux-arm64.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-arm64.tar.gz.sha256[couchbase-lite-c-enterprise-3.3.0-linux-arm64.tar.gz.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-arm64-symbols.tar.gz[couchbase-lite-c-enterprise-3.3.0-linux-arm64-symbols.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4 +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-armhf.tar.gz[couchbase-lite-c-enterprise-3.3.0-linux-armhf.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-armhf.tar.gz.sha256[couchbase-lite-c-enterprise-3.3.0-linux-armhf.tar.gz.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-armhf-symbols.tar.gz[couchbase-lite-c-enterprise-3.3.0-linux-armhf-symbols.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-linux-x86_64.tar.gz[couchbase-lite-c-enterprise-3.2.4-linux-x86_64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-linux-x86_64.tar.gz.sha256[couchbase-lite-c-enterprise-3.2.4-linux-x86_64.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-linux-x86_64-symbols.tar.gz[couchbase-lite-c-enterprise-3.2.4-linux-x86_64-symbols.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-x86_64.tar.gz[couchbase-lite-c-enterprise-3.3.0-linux-x86_64.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-x86_64.tar.gz.sha256[couchbase-lite-c-enterprise-3.3.0-linux-x86_64.tar.gz.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-x86_64-symbols.tar.gz[couchbase-lite-c-enterprise-3.3.0-linux-x86_64-symbols.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-debian11_amd64.deb[libcblite-enterprise_3.2.4-debian11_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-debian11_amd64.deb.sha256[libcblite-enterprise_3.2.4-debian11_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian11_amd64.deb[libcblite-enterprise_3.3.0-debian11_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian11_amd64.deb.sha256[libcblite-enterprise_3.3.0-debian11_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-debian11_amd64.deb[libcblite-dev-enterprise_3.2.4-debian11_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-debian11_amd64.deb.sha256[libcblite-dev-enterprise_3.2.4-debian11_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian11_amd64.deb[libcblite-dev-enterprise_3.3.0-debian11_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian11_amd64.deb.sha256[libcblite-dev-enterprise_3.3.0-debian11_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-debian11_arm64.deb[libcblite-enterprise_3.2.4-debian11_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-debian11_arm64.deb.sha256[libcblite-enterprise_3.2.4-debian11_arm64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian11_arm64.deb[libcblite-enterprise_3.3.0-debian11_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian11_arm64.deb.sha256[libcblite-enterprise_3.3.0-debian11_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-debian11_arm64.deb[libcblite-dev-enterprise_3.2.4-debian11_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-debian11_arm64.deb.sha256[libcblite-dev-enterprise_3.2.4-debian11_arm64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian11_arm64.deb[libcblite-dev-enterprise_3.3.0-debian11_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian11_arm64.deb.sha256[libcblite-dev-enterprise_3.3.0-debian11_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-debian11_armhf.deb[libcblite-enterprise_3.2.4-debian11_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-debian11_armhf.deb.sha256[libcblite-enterprise_3.2.4-debian11_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian11_armhf.deb[libcblite-enterprise_3.3.0-debian11_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian11_armhf.deb.sha256[libcblite-enterprise_3.3.0-debian11_armhf.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-debian11_armhf.deb[libcblite-dev-enterprise_3.2.4-debian11_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-debian11_armhf.deb.sha256[libcblite-dev-enterprise_3.2.4-debian11_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian11_armhf.deb[libcblite-dev-enterprise_3.3.0-debian11_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian11_armhf.deb.sha256[libcblite-dev-enterprise_3.3.0-debian11_armhf.deb.sha256] | // Debian 10 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-debian10_amd64.deb[libcblite-enterprise_3.2.4-debian10_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-debian10_amd64.deb.sha256[libcblite-enterprise_3.2.4-debian10_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian10_amd64.deb[libcblite-enterprise_3.3.0-debian10_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian10_amd64.deb.sha256[libcblite-enterprise_3.3.0-debian10_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-debian10_amd64.deb[libcblite-dev-enterprise_3.2.4-debian10_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-debian10_amd64.deb.sha256[libcblite-dev-enterprise_3.2.4-debian10_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian10_amd64.deb[libcblite-dev-enterprise_3.3.0-debian10_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian10_amd64.deb.sha256[libcblite-dev-enterprise_3.3.0-debian10_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-debian10_arm64.deb[libcblite-enterprise_3.2.4-debian10_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-debian10_arm64.deb.sha256[libcblite-enterprise_3.2.4-debian10_arm64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian10_arm64.deb[libcblite-enterprise_3.3.0-debian10_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian10_arm64.deb.sha256[libcblite-enterprise_3.3.0-debian10_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-debian10_arm64.deb[libcblite-dev-enterprise_3.2.4-debian10_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-debian10_arm64.deb.sha256[libcblite-dev-enterprise_3.2.4-debian10_arm64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian10_arm64.deb[libcblite-dev-enterprise_3.3.0-debian10_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian10_arm64.deb.sha25[libcblite-dev-enterprise_3.3.0-debian10_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.1/libcblite-enterprise_3.2.1-debian10_armhf.deb[libcblite-enterprise_3.2.1-debian10_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.1/libcblite-enterprise_3.2.1-debian10_armhf.deb.sha256[libcblite-enterprise_3.2.1-debian10_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian10_armhf.deb[libcblite-enterprise_3.3.0-debian10_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian10_armhf.deb.sha256[libcblite-enterprise_3.3.0-debian10_armhf.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.1/libcblite-dev-enterprise_3.2.1-debian10_armhf.deb[libcblite-dev-enterprise_3.2.1-debian10_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.1/libcblite-dev-enterprise_3.2.1-debian10_armhf.deb.sha256[libcblite-dev-enterprise_3.2.1-debian10_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian10_armhf.deb[libcblite-dev-enterprise_3.3.0-debian10_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian10_armhf.deb.sha256[libcblite-dev-enterprise_3.3.0-debian10_armhf.deb.sha256] | // Debian 9 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-debian9_amd64.deb[libcblite-enterprise_3.2.4-debian9_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-debian9_amd64.deb.sha256[libcblite-enterprise_3.2.4-debian9_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian9_amd64.deb[libcblite-enterprise_3.3.0-debian9_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian9_amd64.deb.sha256[libcblite-enterprise_3.3.0-debian9_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-debian9_amd64.deb[libcblite-dev-enterprise_3.2.4-debian9_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-debian9_amd64.deb.sha256[libcblite-dev-enterprise_3.2.4-debian9_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian9_amd64.deb[libcblite-dev-enterprise_3.3.0-debian9_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian9_amd64.deb.sha256[libcblite-dev-enterprise_3.3.0-debian9_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-debian9_armhf.deb[libcblite-enterprise_3.2.4-debian9_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-debian9_armhf.deb.sha256[libcblite-enterprise_3.2.4-debian9_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian9_armhf.deb[libcblite-enterprise_3.3.0-debian9_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-debian9_armhf.deb.sha256[libcblite-enterprise_3.3.0-debian9_armhf.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-debian9_armhf.deb[libcblite-dev-enterprise_3.2.4-debian9_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-debian9_armhf.deb.sha256[libcblite-dev-enterprise_3.2.4-debian9_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian9_armhf.deb[libcblite-dev-enterprise_3.3.0-debian9_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-debian9_armhf.deb.sha256[libcblite-dev-enterprise_3.3.0-debian9_armhf.deb.sha256] | |=== @@ -837,85 +833,86 @@ Community Edition:: .99+| Debian -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-linux-arm64.tar.gz[couchbase-lite-c-community-3.2.4-linux-arm64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-linux-arm64.tar.gz.sha256[couchbase-lite-c-community-3.2.4-linux-arm64.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-linux-arm64-symbols.tar.gz[couchbase-lite-c-community-3.2.4-linux-arm64-symbols.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-arm64.tar.gz[couchbase-lite-c-community-3.3.0-linux-arm64.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-arm64.tar.gz.sha256[couchbase-lite-c-community-3.3.0-linux-arm64.tar.gz.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-arm64-symbols.tar.gz[couchbase-lite-c-community-3.3.0-linux-arm64-symbols.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-linux-armhf.tar.gz[couchbase-lite-c-community-3.2.4-linux-armhf.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-linux-armhf.tar.gz.sha256[couchbase-lite-c-community-3.2.4-linux-armhf.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-linux-armhf-symbols.tar.gz[couchbase-lite-c-community-3.2.4-linux-armhf-symbols.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-armhf.tar.gz[couchbase-lite-c-community-3.3.0-linux-armhf.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-armhf.tar.gz.sha256[couchbase-lite-c-community-3.3.0-linux-armhf.tar.gz.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-armhf-symbols.tar.gz[couchbase-lite-c-community-3.3.0-linux-armhf-symbols.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-linux-x86_64.tar.gz[couchbase-lite-c-community-3.2.4-linux-x86_64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-linux-x86_64.tar.gz.sha256[couchbase-lite-c-community-3.2.4-linux-x86_64.tar.gz. +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-x86_64.tar.gz[couchbase-lite-c-community-3.3.0-linux-x86_64.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-x86_64.tar.gz.sha256[couchbase-lite-c-community-3.3.0-linux-x86_64.tar.gz.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-x86_64-symbols.tar.gz[couchbase-lite-c-community-3.3.0-linux-x86_64-symbols.tar.gz] // Debian 11 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian11_amd64.deb[libcblite-community_3.2.4-debian11_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian11_amd64.deb.sha256[libcblite-community_3.2.4-debian11_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian11_amd64.deb[libcblite-community_3.3.0-debian11_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian11_amd64.deb.sha256[libcblite-community_3.3.0-debian11_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian11_amd64.deb[libcblite-dev-community_3.2.4-debian11_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian11_amd64.deb.sha256[libcblite-dev-community_3.2.4-debian11_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian11_amd64.deb[libcblite-dev-community_3.3.0-debian11_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian11_amd64.deb.sha256[libcblite-dev-community_3.3.0-debian11_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian11_arm64.deb[libcblite-community_3.2.4-debian11_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian11_arm64.deb.sha256[libcblite-community_3.2.4-debian11_arm64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian11_arm64.deb[libcblite-community_3.3.0-debian11_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian11_arm64.deb.sha256[libcblite-community_3.3.0-debian11_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian11_arm64.deb[libcblite-dev-community_3.2.4-debian11_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian11_arm64.deb.sha256[libcblite-dev-community_3.2.4-debian11_arm64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian11_arm64.deb[libcblite-dev-community_3.3.0-debian11_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian11_arm64.deb.sha256[libcblite-dev-community_3.3.0-debian11_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian11_armhf.deb[libcblite-community_3.2.4-debian11_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian11_armhf.deb.sha256[libcblite-community_3.2.4-debian11_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian11_armhf.deb[libcblite-community_3.3.0-debian11_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian11_armhf.deb.sha256[libcblite-community_3.3.0-debian11_armhf.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian11_armhf.deb[libcblite-dev-community_3.2.4-debian11_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian11_armhf.deb.sha256[libcblite-dev-community_3.2.4-debian11_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian11_armhf.deb[libcblite-dev-community_3.3.0-debian11_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian11_armhf.deb.sha256[libcblite-dev-community_3.3.0-debian11_armhf.deb.sha256] | // Debian 10 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian10_amd64.deb[libcblite-community_3.2.4-debian10_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian10_amd64.deb.sha256[libcblite-community_3.2.4-debian10_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian10_amd64.deb[libcblite-community_3.3.0-debian10_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian10_amd64.deb.sha256[libcblite-community_3.3.0-debian10_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian10_amd64.deb[libcblite-dev-community_3.2.4-debian10_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian10_amd64.deb.sha256[libcblite-dev-community_3.2.4-debian10_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian10_amd64.deb[libcblite-dev-community_3.3.0-debian10_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian10_amd64.deb.sha256[libcblite-dev-community_3.3.0-debian10_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian10_arm64.deb[libcblite-community_3.2.4-debian10_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian10_arm64.deb.sha256[libcblite-community_3.2.4-debian10_arm64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian10_arm64.deb[libcblite-community_3.3.0-debian10_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian10_arm64.deb.sha256[libcblite-community_3.3.0-debian10_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian10_arm64.deb[libcblite-dev-community_3.2.4-debian10_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian10_arm64.deb.sha256[libcblite-dev-community_3.2.4-debian10_arm64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian10_arm64.deb[libcblite-dev-community_3.3.0-debian10_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian10_arm64.deb.sha256[libcblite-dev-community_3.3.0-debian10_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian10_armhf.deb[libcblite-community_3.2.4-debian10_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian10_armhf.deb.sha256[libcblite-community_3.2.4-debian10_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian10_armhf.deb[libcblite-community_3.3.0-debian10_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian10_armhf.deb.sha256[libcblite-community_3.3.0-debian10_armhf.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian10_armhf.deb[libcblite-dev-community_3.2.4-debian10_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian10_armhf.deb.sha256[libcblite-dev-community_3.2.4-debian10_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian10_armhf.deb[libcblite-dev-community_3.3.0-debian10_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian10_armhf.deb.sha256[libcblite-dev-community_3.3.0-debian10_armhf.deb.sha256] | // Debian 9 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian9_amd64.deb[libcblite-community_3.2.4-debian9_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian9_amd64.deb.sha256[libcblite-community_3.2.4-debian9_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian9_amd64.deb[libcblite-community_3.3.0-debian9_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian9_amd64.deb.sha256[libcblite-community_3.3.0-debian9_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian9_amd64.deb[libcblite-dev-community_3.2.4-debian9_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian9_amd64.deb.sha256[libcblite-dev-community_3.2.4-debian9_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian9_amd64.deb[libcblite-dev-community_3.3.0-debian9_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian9_amd64.deb.sha256[libcblite-dev-community_3.3.0-debian9_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian9_armhf.deb[libcblite-community_3.2.4-debian9_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-debian9_armhf.deb.sha256[libcblite-community_3.2.4-debian9_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian9_armhf.deb[libcblite-community_3.3.0-debian9_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-debian9_armhf.deb.sha256[libcblite-community_3.3.0-debian9_armhf.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian9_armhf.deb[libcblite-dev-community_3.2.4-debian9_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-debian9_armhf.deb.sha256[libcblite-dev-community_3.2.4-debian9_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian9_armhf.deb[libcblite-dev-community_3.3.0-debian9_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-debian9_armhf.deb.sha256[libcblite-dev-community_3.3.0-debian9_armhf.deb.sha256] | |=== @@ -925,10 +922,10 @@ Community Edition:: ===== -[#ubuntu-3-2-4,id=ubuntu-3-2-4] +[#ubuntu-3-2-1,id=ubuntu-3-2-1] ==== Ubuntu -[#tbl-downloads-3.2.4] +[#tbl-downloads-3.3.0] .Download link table [tabs] ===== @@ -944,67 +941,68 @@ Enterprise Edition:: .99+| Ubuntu -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-linux-arm64.tar.gz[couchbase-lite-c-enterprise-3.2.4-linux-arm64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-linux-arm64.tar.gz.sha256[couchbase-lite-c-enterprise-3.2.4-linux-arm64.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-linux-arm64-symbols.tar.gz[couchbase-lite-c-enterprise-3.2.4-linux-arm64-symbols.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-arm64.tar.gz[couchbase-lite-c-enterprise-3.3.0-linux-arm64.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-arm64.tar.gz.sha256[couchbase-lite-c-enterprise-3.3.0-linux-arm64.tar.gz.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-arm64-symbols.tar.gz[couchbase-lite-c-enterprise-3.3.0-linux-arm64-symbols.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-linux-armhf.tar.gz[couchbase-lite-c-enterprise-3.2.4-linux-armhf.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-linux-armhf.tar.gz.sha256[couchbase-lite-c-enterprise-3.2.4-linux-armhf.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-linux-armhf-symbols.tar.gz[couchbase-lite-c-enterprise-3.2.4-linux-armhf-symbols.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-armhf.tar.gz[couchbase-lite-c-enterprise-3.3.0-linux-armhf.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-armhf.tar.gz.sha256[couchbase-lite-c-enterprise-3.3.0-linux-armhf.tar.gz.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-armhf-symbols.tar.gz[couchbase-lite-c-enterprise-3.3.0-linux-armhf-symbols.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-linux-x86_64.tar.gz[couchbase-lite-c-enterprise-3.2.4-linux-x86_64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-linux-x86_64.tar.gz.sha256[couchbase-lite-c-enterprise-3.2.4-linux-x86_64.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-enterprise-3.2.4-linux-x86_64-symbols.tar.gz[couchbase-lite-c-enterprise-3.2.4-linux-x86_64-symbols.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-x86_64.tar.gz[couchbase-lite-c-enterprise-3.3.0-linux-x86_64.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-x86_64.tar.gz.sha256[couchbase-lite-c-enterprise-3.3.0-linux-x86_64.tar.gz.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-enterprise-3.3.0-linux-x86_64-symbols.tar.gz[couchbase-lite-c-enterprise-3.3.0-linux-x86_64-symbols.tar.gz] // Ubuntu 22.04 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-ubuntu22.04_amd64.deb[libcblite-enterprise_3.2.4-ubuntu22.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-ubuntu22.04_amd64.deb.sha256[libcblite-enterprise_3.2.4-ubuntu22.04_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-ubuntu22.04_amd64.deb[libcblite-enterprise_3.3.0-ubuntu22.04_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-ubuntu22.04_amd64.deb.sha256[libcblite-enterprise_3.3.0-ubuntu22.04_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-ubuntu22.04_amd64.deb[libcblite-dev-enterprise_3.2.4-ubuntu22.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-ubuntu22.04_amd64.deb.sha256[libcblite-dev-enterprise_3.2.4-ubuntu22.04_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-ubuntu22.04_amd64.deb[libcblite-dev-enterprise_3.3.0-ubuntu22.04_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-ubuntu22.04_amd64.deb.sha256[libcblite-dev-enterprise_3.3.0-ubuntu22.04_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-ubuntu22.04_arm64.deb[libcblite-enterprise_3.2.4-ubuntu22.04_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-ubuntu22.04_arm64.deb.sha256[libcblite-enterprise_3.2.4-ubuntu22.04_arm64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-ubuntu22.04_arm64.deb[libcblite-enterprise_3.3.0-ubuntu22.04_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-ubuntu22.04_arm64.deb.sha256[libcblite-enterprise_3.3.0-ubuntu22.04_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-ubuntu22.04_arm64.deb[libcblite-dev-enterprise_3.2.4-ubuntu22.04_arm6 +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-ubuntu22.04_arm64.deb[libcblite-dev-enterprise_3.3.0-ubuntu22.04_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-ubuntu22.04_arm64.deb.sha256[libcblite-dev-enterprise_3.3.0-ubuntu22.04_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-ubuntu22.04_armhf.deb[libcblite-enterprise_3.2.4-ubuntu22.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-ubuntu22.04_armhf.deb.sha256[libcblite-enterprise_3.2.4-ubuntu22.04_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-ubuntu22.04_armhf.deb[libcblite-enterprise_3.3.0-ubuntu22.04_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-ubuntu22.04_armhf.deb.sha256[libcblite-enterprise_3.3.0-ubuntu22.04_armhf.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-ubuntu22.04_armhf.deb[libcblite-dev-enterprise_3.2.4-ubuntu22.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-ubuntu22.04_armhf.deb.sha256[libcblite-dev-enterprise_3.2.4-ubuntu22.04_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-ubuntu22.04_armhf.deb[libcblite-dev-enterprise_3.3.0-ubuntu22.04_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-ubuntu22.04_armhf.deb.sha256[libcblite-dev-enterprise_3.3.0-ubuntu22.04_armhf.deb.sha256] | // Ubuntu 20.04 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-ubuntu20.04_amd64.deb[libcblite-enterprise_3.2.4-ubuntu20.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-ubuntu20.04_amd64.deb.sha256[libcblite-enterprise_3.2.4-ubuntu20.04_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-ubuntu20.04_amd64.deb[libcblite-enterprise_3.3.0-ubuntu20.04_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-ubuntu20.04_amd64.deb.sha256[libcblite-enterprise_3.3.0-ubuntu20.04_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-ubuntu20.04_amd64.deb[libcblite-dev-enterprise_3.2.4-ubuntu20.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite- +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-ubuntu20.04_amd64.deb[libcblite-dev-enterprise_3.3.0-ubuntu20.04_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-ubuntu20.04_amd64.deb.sha256[libcblite-dev-enterprise_3.3.0-ubuntu20.04_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-ubuntu20.04_arm64.deb[libcblite-enterprise_3.2.4-ubuntu20.04_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-ubuntu20.04_arm64.deb.sha256[libcblite-enterprise_3.2.4-ubuntu20.04_arm64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-ubuntu20.04_arm64.deb[libcblite-enterprise_3.3.0-ubuntu20.04_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-ubuntu20.04_arm64.deb.sha256[libcblite-enterprise_3.3.0-ubuntu20.04_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-ubuntu20.04_arm64.deb[libcblite-dev-enterprise_3.2.4-ubuntu20.04_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-ubuntu20.04_arm64.deb.sha256[libcblite-dev-enterprise_3.2.4-ubuntu20.04_arm64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-ubuntu20.04_arm64.deb[libcblite-dev-enterprise_3.3.0-ubuntu20.04_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-ubuntu20.04_arm64.deb.sha256[libcblite-dev-enterprise_3.3.0-ubuntu20.04_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-ubuntu20.04_armhf.deb[libcblite-enterprise_3.2.4-ubuntu20.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-enterprise_3.2.4-ubuntu20.04_armhf.deb.sha256[libcblite-enterprise_3.2.4-ubuntu20.04_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-ubuntu20.04_armhf.deb[libcblite-enterprise_3.3.0-ubuntu20.04_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-enterprise_3.3.0-ubuntu20.04_armhf.deb.sha256[libcblite-enterprise_3.3.0-ubuntu20.04_armhf.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-ubuntu20.04_armhf.deb[libcblite-dev-enterprise_3.2.4-ubuntu20.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-enterprise_3.2.4-ubuntu20.04_armhf.deb.sha256[libcblite-dev-enterprise_3.2.4-ubuntu20.04_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-ubuntu20.04_armhf.deb[libcblite-dev-enterprise_3.3.0-ubuntu20.04_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-enterprise_3.3.0-ubuntu20.04_armhf.deb.sha256[libcblite-dev-enterprise_3.3.0-ubuntu20.04_armhf.deb.sha256] | @@ -1021,66 +1019,68 @@ Community Edition:: .99+| Ubuntu -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-linux-arm64.tar.gz[couchbase-lite-c-community-3.2.4-linux-arm64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-linux-arm64.tar.gz.sha256[couchbase-lite-c-community-3.2.4-linux-arm64.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-linux-arm64-symbols.tar.gz[couchbase-lite-c-community-3.2.4-linux-arm64-symbols.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-arm64.tar.gz[couchbase-lite-c-community-3.3.0-linux-arm64.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-arm64.tar.gz.sha256[couchbase-lite-c-community-3.3.0-linux-arm64.tar.gz.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-arm64-symbols.tar.gz[couchbase-lite-c-community-3.3.0-linux-arm64-symbols.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-linux-armhf.tar.gz[couchbase-lite-c-community-3.2.4-linux-armhf.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-linux-armhf.tar.gz.sha256[couchbase-lite-c-community-3.2.4-linux-armhf.tar.gz.sha256] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-linux-armhf-symbols.tar.gz[couchbase-lite-c-community-3.2.4-linux-armhf-symbols.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-armhf.tar.gz[couchbase-lite-c-community-3.3.0-linux-armhf.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-armhf.tar.gz.sha256[couchbase-lite-c-community-3.3.0-linux-armhf.tar.gz.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-armhf-symbols.tar.gz[couchbase-lite-c-community-3.3.0-linux-armhf-symbols.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-linux-x86_64.tar.gz[couchbase-lite-c-community-3.2.4-linux-x86_64.tar.gz] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/couchbase-lite-c-community-3.2.4-linux-x86_64.tar.gz.sha256[couchbase-lite-c-community-3.2.4-linux-x86_64.tar +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-x86_64.tar.gz[couchbase-lite-c-community-3.3.0-linux-x86_64.tar.gz] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-x86_64.tar.gz.sha256[couchbase-lite-c-community-3.3.0-linux-x86_64.tar.gz.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/couchbase-lite-c-community-3.3.0-linux-x86_64-symbols.tar.gz[couchbase-lite-c-community-3.3.0-linux-x86_64-symbols.tar.gz] // Ubuntu 22.04 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-ubuntu22.04_amd64.deb[libcblite-community_3.2.4-ubuntu22.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-ubuntu22.04_amd64.deb.sha256[libcblite-community_3.2.4-ubuntu22.04_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-ubuntu22.04_amd64.deb[libcblite-community_3.3.0-ubuntu22.04_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-ubuntu22.04_amd64.deb.sha256[libcblite-community_3.3.0-ubuntu22.04_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-ubuntu22.04_amd64.deb[libcblite-dev-community_3.2.4-ubuntu22.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-ubuntu22.04_amd64.deb.sha256[libcblite-dev-community_3.2.4-ubuntu22.04_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-ubuntu22.04_amd64.deb[libcblite-dev-community_3.3.0-ubuntu22.04_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-ubuntu22.04_amd64.deb.sha256[libcblite-dev-community_3.3.0-ubuntu22.04_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-ubuntu22.04_arm64.deb[libcblite-community_3.2.4-ubuntu22.04_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-ubuntu22.04_arm64.deb.sha256[libcblite-community_3.2.4-ubuntu22.04_arm64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-ubuntu22.04_arm64.deb[libcblite-community_3.3.0-ubuntu22.04_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-ubuntu22.04_arm64.deb.sha256[libcblite-community_3.3.0-ubuntu22.04_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-ubuntu22.04_arm64.deb[libcblite-dev-community_3.2.4-ubuntu22 +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-ubuntu22.04_arm64.deb[libcblite-dev-community_3.3.0-ubuntu22.04_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-ubuntu22.04_arm64.deb.sha256[libcblite-dev-community_3.3.0-ubuntu22.04_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-ubuntu22.04_armhf.deb[libcblite-community_3.2.4-ubuntu22.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-ubuntu22.04_armhf.deb.sha256[libcblite-community_3.2.4-ubuntu22.04_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-ubuntu22.04_armhf.deb[libcblite-community_3.3.0-ubuntu22.04_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-ubuntu22.04_armhf.deb.sha256[libcblite-community_3.3.0-ubuntu22.04_armhf.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-ubuntu22.04_armhf.deb[libcblite-dev-community_3.2.4-ubuntu22.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-ubuntu22.04_armhf.deb.sha256[libcblite-dev-community_3.2.4-ubuntu22.04_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-ubuntu22.04_armhf.deb[libcblite-dev-community_3.3.0-ubuntu22.04_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-ubuntu22.04_armhf.deb.sha256[libcblite-dev-community_3.3.0-ubuntu22.04_armhf.deb.sha256] | // Ubuntu 20.04 -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-ubuntu20.04_amd64.deb[libcblite-community_3.2.4-ubuntu20.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-ubuntu20.04_amd64.deb.sha256[libcblite-community_3.2.4-ubuntu20.04_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-ubuntu20.04_amd64.deb[libcblite-community_3.3.0-ubuntu20.04_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-ubuntu20.04_amd64.deb.sha256[libcblite-community_3.3.0-ubuntu20.04_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-ubuntu20.04_amd64.deb[libcblite-dev-community_3.2.4-ubuntu20.04_amd64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-ubuntu20.04_amd64.deb.sha256[libcblite-dev-community_3.2.4-ubuntu20.04_amd64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-ubuntu20.04_amd64.deb[libcblite-dev-community_3.3.0-ubuntu20.04_amd64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-ubuntu20.04_amd64.deb.sha256[libcblite-dev-community_3.3.0-ubuntu20.04_amd64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-ubuntu20.04_arm64.deb[libcblite-community_3.2.4-ubuntu20.04_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-ubuntu20.04_arm64.deb.sha256[libcblite-community_3.2.4-ubuntu20.04_arm64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-ubuntu20.04_arm64.deb[libcblite-community_3.3.0-ubuntu20.04_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-ubuntu20.04_arm64.deb.sha256[libcblite-community_3.3.0-ubuntu20.04_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-ubuntu20.04_arm64.deb[libcblite-dev-community_3.2.4-ubuntu20.04_arm64.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.4-ubuntu20.04_arm64.deb.sha256[libcblite-dev-community_3.2.4-ubuntu20.04_arm64.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-ubuntu20.04_arm64.deb[libcblite-dev-community_3.3.0-ubuntu20.04_arm64.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-ubuntu20.04_arm64.deb.sha256[libcblite-dev-community_3.3.0-ubuntu20.04_arm64.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-ubuntu20.04_armhf.deb[libcblite-community_3.2.4-ubuntu20.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-community_3.2.4-ubuntu20.04_armhf.deb.sha256[libcblite-community_3.2.4-ubuntu20.04_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-ubuntu20.04_armhf.deb[libcblite-community_3.3.0-ubuntu20.04_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-community_3.3.0-ubuntu20.04_armhf.deb.sha256[libcblite-community_3.3.0-ubuntu20.04_armhf.deb.sha256] | -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.1-ubuntu20.04_armhf.deb[libcblite-dev-community_3.2.1-ubuntu20.04_armhf.deb] -| https://packages.couchbase.com/releases/couchbase-lite-c/3.2.4/libcblite-dev-community_3.2.1-ubuntu20.04_armhf.deb.sha256[libcblite-dev-community_3.2.1-ubuntu20.04_armhf.deb.sha256] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-ubuntu20.04_armhf.deb[libcblite-dev-community_3.3.0-ubuntu20.04_armhf.deb] +| https://packages.couchbase.com/releases/couchbase-lite-c/3.3.0/libcblite-dev-community_3.3.0-ubuntu20.04_armhf.deb.sha256[libcblite-dev-community_3.3.0-ubuntu20.04_armhf.deb.sha256] | |=== @@ -1089,10 +1089,10 @@ Community Edition:: ===== -[#raspbian-3-2-4,id=raspbian-3-2-4] +[#raspbian-3-3-0,id=raspbian-3-3-0] ==== Raspbian -Please use the <> choosing the appropriate version (`debian9` or `debian10`) and architecture. +Please use the <> choosing the appropriate version (`debian11` or `debian12`) and architecture. // If both are defined render vector search downloads diff --git a/modules/c/pages/indexing.adoc b/modules/c/pages/indexing.adoc index de2bf6628..e50eaa3b6 100644 --- a/modules/c/pages/indexing.adoc +++ b/modules/c/pages/indexing.adoc @@ -288,7 +288,7 @@ include::c:example$code_snippets/main.cpp[tags=array-index-nested] The above snippet creates an array index to allow you to iterate through `contacts[].phones[].type` in the document, namely `"home"` and `"mobile"`. -IMPORTANT: Array literals are not supported in CBL 3.2.1. +IMPORTANT: Array literals are not supported in CBL 3.3.0. Attempting to create a query with array literals will return an error. diff --git a/modules/c/pages/releasenotes.adoc b/modules/c/pages/releasenotes.adoc index d6ff0e4d9..55df2c5b4 100644 --- a/modules/c/pages/releasenotes.adoc +++ b/modules/c/pages/releasenotes.adoc @@ -9,14 +9,4 @@ ifdef::prerelease[:page-status: {prerelease}] :param-abstract: This content describes the key features and changes implemented by release {version} of Couchbase Lite on {param-title} [#maint-latest] -include::partial$release-notes/couchbase-mobile-c-release-note.3.2.4.adoc[] - -include::partial$release-notes/couchbase-mobile-c-release-note.3.2.3.adoc[] - -include::partial$release-notes/couchbase-mobile-c-release-note.3.2.2.adoc[] - -include::partial$release-notes/couchbase-mobile-c-release-note.3.2.1.adoc[] - -include::partial$release-notes/couchbase-mobile-c-release-note.3.2.0.adoc[] - -include::partial$release-notes/couchbase-mobile-c-release-note.3.2.0-beta.adoc[] +include::partial$release-notes/couchbase-mobile-c-release-note.4.0.0.adoc[] diff --git a/modules/c/pages/supported-os.adoc b/modules/c/pages/supported-os.adoc index 3ad10ac1b..f11adb620 100644 --- a/modules/c/pages/supported-os.adoc +++ b/modules/c/pages/supported-os.adoc @@ -27,10 +27,7 @@ Couchbase Lite for C is available on the platforms shown in the tables below. -- Support for the following will be deprecated in this release and will be removed in a future release: -* macOS 12 (Monterey) -* Ubuntu - 20.04 LTS -* Raspbian - 9 -* Debian 9, 10 +* macOS 13 (Ventura) Please plan to migrate your apps to use an appropriate alternative version. -- @@ -53,7 +50,7 @@ Please plan to migrate your apps to use an appropriate alternative version. |=== .>| Version | x86 | x64 | ARM 32 | ARM 64 -| 12+ +| 13+ | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] @@ -71,7 +68,6 @@ Please plan to migrate your apps to use an appropriate alternative version. | macOS 14 (Sonoma) a| image:ROOT:yes.png[] | image:ROOT:yes.png[] | macOS 13 (Ventura) a| image:ROOT:yes.png[] | image:ROOT:yes.png[] -| macOS 12 (Monterey) a| image:ROOT:yes.png[] | image:ROOT:yes.png[] |=== @@ -83,18 +79,17 @@ Please plan to migrate your apps to use an appropriate alternative version. |=== .>| Distro | Version .>| x64 .>| ARM 32 .>| ARM 64 -.4+| Debian -| 9 | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] -| 10 (Buster) | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +.2+| Debian | 11 (Bullseye) | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] | 12 (Bookworm) | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] -| Raspberry Pi OS | 10 | | image:ROOT:yes.png[] | image:ROOT:yes.png[] -| Raspbian | 9 | | image:ROOT:yes.png[] | +.2+| Raspberry Pi OS +| 11 (Bullseye) | | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| 12 (Bookworm) | | image:ROOT:yes.png[] | image:ROOT:yes.png[] .2+| Ubuntu -| 20.04 LTS | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] | 22.04 LTS | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| 24.04 LTS | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] |=== @@ -105,18 +100,17 @@ Please plan to migrate your apps to use an appropriate alternative version. |=== .>| Distro | Version .>| x64 .>| ARM 32 .>| ARM 64 -.4+| Debian -| 9 | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] -| 10 (Buster) | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +.2+| Debian | 11 (Bullseye) | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] | 12 (Bookworm) | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] -| Raspberry Pi OS | 10 | | image:ROOT:yes.png[] | image:ROOT:yes.png[] -| Raspbian | 9 | | image:ROOT:yes.png[] | +.2+| Raspberry Pi OS +| 11 (Bullseye) | | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| 12 (Bookworm) | | image:ROOT:yes.png[] | image:ROOT:yes.png[] .2+| Ubuntu -| 20.04 LTS | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] | 22.04 LTS | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| 24.04 LTS | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] |=== @@ -127,8 +121,9 @@ Please plan to migrate your apps to use an appropriate alternative version. |=== .>|| Version | x64 -| Desktop | 10+ | image:ROOT:yes.png[] +| Desktop | 11+ | image:ROOT:yes.png[] |=== + diff --git a/modules/c/partials/release-notes/couchbase-mobile-c-release-note.3.2.0-beta.adoc b/modules/c/partials/release-notes/couchbase-mobile-c-release-note.3.2.0-beta.adoc deleted file mode 100644 index dfb42c824..000000000 --- a/modules/c/partials/release-notes/couchbase-mobile-c-release-note.3.2.0-beta.adoc +++ /dev/null @@ -1,132 +0,0 @@ -[#maint-3-2-0-beta-3] -== 3.2.0 -- August 2024 - -Version 3.2.0 Beta 3 for {param-title} delivers the following features and enhancements: - -=== Enhancements - -* https://issues.couchbase.com/browse/CBL-5202[CBL-5202 - Implement Collection's full-name property] - -* https://issues.couchbase.com/browse/CBL-5208[CBL-5208 - Implement Collection's database property] - -* https://issues.couchbase.com/browse/CBL-5380[CBL-5380 - Update iOS Target Version to 12] - -// LiteCore - -* https://issues.couchbase.com/browse/CBL-5241[CBL-5241 - Upsert performance is degraded when the number of docs is increased] - -* https://issues.couchbase.com/browse/CBL-5287[CBL-5287 - Enable Prediction Function in SQL++ Parser] - -* https://issues.couchbase.com/browse/CBL-283[CBL-283 - Date Format other than ISO 8601] - -* https://issues.couchbase.com/browse/CBL-68[CBL-68 - DATE_DIFF_MILLIS(date1, date2, part)] - -* https://issues.couchbase.com/browse/CBL-67[CBL-67 - DATE_ADD_STR(date1, n, part)] - -* https://issues.couchbase.com/browse/CBL-66[CBL-66 - DATE_ADD_MILLIS(date1, n, part)] - -* https://issues.couchbase.com/browse/CBL-65[CBL-65 - MILLIS_TO_UTC(date1 [, fmt])] - -* https://issues.couchbase.com/browse/CBL-64[CBL-64 - MILLIS_TO_TZ(date1, tz [, fmt])] - -* https://issues.couchbase.com/browse/CBL-62[CBL-62 - STR_TO_TZ(date1, tz)] - -* https://issues.couchbase.com/browse/CBL-61[CBL-61 - MILLIS_TO_STR(date1 [, fmt ])] - -* https://issues.couchbase.com/browse/CBL-60[CBL-60 - DATE_DIFF_STR(date1, date2, part)] - -// WILL BE IN GA * https://issues.couchbase.com/browse/CBL-5266[CBL-5266 - Include Privacy Manifest in the released library] - -=== Issues and Resolutions - -* https://issues.couchbase.com/browse/CBL-4248[CBL-4248 - Fixed UserAgent contains some extra / debug string] - -* https://issues.couchbase.com/browse/CBL-4282[CBL-4282 - Fixed fleece headers listed in iOS framework module map files are not correct] - -* https://issues.couchbase.com/browse/CBL-4291[CBL-4291 - Fixed crash in createUserAgentHeader on Android] - -* https://issues.couchbase.com/browse/CBL-4348[CBL-4348 - Fixed missing nullable marks in CBLReplicatorConfiguration's property encryption callbacks] - -// Litecore enhancements - -* https://issues.couchbase.com/browse/CBL-5336[CBL-5336 - Over the bound of FLDicIterator should be banned] - -* https://issues.couchbase.com/browse/CBL-5335[CBL-5335 - array_agg seem to fail under some circumstances] - -* https://issues.couchbase.com/browse/CBL-5332[CBL-5332 - Crash during document expiration] - -* https://issues.couchbase.com/browse/CBL-5307[CBL-5307 - Updating remote revision when pulling the existing revision] - -* https://issues.couchbase.com/browse/CBL-5044[CBL-5044 - Don't capture backtrace for OutOfRange error FLDictIterator_Next] - -* https://issues.couchbase.com/browse/CBL-5033[CBL-5033 - Puller revoked docs should queue with other revs] - -* https://issues.couchbase.com/browse/CBL-5020[CBL-5020 - Fixed cannot read digest file: /libs/macos/aarch64/lib/libLiteCoreJNI.dylib.MD5 exception] - -* https://issues.couchbase.com/browse/CBL-5449[CBL-5449 - Port - Attachments flag is dropped when applying delta to incoming rev] - -* https://issues.couchbase.com/browse/CBL-4536[CBL-4536 - Error when saving documents with LiteCore error 17: must be called during a transaction] - -* https://issues.couchbase.com/browse/CBL-4506[CBL-4506 - Investigate Replicator starts up slow for big database] - -* https://issues.couchbase.com/browse/CBL-4499[CBL-4499 - Replicator may get stuck when there is an error of "Invalid delta"] - -* https://issues.couchbase.com/browse/CBL-4493[CBL-4493 - Couchbase Lite C - Flutter plugin (dart language bindings) replication not resuming when internet reconnected] - -* https://issues.couchbase.com/browse/CBL-4802[CBL-4802 - Websocket implementation unable to handle continuation fragments] - -* https://issues.couchbase.com/browse/CBL-4801[CBL-4801 - Open an old db is slow in V3.1 first time] - -* https://issues.couchbase.com/browse/CBL-4390[CBL-4390 - The URL Scheme the HTTP Message is incorrect when using proxy] - -* https://issues.couchbase.com/browse/CBL-4247[CBL-4247 - Replicator binary logs with collections cannot be decoded] - -* https://issues.couchbase.com/browse/CBL-4245[CBL-4245 - Update sockcpp to cbl-3663] - -* https://issues.couchbase.com/browse/CBL-4600[CBL-4600 - Doc update c4repl_start] - -* https://issues.couchbase.com/browse/CBL-4568[CBL-4568 - URLEndpointListener.getURLs returns an empty list on Android v>=11] - -* https://issues.couchbase.com/browse/CBL-4334[CBL-4334 - Data getting corrupted during collection replication] - -* https://issues.couchbase.com/browse/CBL-4326[CBL-4326 - Opening the upgraded database from 2.8 to 3.0.2 is slow] - -* https://issues.couchbase.com/browse/CBL-4413[CBL-4413 - Compaction could cause "database is locked" error when the replicator attempts to save its checkpoint at the same time] - -* https://issues.couchbase.com/browse/CBL-4391[CBL-4391 - Stop replicator could cause 'database is locked' error when saving a document] - -* https://issues.couchbase.com/browse/CBL-4913[CBL-4913 - Regression in pull of blobs/legacy attachment handling] - -* https://issues.couchbase.com/browse/CBL-4547[CBL-4547 - Allow DictKeys to cache shared keys from query results] - -* https://issues.couchbase.com/browse/CBL-4750[CBL-4750 - c4queryenum_next crashes with FTS] - -* https://issues.couchbase.com/browse/CBL-4639[CBL-4639 - Use FTS match() in the WHERE clause of LEFT OUTER JOINS Not Returning Correct Result] - -* https://issues.couchbase.com/browse/CBL-4838[CBL-4838 - Attachments/Blobs got deleted after compaction&re-sync] - -* https://issues.couchbase.com/browse/CBL-4470[CBL-4470 - FLTimestamp_ToString() could return a slice with a wrong size] - -* https://issues.couchbase.com/browse/CBL-4424[Uninitialized struct] - -* https://issues.couchbase.com/browse/CBL-3836[CBL-3836 - Corrupt Revision Data error when saving documents] - -=== Known Issues - -None for this release - -=== Deprecations - -* https://issues.couchbase.com/browse/CBL-5491[CBL-5491 - Default's `MAX_ATTEMPT_WAIT_TIME` and `USE_PLAIN_TEXT` are deprecated] - -* https://issues.couchbase.com/browse/CBL-4316[CBL-4316 - Replicator's `getPendingDocumentIds()` and `isDocumentPending(String id)` are deprecated] - -* https://issues.couchbase.com/browse/CBL-4315[CBL-4315 - ReplicatorConfiguration's filters and conflict resolver properties are deprecated] - -* https://issues.couchbase.com/browse/CBL-4314[CBL-4314 - ReplicatorConfiguration APIs with Database object are deprecated ] - -* https://issues.couchbase.com/browse/CBL-4306[CBL-4306 - DatabaseChange and DatabaseChangeListener are deprecated] - -* https://issues.couchbase.com/browse/CBL-4304[CBL-4304 - Database's Document APIs are deprecated] - -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0 Beta 3, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] diff --git a/modules/c/partials/release-notes/couchbase-mobile-c-release-note.3.2.0.adoc b/modules/c/partials/release-notes/couchbase-mobile-c-release-note.3.2.0.adoc deleted file mode 100644 index 584263bc0..000000000 --- a/modules/c/partials/release-notes/couchbase-mobile-c-release-note.3.2.0.adoc +++ /dev/null @@ -1,146 +0,0 @@ -[#maint-3-2-0] -== 3.2.0 -- August 2024 - -Version 3.2.0 for {param-title} delivers the following features and enhancements: - -=== Downgrade Support - -Downgrades from 3.2.x to any other version of Couchbase Lite are not supported. - -=== Enhancements - -// Lite Core begin - -* https://issues.couchbase.com/browse/CBL-5287[CBL-5287 - Enable Prediction Function in SQL++] - -* https://issues.couchbase.com/browse/CBL-5634[CBL-5634 - NoRev enhancement with Replacement Rev in pull replication] - -* https://issues.couchbase.com/browse/CBL-5687[CBL-5687 - Update replication protocol doc per ReplacementRev changes] - -* https://issues.couchbase.com/browse/CBL-4412[CBL-4412 - Enhance checkpoint resolution algorithm when local and remote checkpoint are mismatched] - -* https://issues.couchbase.com/browse/CBL-5346[CBL-5346 - Logging Replicator reasons of state change] - -* https://issues.couchbase.com/browse/CBL-283[CBL-283 - Support Date Format other than ISO 8601 in SQL++] - -* https://issues.couchbase.com/browse/CBL-68[CBL-68 - DATE_DIFF_MILLIS(date1, date2, part)] - -* https://issues.couchbase.com/browse/CBL-67[CBL-67 - DATE_ADD_STR(date1, n, part)] - -* https://issues.couchbase.com/browse/CBL-66[CBL-66 - DATE_ADD_MILLIS(date1, n, part)] - -* https://issues.couchbase.com/browse/CBL-65[CBL-65 - MILLIS_TO_UTC(date1 [, fmt])] - -* https://issues.couchbase.com/browse/CBL-64[CBL-64 - MILLIS_TO_TZ(date1, tz [, fmt])] - -* https://issues.couchbase.com/browse/CBL-62[CBL-62 - STR_TO_TZ(date1, tz)] - -* https://issues.couchbase.com/browse/CBL-61[CBL-61 - MILLIS_TO_STR(date1 [, fmt ])] - -* https://issues.couchbase.com/browse/CBL-60[CBL-60 - DATE_DIFF_STR(date1, date2, part)] - -// Lite Core end - -* https://issues.couchbase.com/browse/CBL-5266[CBL-5266 - Include Privacy Manifest in the released library] - -* https://issues.couchbase.com/browse/CBL-5208[CBL-5208 - Implement Collection's database property] - -* https://issues.couchbase.com/browse/CBL-5202[CBL-5202 - Implementation Collection's full-name property] - -* https://issues.couchbase.com/browse/CBL-5380[CBL-5380 - Update iOS Target Version to 12] - -=== Issues and Resolutions - -// Lite Core begin - -* https://issues.couchbase.com/browse/CBL-3846[CBL-3846 - Fixed corrupt Revision Data error when saving documents] - -* https://issues.couchbase.com/browse/CBL-4247[CBL-4247 - Fixed Replicator binary logs with collections cannot be decoded] - -* https://issues.couchbase.com/browse/CBL-4326[CBL-4326 - Fixed opening the upgraded database from 2.8 to 3.0.2 is slow] - -* https://issues.couchbase.com/browse/CBL-4334[CBL-4334 - Fixed Data getting corrupted during collection replication] - -* https://issues.couchbase.com/browse/CBL-4390[CBL-4390 - Fixed The URL Scheme the HTTP Message is incorrect when using proxy] - -* https://issues.couchbase.com/browse/CBL-4391[CBL-4391 - Fixed Stop replicator could cause 'database is locked' error when saving a document] - -* https://issues.couchbase.com/browse/CBL-4413[CBL-4413 - Fixed Compaction could cause "database is locked" error when the replicator attempts to save its checkpoint at the same time] - -* https://issues.couchbase.com/browse/CBL-4470[CBL-4470 - Fixed FLTimestamp_ToString() could return a slice with a wrong size] - -* https://issues.couchbase.com/browse/CBL-4493[CBL-4493 - Fixed Couchbase Lite C - Flutter plugin (dart language bindings) replication not resuming when internet reconnected] - -* https://issues.couchbase.com/browse/CBL-4499[CBL-4499 - Fixed Replicator may get stuck when there is an error of "Invalid delta"] - -* https://issues.couchbase.com/browse/CBL-4506[CBL-4506 - Fixed Replicator starts up slow for big database] - -* https://issues.couchbase.com/browse/CBL-4536[CBL-4536 - Fixed error when saving documents with LiteCore error 17: must be called during a transaction] - -* https://issues.couchbase.com/browse/CBL-4547[CBL-4547 - Allow DictKeys to cache shared keys from query results] - -* https://issues.couchbase.com/browse/CBL-4568[CBL-4568 - Fixed URLEndpointListener.getURLs returns an empty list on Android v>=11] - -* https://issues.couchbase.com/browse/CBL-4639[CBL-4639 - Use FTS match() in the WHERE clause of LEFT OUTER JOINS Not Returning Correct Result] - -* https://issues.couchbase.com/browse/CBL-4750[CBL-4750 - Fixed c4queryenum_next crashes with FTS] - -* https://issues.couchbase.com/browse/CBL-4801[CBL-4801 - Fixed opening an old db is slow in V3.1 the first time] - -* https://issues.couchbase.com/browse/CBL-4802[CBL-4802 - Fixed websocket implementation unable to handle continuation fragments] - -* https://issues.couchbase.com/browse/CBL-4838[CBL-4838 - Fixed Attachments/Blobs got deleted after compaction&re-sync] - -* https://issues.couchbase.com/browse/CBL-4913[CBL-4913 - Fixed regression in pull of blobs/legacy attachment handling] - -* https://issues.couchbase.com/browse/CBL-5082[CBL-5082 - Fixed crash in setting Housekeeper::_doExpiration()] - -* https://issues.couchbase.com/browse/CBL-5033[CBL-5033 - Fixed Puller revoked docs should queue with other revs] - -* https://issues.couchbase.com/browse/CBL-5044[CBL-5044 - Don't capture backtrace for OutOfRange error FLDictIterator_Next] - -* https://issues.couchbase.com/browse/CBL-5307[CBL-5307 - Correctly updating remote revision when pulling the existing revision] - -* https://issues.couchbase.com/browse/CBL-5332[CBL-5332 - Fixed crash during document expiration] - -* https://issues.couchbase.com/browse/CBL-5335[CBL-5335 - Fixed array_agg failures] - -* https://issues.couchbase.com/browse/CBL-5336[CBL-5336 - Over the bound of FLDicIterator should be banned] - -* https://issues.couchbase.com/browse/CBL-5377[CBL-5377 - Fixed MILLIS_TO_STRING is returning UTC instead of local time zone] - -* https://issues.couchbase.com/browse/CBL-5449[CBL-5449 - Fixed Attachments flag is dropped when applying delta to incoming rev] - -* https://issues.couchbase.com/browse/CBL-5515[CBL-5515 - Fixed Result alias can't be used elsewhere in query] - -* https://issues.couchbase.com/browse/CBL-5540[CBL-5540 - Fixed pthread_mutex_lock called on a destroyed mutex] - -* https://issues.couchbase.com/browse/CBL-5587[CBL-5587 - Fixed Remote rev KeepBody flag could be cleared accidentally] - -* https://issues.couchbase.com/browse/CBL-5589[CBL-5589 - Fixed N1QL Parser has exponential slowdown for redundant parentheses] - -* https://issues.couchbase.com/browse/CBL-5646[CBL-5646 - Fixed Null dereference crash in gotHTTPResponse] - -* https://issues.couchbase.com/browse/CBL-5724[CBL-5724 - Fixed Replicator syncs from beginning when using prebuilt dbs synced from SG] - -// Lite Core end - -* https://issues.couchbase.com/browse/CBL-4291[CBL-4291 - Fixed crash in createUserAgentHeader on Android] - -* https://issues.couchbase.com/browse/CBL-4282[CBL-4282 - Fixed fleece headers listed in iOS framework module map files are not correct] - -* https://issues.couchbase.com/browse/CBL-4248[CBL-4248 - Fixed UserAgent contains some extra / debug string] - -* https://issues.couchbase.com/browse/CBL-5666[CBL-5666 - Fixed Invalidated context may be used in query observer callback] - -* https://issues.couchbase.com/browse/CBL-4348[CBL-4348 - Fixed missing nullable marks in CBLReplicatorConfiguration's property encryption callbacks] - -=== Known Issues - -None for this release - -=== Deprecations - -No new deprecations for GA release - -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] diff --git a/modules/c/partials/release-notes/couchbase-mobile-c-release-note.3.2.1.adoc b/modules/c/partials/release-notes/couchbase-mobile-c-release-note.3.2.1.adoc deleted file mode 100644 index 9327656db..000000000 --- a/modules/c/partials/release-notes/couchbase-mobile-c-release-note.3.2.1.adoc +++ /dev/null @@ -1,36 +0,0 @@ -[#maint-3-2-1] -== 3.2.1 -- November 2024 - -Version 3.2.1 for {param-title} delivers the following features and enhancements: - -=== Enhancements - -// Lite Core begin - -* https://jira.issues.couchbase.com/browse/CBL-5169[CBL-5169 - Support for Unnest Query and Array Index] - -* https://jira.issues.couchbase.com/browse/CBL-6303[CBL-6303 - Add ability to disable mmap usage] - -// Lite Core end - -=== Issues and Resolutions - -// Lite Core begin - -* https://jira.issues.couchbase.com/browse/CBL-6131[CBL-6131 - Fixed race creating the expiration column in a collection table] - -* https://jira.issues.couchbase.com/browse/CBL-6245[CBL-6245 - Fixed query parser regression related to brackets] - -* https://jira.issues.couchbase.com/browse/CBL-6378[CBL-6378 - Crash when calling onWebSocketGotTLSCertificate callback after the connection is closed] - -// Lite Core end - -=== Known Issues - -None for this release - -=== Deprecations - -No new deprecations for GA release - -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] diff --git a/modules/c/partials/release-notes/couchbase-mobile-c-release-note.3.2.2.adoc b/modules/c/partials/release-notes/couchbase-mobile-c-release-note.3.2.2.adoc deleted file mode 100644 index 80a4c8130..000000000 --- a/modules/c/partials/release-notes/couchbase-mobile-c-release-note.3.2.2.adoc +++ /dev/null @@ -1,35 +0,0 @@ -[#maint-3-2-2] -== 3.2.2 -- March 2025 - -Version 3.2.2 for {param-title} delivers the following features and enhancements: - -=== Enhancements - -* https://jira.issues.couchbase.com/browse/CBL-5185[CBL-5185 - Support for Partial Indexes in Value and Full-Text Indexes] - -* https://jira.issues.couchbase.com/browse/CBL-6451[CBL-6451 - LogSink API for Configuring Couchbase Lite Logging] - -=== Issues and Resolutions - -// Lite Core begin - -* https://jira.issues.couchbase.com/browse/CBL-6534[CBL-6534 - No Such Table Error When Upgrading from 3.1.9 to 3.2.1] - -* https://jira.issues.couchbase.com/browse/CBL-6822[CBL-6822 - Replicator may hang while stopping the housekeeper task during stop] - -// Lite Core end - -* https://jira.issues.couchbase.com/browse/CBL-6669[CBL-6669 - CBLArrayIndexConfiguration.path requires null terminated char] - -* https://jira.issues.couchbase.com/browse/CBL-6678[CBL-6678 - Log directory is not automatically created] - - -=== Known Issues - -None for this release - -=== Deprecations - -* https://jira.issues.couchbase.com/browse/CBL-6679[CBL-6679 - Deprecated: Database.log API for Configuring Couchbase Lite Logging — Use LogSink API Instead] - -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] diff --git a/modules/c/partials/release-notes/couchbase-mobile-c-release-note.3.2.3.adoc b/modules/c/partials/release-notes/couchbase-mobile-c-release-note.3.2.3.adoc deleted file mode 100644 index fbf3016d0..000000000 --- a/modules/c/partials/release-notes/couchbase-mobile-c-release-note.3.2.3.adoc +++ /dev/null @@ -1,24 +0,0 @@ -[#maint-3-2-3] -== 3.2.3 -- April 2025 - -Version 3.2.3 for {param-title} delivers the following features and enhancements: - -=== Enhancements - -* https://jira.issues.couchbase.com/browse/CBL-6953[CBL-6953 -- Support Android with 16 KB page size] - -* https://jira.issues.couchbase.com/browse/CBL-6817[CBL-6817 -- Allow the document from the same collection but different collection instance to be saved or deleted] - -=== Issues and Resolutions - -include::ROOT:partial$release-notes/couchbase-mobile-litecore-release-note.3.2.3.adoc[tags=fixes] - -=== Known Issues - -* https://jira.issues.couchbase.com/browse/CBL-6951[CBL-6951 -- Cannot create URLEndpoint with database name containing dot] - -=== Deprecations - -None for this release - -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] diff --git a/modules/c/partials/release-notes/couchbase-mobile-c-release-note.3.3.0.adoc b/modules/c/partials/release-notes/couchbase-mobile-c-release-note.3.3.0.adoc new file mode 100644 index 000000000..8d206b623 --- /dev/null +++ b/modules/c/partials/release-notes/couchbase-mobile-c-release-note.3.3.0.adoc @@ -0,0 +1,32 @@ +[#maint-3-3-0] +== 3.3.0 -- September 2025 + +Version 3.3.0 for {param-title} delivers the following features and enhancements: + +=== Downgrade Support + +Downgrades from 3.3.x to any other version of Couchbase Lite are not supported. + +=== Enhancements + +// Lite Core begin + + +// Lite Core end + +=== Issues and Resolutions + +// Lite Core begin + +// Lite Core end + + +=== Known Issues + +None for this release + +=== Deprecations + +No new deprecations for GA release + +NOTE: For an overview of the latest features offered in Couchbase Lite 3.3.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.3] diff --git a/modules/c/partials/release-notes/couchbase-mobile-c-release-note.4.0.0.adoc b/modules/c/partials/release-notes/couchbase-mobile-c-release-note.4.0.0.adoc new file mode 100644 index 000000000..efe5e3f7b --- /dev/null +++ b/modules/c/partials/release-notes/couchbase-mobile-c-release-note.4.0.0.adoc @@ -0,0 +1,53 @@ +[#maint-4-0-0] +== 4.0.0 -- Q1 2025 + +Version 4.0.0 for {param-title} delivers the following features and enhancements: + +== Couchbase Lite Release Notes + +=== Downgrade Support + +Downgrades from 4.0 to earlier versions of Couchbase Lite are not supported. + +=== Enhancements + +// Lite Core begin + +NOTE: TODO + +* https://issues.couchbase.com/browse/CBL-5287[CBL-5287 - Enable Prediction Function in SQL++] + +// Lite Core end + +NOTE: TODO + +* https://issues.couchbase.com/browse/CBL-5213[CBL-5213 - Implement Proxy Authenticator API for Android / Java] + +=== Issues and Resolutions + +// Lite Core begin + +NOTE: TODO + +* https://issues.couchbase.com/browse/CBL-3846[CBL-3846 - Fixed corrupt Revision Data error when saving documents] + + +// Lite Core end + +NOTE: TODO + +* https://issues.couchbase.com/browse/CBL-5225[CBL-5225 - Fixed ReplicatedDocument getters do not comply with the spec] + +=== Known Issues + +NOTE: TODO + +None for this release + +=== Deprecations + +NOTE: TODO + +No new deprecations for GA release + +NOTE: For an overview of the latest features offered in Couchbase Lite 4.0.0, see xref:ROOT:cbl-whatsnew.adoc[New in 4.0] diff --git a/modules/c/partials/release-notes/couchbase-mobile-c-vs-release-note.1.0.0-beta.adoc b/modules/c/partials/release-notes/couchbase-mobile-c-vs-release-note.1.0.0-beta.adoc index 8f6286c67..1d3b409ee 100644 --- a/modules/c/partials/release-notes/couchbase-mobile-c-vs-release-note.1.0.0-beta.adoc +++ b/modules/c/partials/release-notes/couchbase-mobile-c-vs-release-note.1.0.0-beta.adoc @@ -19,4 +19,4 @@ None for this release None for this release -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] +NOTE: For an overview of the latest features offered in Couchbase Lite 4.0.0, see xref:ROOT:cbl-whatsnew.adoc[New in 4.0] diff --git a/modules/csharp/pages/compatibility.adoc b/modules/csharp/pages/compatibility.adoc index 80e426fe5..20548ced6 100644 --- a/modules/csharp/pages/compatibility.adoc +++ b/modules/csharp/pages/compatibility.adoc @@ -22,11 +22,11 @@ Related Content -- xref:cbl-whatsnew.adoc[What's New] | xref:csharp:releasenot The table below summarizes the compatible versions of Couchbase Lite with Sync Gateway. .Sync Gateway and Couchbase Lite Compatibility Matrix -[cols="3,^1,^1,^1,^1,^1,^1,^1"] +[cols="3,^1,^1,^1,^1,^1,^1,^1,^1"] |=== .2+^.>| Sync Gateway Versions ↓ -7+| Couchbase Lite → +8+| Couchbase Lite → ^| 1.4 *footnote:eos-cbl[This Couchbase Lite version is End of Support]]* ^| 2.0 @@ -35,6 +35,7 @@ The table below summarizes the compatible versions of Couchbase Lite with Sync G ^| 3.0.0 ^| 3.1.0 ^| 3.2.0 +^| 3.3.0 | 1.4 *footnote:eos-sgw[This Sync Gateway version is End of Support]* and 1.5 *footnote:eol-sgw[This Sync Gateway version is End of Life]* | image:ROOT:yes.png[] @@ -44,6 +45,7 @@ The table below summarizes the compatible versions of Couchbase Lite with Sync G | image:ROOT:no.png[] | image:ROOT:no.png[] | image:ROOT:no.png[] +| image:ROOT:no.png[] | 2.0 and 2.1 | image:ROOT:yes.png[] @@ -53,6 +55,7 @@ The table below summarizes the compatible versions of Couchbase Lite with Sync G | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] | 2.5 to 2.8 + with delta sync disabled @@ -63,6 +66,7 @@ with delta sync disabled | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] | 2.5 to 2.8 + with delta sync enabled @@ -73,6 +77,7 @@ with delta sync enabled | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] | 3.0.0 | image:ROOT:no.png[] @@ -82,6 +87,7 @@ with delta sync enabled | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] | 3.1.0 | image:ROOT:no.png[] @@ -91,6 +97,7 @@ with delta sync enabled | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] | 3.2.0 | image:ROOT:no.png[] @@ -100,6 +107,7 @@ with delta sync enabled | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] |=== @@ -109,7 +117,7 @@ with delta sync enabled The table below summarizes the Operating System SDK versions supported by Couchbase Lite. .OS -- SDK Support -[cols="1,^1,^1,^1,^1,^1,^1,^1,^1,^1"] +[cols="1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1"] |=== @@ -123,6 +131,7 @@ The table below summarizes the Operating System SDK versions supported by Couchb ^.>h| 3.0 ^.>h| 3.1 ^.>h| 3.2 +^.>h| 3.3 h| Android | https://docs-archive.couchbase.com/home/index.html[archive link] @@ -133,7 +142,8 @@ h| Android | xref:2.8@couchbase-lite:android:supported-os.adoc[link] | xref:3.0@couchbase-lite:android:supported-os.adoc[link] | xref:3.1@couchbase-lite:android:supported-os.adoc[link] -| https://docs.couchbase.com/couchbase-lite/current/android/supported-os.html[link] +| xref:3.2@couchbase-lite:android:supported-os.adoc[link] +| xref:3.3@couchbase-lite:android:supported-os.adoc[link] h| C | - @@ -144,7 +154,8 @@ h| C | - | xref:3.0@couchbase-lite:c:supported-os.adoc[link] | xref:3.1@couchbase-lite:c:supported-os.adoc[link] -| https://docs.couchbase.com/couchbase-lite/current/c/supported-os.html[link] +| xref:3.2@couchbase-lite:c:supported-os.adoc[link] +| xref:3.3@couchbase-lite:c:supported-os.adoc[link] h| iOS | https://docs-archive.couchbase.com/home/index.html[archive link] @@ -155,7 +166,8 @@ h| iOS | xref:2.8@couchbase-lite:swift:supported-os.adoc[link] | xref:3.0@couchbase-lite:swift:supported-os.adoc[link] | xref:3.1@couchbase-lite:swift:supported-os.adoc[link] -| https://docs.couchbase.com/couchbase-lite/current/swift/supported-os.html[link] +| xref:3.2@couchbase-lite:swift:supported-os.adoc[link] +| xref:3.3@couchbase-lite:swift:supported-os.adoc[link] h| Java @@ -167,7 +179,8 @@ h| Java | xref:2.8@couchbase-lite:java:supported-os.adoc[link] | xref:3.0@couchbase-lite:java:supported-os.adoc[link] | xref:3.1@couchbase-lite:java:supported-os.adoc[link] -| https://docs.couchbase.com/couchbase-lite/current/java/supported-os.html[link] +| xref:3.2@couchbase-lite:java:supported-os.adoc[link] +| xref:3.3@couchbase-lite:java:supported-os.adoc[link] h| Javascript | - @@ -179,6 +192,7 @@ h| Javascript | xref:3.0@couchbase-lite:ROOT:javascript.adoc[link] | xref:3.1@couchbase-lite:ROOT:javascript.adoc[link] | xref:3.2@couchbase-lite:ROOT:javascript.adoc[link] +| xref:3.3@couchbase-lite:ROOT:javascript.adoc[link] h| .NET | https://docs-archive.couchbase.com/home/index.html[archive link] @@ -189,7 +203,8 @@ h| .NET | xref:2.8@couchbase-lite:csharp:supported-os.adoc[link] | xref:3.0@couchbase-lite:csharp:supported-os.adoc[link] | xref:3.1@couchbase-lite:csharp:supported-os.adoc[link] -| https://docs.couchbase.com/couchbase-lite/current/csharp/supported-os.html[link] +| xref:3.2@couchbase-lite:csharp:supported-os.adoc[link] +| xref:3.3@couchbase-lite:csharp:supported-os.adoc[link] |=== diff --git a/modules/csharp/pages/indexing.adoc b/modules/csharp/pages/indexing.adoc index 20f9d7a0d..df28523b6 100644 --- a/modules/csharp/pages/indexing.adoc +++ b/modules/csharp/pages/indexing.adoc @@ -111,7 +111,7 @@ include::csharp:example$code_snippets/Program.cs[tags="query-index_Querybuilder" [#partial-index] == Partial Index -Couchbase Lite 3.2.2 introduces support for Partial Index - Partial Value and Partial Full-Text Indexes. +Couchbase Lite 3.2.2 introduced support for Partial Index - Partial Value and Partial Full-Text Indexes. The Partial Index can create a smaller index, potentially improving index and query performance. You can use Partial Index to specify a `WHERE` clause in your index configuration. If a where clause is specified, the database will index a document only when the where clause condition is met. @@ -186,7 +186,7 @@ include::csharp:example$code_snippets/Program.cs[tags=partial-full-text-index] [#array-indexing] == Array Indexing -Couchbase Lite 3.2.1 introduces functionality to optimize querying arrays. +Couchbase Lite 3.2.1 introduced functionality to optimize querying arrays. xref:csharp:query-n1ql-mobile.adoc#lbl-unnest[Array `UNNEST`] to unpack arrays within a document to allow joins with the parent object, and array indexes for indexing unnested array's values to allow more efficient queries with `UNNEST`. [#the-array-index] @@ -315,7 +315,7 @@ include::csharp:example$code_snippets/Program.cs[tags=array-index-nested] The above snippet creates an array index to allow you to iterate through `contacts[].phones[].type` in the document, namely `"home"` and `"mobile"`. -IMPORTANT: Array literals are not supported in CBL 3.2.1. +IMPORTANT: Array literals are not supported in CBL 3.3.0. Attempting to create a query with array literals will return an error. diff --git a/modules/csharp/pages/new-logging-api.adoc b/modules/csharp/pages/new-logging-api.adoc index 0c730ca46..c633a0540 100644 --- a/modules/csharp/pages/new-logging-api.adoc +++ b/modules/csharp/pages/new-logging-api.adoc @@ -4,7 +4,7 @@ :page-edition: :page-aliases: :page-role: -:description: Couchbase Lite 3.2.2 introduces a new Logging API. +:description: A new Logging API. :keywords: edge mobile api java kotlin android apple logging file console custom [abstract] @@ -30,7 +30,7 @@ For information about the now deprecated earlier version of the Logging API, see [#logsinks] == LogSinks -Couchbase Lite 3.2.2 introduces a new Logging API. +Couchbase Lite 3.2.2 introduced a new Logging API. The new Logging API has the following benefits: * Log sinks are now thread safe, removing risk of inconsistent states during initialization. diff --git a/modules/csharp/pages/query-n1ql-mobile.adoc b/modules/csharp/pages/query-n1ql-mobile.adoc index cb82e8e70..1501d7787 100644 --- a/modules/csharp/pages/query-n1ql-mobile.adoc +++ b/modules/csharp/pages/query-n1ql-mobile.adoc @@ -439,7 +439,7 @@ The query above will then produce the following output: The output demonstrates retrieval of both primary and secondary contact numbers listed as type `"mobile"`. -IMPORTANT: Array literals are not supported in CBL 3.2.1. +IMPORTANT: Array literals are not supported in CBL 3.3.0. Attempting to create a query with array literals will return an error. [#lbl-where] diff --git a/modules/csharp/pages/releasenotes.adoc b/modules/csharp/pages/releasenotes.adoc index 66bfa86b9..1953e7a53 100644 --- a/modules/csharp/pages/releasenotes.adoc +++ b/modules/csharp/pages/releasenotes.adoc @@ -8,14 +8,4 @@ ifdef::prerelease[:page-status: {prerelease}] :param-title: C#.Net [#maint-latest] -include::partial$release-notes/couchbase-mobile-csharp-release-note.3.2.4.adoc[] - -include::partial$release-notes/couchbase-mobile-csharp-release-note.3.2.3.adoc[] - -include::partial$release-notes/couchbase-mobile-csharp-release-note.3.2.2.adoc[] - -include::partial$release-notes/couchbase-mobile-csharp-release-note.3.2.1.adoc[] - -include::partial$release-notes/couchbase-mobile-csharp-release-note.3.2.0.adoc[] - -include::partial$release-notes/couchbase-mobile-csharp-release-note.3.2.0-beta.adoc[] +include::partial$release-notes/couchbase-mobile-csharp-release-note.4.0.0.adoc[] diff --git a/modules/csharp/pages/upgrade.adoc b/modules/csharp/pages/upgrade.adoc index 082e1d7a1..33ad52c6e 100644 --- a/modules/csharp/pages/upgrade.adoc +++ b/modules/csharp/pages/upgrade.adoc @@ -15,7 +15,7 @@ On upgrading from a 2.x release, all Couchbase Lite databases will be automatica This can result in a delay before the database is usable. -- -[#3-2-3-upgrade] +[#3-3-0-upgrade] == {major}.{minor}.{base}{empty} Upgrade The action will take place automatically and can lead to some delay in the database becoming available for use in your application. @@ -33,7 +33,7 @@ This is a one-way conversion. This content introduces the changes made to the Couchbase{nbsp}Lite for C#.Net API for release {major}.{minor}.{base}{empty}. -Starting from this release Couchbase{nbsp}Lite for C#.Net requires _Visual Studio 2019+_ and uses .Net Core 3.1 (updating from .Net Core 2.0). +// Starting from 3.2 Couchbase{nbsp}Lite for C#.Net requires _Visual Studio 2019+_ and uses .Net Core 3.1 (updating from .Net Core 2.0). [#breaking-change] ==== Breaking Change diff --git a/modules/csharp/partials/release-notes/couchbase-mobile-csharp-release-note.3.2.0-beta.adoc b/modules/csharp/partials/release-notes/couchbase-mobile-csharp-release-note.3.2.0-beta.adoc deleted file mode 100644 index ac8d29e71..000000000 --- a/modules/csharp/partials/release-notes/couchbase-mobile-csharp-release-note.3.2.0-beta.adoc +++ /dev/null @@ -1,158 +0,0 @@ -[#maint-3-2-0-beta-2] -== 3.2.0 Beta 2 -- August 2024 - -Version 3.2.0 Beta 2 for {param-title} delivers the following features and enhancements: - -=== Enhancements - -* https://issues.couchbase.com/browse/CBL-5210[CBL-5210 - Implement Collection's database property] - -* https://issues.couchbase.com/browse/CBL-5204[CBL-5241 - Implementation Collection's full-name property] - -* https://issues.couchbase.com/browse/CBL-5381[CBL-5381 - Update iOS Target Version to 12] - -* https://issues.couchbase.com/browse/CBL-5272[CBL-5272 - Ensure that c4queryobs_* functions are called under the database-exclusive lock] - -* https://issues.couchbase.com/browse/CBL-5267[CBL-5267 - Include Privacy Manifest in the released library] - -* https://issues.couchbase.com/browse/CBL-4483[CBL-4483 - Windows only code being called on .NET 6 non-Windows] - -* https://issues.couchbase.com/browse/CBL-1572[CBL-1572 - Update .Net 6 C# language to version 9.0] - -* https://issues.couchbase.com/browse/CBL-5346[CBL-5346 - Logging Replicator reasons of state change] - -* https://issues.couchbase.com/browse/CBL-5241[CBL-5241 - Upsert performance is degraded when the number of docs is increased] - -* https://issues.couchbase.com/browse/CBL-5379[CBL-5379 - Update iOS Target Version to 12] - -* https://issues.couchbase.com/browse/CBL-5287[CBL-5287 - Enable Prediction Function in SQL++ Parser] - -* https://issues.couchbase.com/browse/CBL-283[CBL-283 - Date Format other than ISO 8601] - -* https://issues.couchbase.com/browse/CBL-68[CBL-68 - DATE_DIFF_MILLIS(date1, date2, part)] - -* https://issues.couchbase.com/browse/CBL-67[CBL-67 - DATE_ADD_STR(date1, n, part)] - -* https://issues.couchbase.com/browse/CBL-66[CBL-66 - DATE_ADD_MILLIS(date1, n, part)] - -* https://issues.couchbase.com/browse/CBL-65[CBL-65 - MILLIS_TO_UTC(date1 [, fmt])] - -* https://issues.couchbase.com/browse/CBL-64[CBL-64 - MILLIS_TO_TZ(date1, tz [, fmt])] - -* https://issues.couchbase.com/browse/CBL-62[CBL-62 - STR_TO_TZ(date1, tz)] - -* https://issues.couchbase.com/browse/CBL-61[CBL-61 - MILLIS_TO_STR(date1 [, fmt ])] - -* https://issues.couchbase.com/browse/CBL-60[CBL-60 - DATE_DIFF_STR(date1, date2, part)] - -=== Issues and Resolutions - -* https://issues.couchbase.com/browse/CBL-4420[CBL-4420 - Fixed queries using DataSource.Collection never get added as active stoppables] - -* https://issues.couchbase.com/browse/CBL-4422[CBL-4422 - Fixed CollectionConfigurations not frozen after used in Replicator] - -* https://issues.couchbase.com/browse/CBL-4984[CBL-4984 - Remap Changes LiteCore Log Domain to Database Domain] - -* https://issues.couchbase.com/browse/CBL-4504[CBL-4504 - Add missing attributes to iOS proxy] - -* https://issues.couchbase.com/browse/CBL-4468[CBL-4468 - Fixed disposing one collection disposes all instances] - -* https://issues.couchbase.com/browse/CBL-5727[CBL-5727 - Fixed calling QueryBase.ColumnNames after dispose causes native crash] - -* https://issues.couchbase.com/browse/CBL-5336[CBL-5336 - Over the bound of FLDicIterator should be banned] - -* https://issues.couchbase.com/browse/CBL-5335[CBL-5335 - array_agg seem to fail under some circumstances] - -* https://issues.couchbase.com/browse/CBL-5332[CBL-5332 - Crash during document expiration] - -* https://issues.couchbase.com/browse/CBL-5307[CBL-5307 - Updating remote revision when pulling the existing revision] - -* https://issues.couchbase.com/browse/CBL-5044[CBL-5044 - Don't capture backtrace for OutOfRange error FLDictIterator_Next] - -* https://issues.couchbase.com/browse/CBL-5033[CBL-5033 - Puller revoked docs should queue with other revs] - -* https://issues.couchbase.com/browse/CBL-5020[CBL-5020 - Fixed cannot read digest file: /libs/macos/aarch64/lib/libLiteCoreJNI.dylib.MD5 exception] - -* https://issues.couchbase.com/browse/CBL-5449[CBL-5449 - Port - Attachments flag is dropped when applying delta to incoming rev] - -* https://issues.couchbase.com/browse/CBL-4536[CBL-4536 - Error when saving documents with LiteCore error 17: must be called during a transaction] - -* https://issues.couchbase.com/browse/CBL-4506[CBL-4506 - Investigate Replicator starts up slow for big database] - -* https://issues.couchbase.com/browse/CBL-4499[CBL-4499 - Replicator may get stuck when there is an error of "Invalid delta"] - -* https://issues.couchbase.com/browse/CBL-4493[CBL-4493 - Couchbase Lite C - Flutter plugin (dart language bindings) replication not resuming when internet reconnected] - -* https://issues.couchbase.com/browse/CBL-4802[CBL-4802 - Websocket implementation unable to handle continuation fragments] - -* https://issues.couchbase.com/browse/CBL-4801[CBL-4801 - Open an old db is slow in V3.1 first time] - -* https://issues.couchbase.com/browse/CBL-4390[CBL-4390 - The URL Scheme the HTTP Message is incorrect when using proxy] - -* https://issues.couchbase.com/browse/CBL-4247[CBL-4247 - Replicator binary logs with collections cannot be decoded] - -* https://issues.couchbase.com/browse/CBL-4245[CBL-4245 - Update sockcpp to cbl-3663] - -* https://issues.couchbase.com/browse/CBL-4600[CBL-4600 - Doc update c4repl_start] - -* https://issues.couchbase.com/browse/CBL-4568[CBL-4568 - URLEndpointListener.getURLs returns an empty list on Android v>=11] - -* https://issues.couchbase.com/browse/CBL-4334[CBL-4334 - Data getting corrupted during collection replication] - -* https://issues.couchbase.com/browse/CBL-4326[CBL-4326 - Opening the upgraded database from 2.8 to 3.0.2 is slow] - -* https://issues.couchbase.com/browse/CBL-4413[CBL-4413 - Compaction could cause "database is locked" error when the replicator attempts to save its checkpoint at the same time] - -* https://issues.couchbase.com/browse/CBL-4391[CBL-4391 - Stop replicator could cause 'database is locked' error when saving a document] - -* https://issues.couchbase.com/browse/CBL-4913[CBL-4913 - Regression in pull of blobs/legacy attachment handling] - -* https://issues.couchbase.com/browse/CBL-4547[CBL-4547 - Allow DictKeys to cache shared keys from query results] - -* https://issues.couchbase.com/browse/CBL-4750[CBL-4750 - c4queryenum_next crashes with FTS] - -* https://issues.couchbase.com/browse/CBL-4639[CBL-4639 - Use FTS match() in the WHERE clause of LEFT OUTER JOINS Not Returning Correct Result] - -* https://issues.couchbase.com/browse/CBL-4838[CBL-4838 - Attachments/Blobs got deleted after compaction&re-sync] - -* https://issues.couchbase.com/browse/CBL-4470[CBL-4470 - FLTimestamp_ToString() could return a slice with a wrong size] - -* https://issues.couchbase.com/browse/CBL-4424[Uninitialized struct] - -* https://issues.couchbase.com/browse/CBL-3836[CBL-3836 - Corrupt Revision Data error when saving documents] - -=== Known Issues - -None for this release - -=== Deprecations - -* https://issues.couchbase.com/browse/CBL-5491[CBL-5491 - Default's `MAX_ATTEMPT_WAIT_TIME` and `USE_PLAIN_TEXT` are deprecated] - -* https://issues.couchbase.com/browse/CBL-4316[CBL-4316 - Replicator's `getPendingDocumentIds()` and `isDocumentPending(String id)` are deprecated] - -* https://issues.couchbase.com/browse/CBL-4315[CBL-4315 - ReplicatorConfiguration's filters and conflict resolver properties are deprecated] - -* https://issues.couchbase.com/browse/CBL-4314[CBL-4314 - ReplicatorConfiguration APIs with Database object are deprecated ] - -* https://issues.couchbase.com/browse/CBL-4313[CBL-4313 - MessageEndpointListenerConfiguration APIs using Database object are deprecated] - -* https://issues.couchbase.com/browse/CBL-4312[CBL-4312 - URLEndpointListenerConfiguration APIs using Database object are deprecated] - -* https://issues.couchbase.com/browse/CBL-4311[CBL-4311 - QueryBuilder : `isNullOrMissing()` and `notNullOrMissing()` are deprecated] - -* https://issues.couchbase.com/browse/CBL-4310[CBL-4310 - QueryBuilder : FullTextFunction's `rank(String index)` and `match(String index, String query)` are deprecated] - -* https://issues.couchbase.com/browse/CBL-4309[CBL-4309 - QueryBuilder : DataSource's `database()` is deprecated] - -* https://issues.couchbase.com/browse/CBL-4307[CBL-4307 - DocumentChange's database property is deprecated] - -* https://issues.couchbase.com/browse/CBL-4306[CBL-4306 - DatabaseChange and DatabaseChangeListener are deprecated] - -* https://issues.couchbase.com/browse/CBL-4305[CBL-4305 - Database's removeChangeListener() is deprecated] - -* https://issues.couchbase.com/browse/CBL-4304[CBL-4304 - Database's Document APIs are deprecated] - -* https://issues.couchbase.com/browse/CBL-4320[CBL-4320 - UWP deprecated and Xamarin deprecated] - -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0 Beta 2, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] diff --git a/modules/csharp/partials/release-notes/couchbase-mobile-csharp-release-note.3.2.0.adoc b/modules/csharp/partials/release-notes/couchbase-mobile-csharp-release-note.3.2.0.adoc deleted file mode 100644 index a4e8acbc5..000000000 --- a/modules/csharp/partials/release-notes/couchbase-mobile-csharp-release-note.3.2.0.adoc +++ /dev/null @@ -1,162 +0,0 @@ -[#maint-3-2-0] -== 3.2.0 -- August 2024 - -Version 3.2.0 for {param-title} delivers the following features and enhancements: - -=== Downgrade Support - -Downgrades from 3.2.x to any other version of Couchbase Lite are not supported. - -=== Enhancements - -// Lite Core begin - -* https://issues.couchbase.com/browse/CBL-5287[CBL-5287 - Enable Prediction Function in SQL++] - -* https://issues.couchbase.com/browse/CBL-5634[CBL-5634 - NoRev enhancement with Replacement Rev in pull replication] - -* https://issues.couchbase.com/browse/CBL-5687[CBL-5687 - Update replication protocol doc per ReplacementRev changes] - -* https://issues.couchbase.com/browse/CBL-4412[CBL-4412 - Enhance checkpoint resolution algorithm when local and remote checkpoint are mismatched] - -* https://issues.couchbase.com/browse/CBL-5346[CBL-5346 - Logging Replicator reasons of state change] - -* https://issues.couchbase.com/browse/CBL-283[CBL-283 - Support Date Format other than ISO 8601 in SQL++] - -* https://issues.couchbase.com/browse/CBL-68[CBL-68 - DATE_DIFF_MILLIS(date1, date2, part)] - -* https://issues.couchbase.com/browse/CBL-67[CBL-67 - DATE_ADD_STR(date1, n, part)] - -* https://issues.couchbase.com/browse/CBL-66[CBL-66 - DATE_ADD_MILLIS(date1, n, part)] - -* https://issues.couchbase.com/browse/CBL-65[CBL-65 - MILLIS_TO_UTC(date1 [, fmt])] - -* https://issues.couchbase.com/browse/CBL-64[CBL-64 - MILLIS_TO_TZ(date1, tz [, fmt])] - -* https://issues.couchbase.com/browse/CBL-62[CBL-62 - STR_TO_TZ(date1, tz)] - -* https://issues.couchbase.com/browse/CBL-61[CBL-61 - MILLIS_TO_STR(date1 [, fmt ])] - -* https://issues.couchbase.com/browse/CBL-60[CBL-60 - DATE_DIFF_STR(date1, date2, part)] - -// Lite Core end - -* https://issues.couchbase.com/browse/CBL-5272[CBL-5272 - Ensure that c4queryobs_* functions are called under the database-exclusive lock] - -* https://issues.couchbase.com/browse/CBL-5267[CBL-5267 - Include Privacy Manifest in the released library] - -* https://issues.couchbase.com/browse/CBL-5210[CBL-5210 - Implement Collection's database property] - -* https://issues.couchbase.com/browse/CBL-5204[CBL-5204 - Implementation Collection's full-name property] - -* https://issues.couchbase.com/browse/CBL-4483[CBL-4483 - Windows only code no longer being called on .NET 6 non-Windows] - -* https://issues.couchbase.com/browse/CBL-5381[CBL-5381 - Update iOS Target Version to 12] - -* https://issues.couchbase.com/browse/CBL-1572[CBL-1572 - Update .Net 6 C# language to version 9.0] - -=== Issues and Resolutions - -// Lite Core begin - -* https://issues.couchbase.com/browse/CBL-3846[CBL-3846 - Fixed corrupt Revision Data error when saving documents] - -* https://issues.couchbase.com/browse/CBL-4247[CBL-4247 - Fixed Replicator binary logs with collections cannot be decoded] - -* https://issues.couchbase.com/browse/CBL-4326[CBL-4326 - Fixed opening the upgraded database from 2.8 to 3.0.2 is slow] - -* https://issues.couchbase.com/browse/CBL-4334[CBL-4334 - Fixed Data getting corrupted during collection replication] - -* https://issues.couchbase.com/browse/CBL-4390[CBL-4390 - Fixed The URL Scheme the HTTP Message is incorrect when using proxy] - -* https://issues.couchbase.com/browse/CBL-4391[CBL-4391 - Fixed Stop replicator could cause 'database is locked' error when saving a document] - -* https://issues.couchbase.com/browse/CBL-4413[CBL-4413 - Fixed Compaction could cause "database is locked" error when the replicator attempts to save its checkpoint at the same time] - -* https://issues.couchbase.com/browse/CBL-4470[CBL-4470 - Fixed FLTimestamp_ToString() could return a slice with a wrong size] - -* https://issues.couchbase.com/browse/CBL-4493[CBL-4493 - Fixed Couchbase Lite C - Flutter plugin (dart language bindings) replication not resuming when internet reconnected] - -* https://issues.couchbase.com/browse/CBL-4499[CBL-4499 - Fixed Replicator may get stuck when there is an error of "Invalid delta"] - -* https://issues.couchbase.com/browse/CBL-4506[CBL-4506 - Fixed Replicator starts up slow for big database] - -* https://issues.couchbase.com/browse/CBL-4536[CBL-4536 - Fixed error when saving documents with LiteCore error 17: must be called during a transaction] - -* https://issues.couchbase.com/browse/CBL-4547[CBL-4547 - Allow DictKeys to cache shared keys from query results] - -* https://issues.couchbase.com/browse/CBL-4568[CBL-4568 - Fixed URLEndpointListener.getURLs returns an empty list on Android v>=11] - -* https://issues.couchbase.com/browse/CBL-4639[CBL-4639 - Use FTS match() in the WHERE clause of LEFT OUTER JOINS Not Returning Correct Result] - -* https://issues.couchbase.com/browse/CBL-4750[CBL-4750 - Fixed c4queryenum_next crashes with FTS] - -* https://issues.couchbase.com/browse/CBL-4801[CBL-4801 - Fixed opening an old db is slow in V3.1 the first time] - -* https://issues.couchbase.com/browse/CBL-4802[CBL-4802 - Fixed websocket implementation unable to handle continuation fragments] - -* https://issues.couchbase.com/browse/CBL-4838[CBL-4838 - Fixed Attachments/Blobs got deleted after compaction&re-sync] - -* https://issues.couchbase.com/browse/CBL-4913[CBL-4913 - Fixed regression in pull of blobs/legacy attachment handling] - -* https://issues.couchbase.com/browse/CBL-5082[CBL-5082 - Fixed crash in setting Housekeeper::_doExpiration()] - -* https://issues.couchbase.com/browse/CBL-5033[CBL-5033 - Fixed Puller revoked docs should queue with other revs] - -* https://issues.couchbase.com/browse/CBL-5044[CBL-5044 - Don't capture backtrace for OutOfRange error FLDictIterator_Next] - -* https://issues.couchbase.com/browse/CBL-5307[CBL-5307 - Correctly updating remote revision when pulling the existing revision] - -* https://issues.couchbase.com/browse/CBL-5332[CBL-5332 - Fixed crash during document expiration] - -* https://issues.couchbase.com/browse/CBL-5335[CBL-5335 - Fixed array_agg failures] - -* https://issues.couchbase.com/browse/CBL-5336[CBL-5336 - Over the bound of FLDicIterator should be banned] - -* https://issues.couchbase.com/browse/CBL-5377[CBL-5377 - Fixed MILLIS_TO_STRING is returning UTC instead of local time zone] - -* https://issues.couchbase.com/browse/CBL-5449[CBL-5449 - Fixed Attachments flag is dropped when applying delta to incoming rev] - -* https://issues.couchbase.com/browse/CBL-5515[CBL-5515 - Fixed Result alias can't be used elsewhere in query] - -* https://issues.couchbase.com/browse/CBL-5540[CBL-5540 - Fixed pthread_mutex_lock called on a destroyed mutex] - -* https://issues.couchbase.com/browse/CBL-5587[CBL-5587 - Fixed Remote rev KeepBody flag could be cleared accidentally] - -* https://issues.couchbase.com/browse/CBL-5589[CBL-5589 - Fixed N1QL Parser has exponential slowdown for redundant parentheses] - -* https://issues.couchbase.com/browse/CBL-5646[CBL-5646 - Fixed Null dereference crash in gotHTTPResponse] - -* https://issues.couchbase.com/browse/CBL-5724[CBL-5724 - Fixed Replicator syncs from beginning when using prebuilt dbs synced from SG] - -// Lite Core end - -* https://issues.couchbase.com/browse/CBL-6129[CBL-6129 - Fixed queries using incorrect lock] - -* https://issues.couchbase.com/browse/CBL-5293[CBL-5293 - Fixed no bounds checking on C4KeyPair signature callback] - -* https://issues.couchbase.com/browse/CBL-5648[CBL-5648 - Fixed Context object for LiveQuerier never freed] - -* https://issues.couchbase.com/browse/CBL-5727[CBL-5727 - Fixed calling QueryBase.ColumnNames after dispose causes native crash] - -* https://issues.couchbase.com/browse/CBL-4468[CBL-4468 - Fixed disposing one collection disposes all instances] - -* https://issues.couchbase.com/browse/CBL-4422[CBL-4422 - Fixed CollectionConfigurations not frozen after used in Replicator] - -* https://issues.couchbase.com/browse/CBL-4420[CBL-4420 - Fixed queries using DataSource.Collection never get added as active stoppables] - -* https://issues.couchbase.com/browse/CBL-4504[CBL-4504 - Fixed iOS proxy is AOT unsafe, and thus unusable] - -* https://issues.couchbase.com/browse/CBL-4984[CBL-4984 - Remap Changes LiteCore Log Domain to Database Domain] - -* https://issues.couchbase.com/browse/CBL-5789[CBL-5789 - Fixed FLSliceResult leaked when exception thrown in Collection.Save()] - -=== Known Issues - -None for this release - -=== Deprecations - -No new deprecations for GA release - -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] diff --git a/modules/csharp/partials/release-notes/couchbase-mobile-csharp-release-note.3.2.1.adoc b/modules/csharp/partials/release-notes/couchbase-mobile-csharp-release-note.3.2.1.adoc deleted file mode 100644 index 62e6dfea6..000000000 --- a/modules/csharp/partials/release-notes/couchbase-mobile-csharp-release-note.3.2.1.adoc +++ /dev/null @@ -1,38 +0,0 @@ -[#maint-3-2-1] -== 3.2.1 -- November 2024 - -Version 3.2.1 for {param-title} delivers the following features and enhancements: - -=== Enhancements - -// Lite Core begin - -* https://jira.issues.couchbase.com/browse/CBL-5169[CBL-5169 - Support for Unnest Query and Array Index] - -* https://jira.issues.couchbase.com/browse/CBL-6303[CBL-6303 - Add ability to disable mmap usage] - -* https://jira.issues.couchbase.com/browse/CBL-6376[CBL-6376 - Implement replicator background awareness] - -// Lite Core end - -=== Issues and Resolutions - -// Lite Core begin - -* https://jira.issues.couchbase.com/browse/CBL-6131[CBL-6131 - Fixed race creating the expiration column in a collection table] - -* https://jira.issues.couchbase.com/browse/CBL-6245[CBL-6245 - Fixed query parser regression related to brackets] - -* https://jira.issues.couchbase.com/browse/CBL-6378[CBL-6378 - Crash when calling onWebSocketGotTLSCertificate callback after the connection is closed] - -// Lite Core end - -=== Known Issues - -* https://jira.issues.couchbase.com/browse/CBL-6539[CBL-6539 - ReplicatorConfiguration's AllowReplicatingInBackground behavior is reversed] - -=== Deprecations - -No new deprecations for GA release - -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] diff --git a/modules/csharp/partials/release-notes/couchbase-mobile-csharp-release-note.3.2.2.adoc b/modules/csharp/partials/release-notes/couchbase-mobile-csharp-release-note.3.2.2.adoc deleted file mode 100644 index b49b76f51..000000000 --- a/modules/csharp/partials/release-notes/couchbase-mobile-csharp-release-note.3.2.2.adoc +++ /dev/null @@ -1,34 +0,0 @@ -[#maint-3-2-2] -== 3.2.2 -- March 2025 - -Version 3.2.2 for {param-title} delivers the following features and enhancements: - -=== Enhancements - -* https://jira.issues.couchbase.com/browse/CBL-5185[CBL-5185 - Support for Partial Indexes in Value and Full-Text Indexes] - -* https://jira.issues.couchbase.com/browse/CBL-6451[CBL-6451 - LogSink API for Configuring Couchbase Lite Logging] - -=== Issues and Resolutions - -* https://jira.issues.couchbase.com/browse/CBL-6481[CBL-6481 - Unpackaged apps on net8.0-windows cannot create databases] - -// Lite Core begin - -* https://jira.issues.couchbase.com/browse/CBL-6534[CBL-6534 - No Such Table Error When Upgrading from 3.1.9 to 3.2.1] - -* https://jira.issues.couchbase.com/browse/CBL-6822[CBL-6822 - Replicator may hang while stopping the housekeeper task during stop] - -// Lite Core end - -* https://jira.issues.couchbase.com/browse/CBL-6540[CBL-6540 - ReplicatorConfiguration's AllowReplicatingInBackground behavior is reversed] - -=== Known Issues - -None for this release - -=== Deprecations - -* https://jira.issues.couchbase.com/browse/CBL-6679[CBL-6679 - Deprecated: Database.log API for Configuring Couchbase Lite Logging — Use LogSink API Instead] - -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] diff --git a/modules/csharp/partials/release-notes/couchbase-mobile-csharp-release-note.3.2.3.adoc b/modules/csharp/partials/release-notes/couchbase-mobile-csharp-release-note.3.2.3.adoc deleted file mode 100644 index 45c5c2b8a..000000000 --- a/modules/csharp/partials/release-notes/couchbase-mobile-csharp-release-note.3.2.3.adoc +++ /dev/null @@ -1,22 +0,0 @@ -[#maint-3-2-3] -== 3.2.3 -- April 2025 - -Version 3.2.3 for {param-title} delivers the following features and enhancements: - -=== Enhancements - -* https://jira.issues.couchbase.com/browse/CBL-6954[CBL-6954 -- Support Android with 16 KB page size] - -=== Issues and Resolutions - -include::ROOT:partial$release-notes/couchbase-mobile-litecore-release-note.3.2.3.adoc[tags=fixes] - -=== Known Issues - -None for this release - -=== Deprecations - -None for this release - -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] diff --git a/modules/csharp/partials/release-notes/couchbase-mobile-csharp-release-note.3.3.0.adoc b/modules/csharp/partials/release-notes/couchbase-mobile-csharp-release-note.3.3.0.adoc new file mode 100644 index 000000000..40804a30e --- /dev/null +++ b/modules/csharp/partials/release-notes/couchbase-mobile-csharp-release-note.3.3.0.adoc @@ -0,0 +1,33 @@ +[#maint-3-3-0] +== 3.3.0 -- September 2025 + +Version 3.3.0 for {param-title} delivers the following features and enhancements: + +=== Downgrade Support + +Downgrades from 3.3.x to any other version of Couchbase Lite are not supported. + +=== Enhancements + +// Lite Core begin + + +// Lite Core end + + +=== Issues and Resolutions + +// Lite Core begin + + +// Lite Core end + +=== Known Issues + +None for this release + +=== Deprecations + +No new deprecations for GA release + +NOTE: For an overview of the latest features offered in Couchbase Lite 3.3.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.3] diff --git a/modules/csharp/partials/release-notes/couchbase-mobile-csharp-release-note.4.0.0.adoc b/modules/csharp/partials/release-notes/couchbase-mobile-csharp-release-note.4.0.0.adoc new file mode 100644 index 000000000..efe5e3f7b --- /dev/null +++ b/modules/csharp/partials/release-notes/couchbase-mobile-csharp-release-note.4.0.0.adoc @@ -0,0 +1,53 @@ +[#maint-4-0-0] +== 4.0.0 -- Q1 2025 + +Version 4.0.0 for {param-title} delivers the following features and enhancements: + +== Couchbase Lite Release Notes + +=== Downgrade Support + +Downgrades from 4.0 to earlier versions of Couchbase Lite are not supported. + +=== Enhancements + +// Lite Core begin + +NOTE: TODO + +* https://issues.couchbase.com/browse/CBL-5287[CBL-5287 - Enable Prediction Function in SQL++] + +// Lite Core end + +NOTE: TODO + +* https://issues.couchbase.com/browse/CBL-5213[CBL-5213 - Implement Proxy Authenticator API for Android / Java] + +=== Issues and Resolutions + +// Lite Core begin + +NOTE: TODO + +* https://issues.couchbase.com/browse/CBL-3846[CBL-3846 - Fixed corrupt Revision Data error when saving documents] + + +// Lite Core end + +NOTE: TODO + +* https://issues.couchbase.com/browse/CBL-5225[CBL-5225 - Fixed ReplicatedDocument getters do not comply with the spec] + +=== Known Issues + +NOTE: TODO + +None for this release + +=== Deprecations + +NOTE: TODO + +No new deprecations for GA release + +NOTE: For an overview of the latest features offered in Couchbase Lite 4.0.0, see xref:ROOT:cbl-whatsnew.adoc[New in 4.0] diff --git a/modules/csharp/partials/release-notes/couchbase-mobile-csharp-vs-release-note.1.0.0-beta.adoc b/modules/csharp/partials/release-notes/couchbase-mobile-csharp-vs-release-note.1.0.0-beta.adoc index 6649dcedf..c45c347a3 100644 --- a/modules/csharp/partials/release-notes/couchbase-mobile-csharp-vs-release-note.1.0.0-beta.adoc +++ b/modules/csharp/partials/release-notes/couchbase-mobile-csharp-vs-release-note.1.0.0-beta.adoc @@ -21,4 +21,4 @@ None for this release None for this release -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] +NOTE: For an overview of the latest features offered in Couchbase Lite 4.0.0, see xref:ROOT:cbl-whatsnew.adoc[New in 4.0] diff --git a/modules/java/examples/GetStartedDesktop/build.gradle b/modules/java/examples/GetStartedDesktop/build.gradle index 4e5fe9419..7da64825f 100644 --- a/modules/java/examples/GetStartedDesktop/build.gradle +++ b/modules/java/examples/GetStartedDesktop/build.gradle @@ -4,8 +4,8 @@ plugins { } ext { - CBL_VERSION='3.2.2-18' - EXT_VERSION='1.0.0-26' + CBL_VERSION = project.hasProperty('cblVersion') ? project.cblVersion : { throw new GradleException('cblVersion property is required. Use -PcblVersion=x.x.x-x') }() + EXT_VERSION = project.hasProperty('extVersion') ? project.extVersion : { throw new GradleException('extVersion property is required. Use -PextVersion=x.x.x-x') }() } def USE_LOCAL_MAVEN = project.hasProperty("useLocalMaven") @@ -23,16 +23,16 @@ java { repositories { if (USE_LOCAL_MAVEN) { mavenLocal() - maven { - url "https://proget.sc.couchbase.com/maven2/internalmaven/" - content { includeGroupByRegex "com\\.couchbase\\.lite.*" } - } } - else { - maven { - url "https://mobile.maven.couchbase.com/maven2/dev/" - content { includeGroupByRegex "com\\.couchbase\\.lite.*" } - } + + maven { + url "https://proget.sc.couchbase.com/maven2/internalmaven/" + content { includeGroupByRegex "com\\.couchbase\\.lite.*" } + } + + maven { + url "https://mobile.maven.couchbase.com/maven2/dev/" + content { includeGroupByRegex "com\\.couchbase\\.lite.*" } } google() diff --git a/modules/java/examples/GetStartedWS/build.gradle b/modules/java/examples/GetStartedWS/build.gradle index 125d76cd2..2636dff14 100644 --- a/modules/java/examples/GetStartedWS/build.gradle +++ b/modules/java/examples/GetStartedWS/build.gradle @@ -3,8 +3,8 @@ apply plugin: 'war' apply plugin: 'org.gretty' ext { - CBL_VERSION='3.2.2-18' - EXT_VERSION='1.0.0-26' + CBL_VERSION = project.hasProperty('cblVersion') ? project.cblVersion : { throw new GradleException('cblVersion property is required. Use -PcblVersion=x.x.x-x') }() + EXT_VERSION = project.hasProperty('extVersion') ? project.extVersion : { throw new GradleException('extVersion property is required. Use -PextVersion=x.x.x-x') }() } def USE_LOCAL_MAVEN = project.hasProperty("useLocalMaven") @@ -28,16 +28,16 @@ java { repositories { if (USE_LOCAL_MAVEN) { mavenLocal() - maven { - url "https://proget.sc.couchbase.com/maven2/internalmaven/" - content { includeGroupByRegex "com\\.couchbase\\.lite.*" } - } } - else { - maven { - url "https://mobile.maven.couchbase.com/maven2/dev/" - content { includeGroupByRegex "com\\.couchbase\\.lite.*" } - } + + maven { + url "https://proget.sc.couchbase.com/maven2/internalmaven/" + content { includeGroupByRegex "com\\.couchbase\\.lite.*" } + } + + maven { + url "https://mobile.maven.couchbase.com/maven2/dev/" + content { includeGroupByRegex "com\\.couchbase\\.lite.*" } } mavenCentral() diff --git a/modules/java/examples/snippets/build.gradle b/modules/java/examples/snippets/build.gradle index 0420251a8..2fe00062a 100644 --- a/modules/java/examples/snippets/build.gradle +++ b/modules/java/examples/snippets/build.gradle @@ -27,16 +27,16 @@ java { repositories { if (USE_LOCAL_MAVEN) { mavenLocal() - maven { - url "https://proget.sc.couchbase.com/maven2/internalmaven/" - content { includeGroupByRegex "com\\.couchbase\\.lite.*" } - } } - else { - maven { - url "https://mobile.maven.couchbase.com/maven2/dev/" - content { includeGroupByRegex "com\\.couchbase\\.lite.*" } - } + + maven { + url "https://proget.sc.couchbase.com/maven2/internalmaven/" + content { includeGroupByRegex "com\\.couchbase\\.lite.*" } + } + + maven { + url "https://mobile.maven.couchbase.com/maven2/dev/" + content { includeGroupByRegex "com\\.couchbase\\.lite.*" } } google() diff --git a/modules/java/examples/snippets/common/main/java/com/couchbase/codesnippets/ArrayIndexExamples.java b/modules/java/examples/snippets/common/main/java/com/couchbase/codesnippets/ArrayIndexExamples.java index a098ae9ca..fa50b94a9 100644 --- a/modules/java/examples/snippets/common/main/java/com/couchbase/codesnippets/ArrayIndexExamples.java +++ b/modules/java/examples/snippets/common/main/java/com/couchbase/codesnippets/ArrayIndexExamples.java @@ -20,7 +20,7 @@ import com.couchbase.lite.CouchbaseLiteException; import com.couchbase.lite.IndexConfiguration; - +@SuppressWarnings("unused") public class ArrayIndexExamples { public void ArrayIndexConfig() { // tag::array-index-config[] diff --git a/modules/java/examples/snippets/common/main/java/com/couchbase/codesnippets/BasicExamples.java b/modules/java/examples/snippets/common/main/java/com/couchbase/codesnippets/BasicExamples.java index ffba4e8d4..8ede361a5 100644 --- a/modules/java/examples/snippets/common/main/java/com/couchbase/codesnippets/BasicExamples.java +++ b/modules/java/examples/snippets/common/main/java/com/couchbase/codesnippets/BasicExamples.java @@ -15,8 +15,6 @@ // package com.couchbase.codesnippets; -import java.io.File; - import org.jetbrains.annotations.NotNull; import com.couchbase.lite.Array; @@ -33,9 +31,6 @@ @SuppressWarnings("unused") public class BasicExamples { public static class SupportingDatatypes { - private final File rootDir; - - public SupportingDatatypes(@NotNull File rootDir) { this.rootDir = rootDir; } public void datatypeUsage() throws CouchbaseLiteException { // tag::datatype_usage_createdb[] diff --git a/modules/java/examples/snippets/common/main/java/com/couchbase/codesnippets/MultipeerExamples.java b/modules/java/examples/snippets/common/main/java/com/couchbase/codesnippets/MultipeerExamples.java new file mode 100644 index 000000000..4aadf200f --- /dev/null +++ b/modules/java/examples/snippets/common/main/java/com/couchbase/codesnippets/MultipeerExamples.java @@ -0,0 +1,351 @@ +package com.couchbase.codesnippets; + +import android.util.Log; + +import com.couchbase.lite.Collection; +import com.couchbase.lite.CouchbaseLiteException; +import com.couchbase.lite.KeyUsage; +import com.couchbase.lite.ListenerToken; +import com.couchbase.lite.LogDomain; +import com.couchbase.lite.LogLevel; +import com.couchbase.lite.MultipeerCertificateAuthenticator; +import com.couchbase.lite.MultipeerCollectionConfiguration; +import com.couchbase.lite.MultipeerReplicator; +import com.couchbase.lite.MultipeerReplicatorConfiguration; +import com.couchbase.lite.PeerInfo; +import com.couchbase.lite.ReplicatedDocument; +import com.couchbase.lite.ReplicatorStatus; +import com.couchbase.lite.TLSIdentity; +import com.couchbase.lite.logging.ConsoleLogSink; +import com.couchbase.lite.logging.LogSinks; + +import java.io.ByteArrayInputStream; +import java.nio.charset.StandardCharsets; +import java.security.cert.CertificateException; +import java.security.cert.CertificateFactory; +import java.security.cert.X509Certificate; +import java.util.Arrays; +import java.util.Calendar; +import java.util.Collections; +import java.util.Date; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +@SuppressWarnings("unused") +public class MultipeerExamples { + private final String TAG = "MultipeerExamples"; + + private Collection collection1; + private Collection collection2; + private Collection collection3; + + private byte[] getCAPrivateKeyData() { + return "your_base64_encoded_private_key".getBytes(StandardCharsets.UTF_8); + } + + private byte[] getCACertificateData() { + return "your_base64_encoded_certificate".getBytes(StandardCharsets.UTF_8); + } + + public Set collectionSimple() { + // tag::multipeer-collection-simple + final Set collections = new HashSet<>(); + for(Collection col : Arrays.asList(collection1, collection2, collection3)) { + MultipeerCollectionConfiguration.Builder builder = + new MultipeerCollectionConfiguration.Builder(col); + collections.add(builder.build()); + } + // end::multipeer-collection- + return collections; + } + + @SuppressWarnings("UnnecessaryLocalVariable") + public Set collectionConfig() { + // tag::multipeer-collection-config + final MultipeerCollectionConfiguration config1 = + new MultipeerCollectionConfiguration.Builder(collection1) + .setConflictResolver((peerId, conflict) -> conflict.getRemoteDocument()) + .build(); + + final MultipeerCollectionConfiguration config2 = + new MultipeerCollectionConfiguration.Builder(collection1) + .setDocumentIDs(Arrays.asList("doc1", "doc2")) + .build(); + + final MultipeerCollectionConfiguration config3 = + new MultipeerCollectionConfiguration.Builder(collection1) + .setPushFilter((peerId, doc, flags) -> doc.getInt("access-level") == 2) + .build(); + + final Set collections = Set.of(config1, config2, config3); + // end::multipeer-collection-config + + return collections; + } + + public TLSIdentity createSelfSignedIdentity() throws CouchbaseLiteException { + // tag::multipeer-selfsigned-tlsidentity[] + // NOTE: Error handling omitted + + final String persistentLabel = "com.myapp.identity"; + + // Retrieve the TLS identity from the key store using the persistent label. + TLSIdentity identity = TLSIdentity.getIdentity(persistentLabel); + + // If the identity exists but is expired, delete it. + if(identity != null && identity.getExpiration().before(new Date())) { + TLSIdentity.deleteIdentity(persistentLabel); + } + + if(identity == null) { + // Define certificate attributes and expiration date. + final Map certAttributes = Map.of( + TLSIdentity.CERT_ATTRIBUTE_COMMON_NAME, "Couchbase Demo", + TLSIdentity.CERT_ATTRIBUTE_ORGANIZATION, "Couchbase", + TLSIdentity.CERT_ATTRIBUTE_ORGANIZATION_UNIT, "Mobile", + TLSIdentity.CERT_ATTRIBUTE_EMAIL_ADDRESS, "noreply@couchbase.com" + ); + + final Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.YEAR, 2); + Date expiration = calendar.getTime(); + + identity = TLSIdentity.createIdentity( + Set.of(KeyUsage.CLIENT_AUTH, KeyUsage.SERVER_AUTH), + certAttributes, + expiration, + persistentLabel + ); + } + // end::multipeer-selfsigned-tlsidentity[] + + return identity; + } + + public TLSIdentity createCASignedIdentity() throws CouchbaseLiteException { + // tag::multipeer-tlsidentity[] + // NOTE: Error handling omitted + + final String persistentLabel = "com.myapp.identity"; + + // Retrieve the TLS identity from the key store using the persistent label. + TLSIdentity identity = TLSIdentity.getIdentity(persistentLabel); + + // If the identity exists but is expired, delete it. + if(identity != null && identity.getExpiration().before(new Date())) { + // NOTE: Important to delete identity this way for CA signed identities + // since they extend beyond the Android key store + TLSIdentity.deleteIdentity(persistentLabel); + } + + if(identity == null) { + // Define certificate attributes and expiration date. + final Map certAttributes = Map.of( + TLSIdentity.CERT_ATTRIBUTE_COMMON_NAME, "Couchbase Demo", + TLSIdentity.CERT_ATTRIBUTE_ORGANIZATION, "Couchbase", + TLSIdentity.CERT_ATTRIBUTE_ORGANIZATION_UNIT, "Mobile", + TLSIdentity.CERT_ATTRIBUTE_EMAIL_ADDRESS, "noreply@couchbase.com" + ); + + final Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.YEAR, 2); + final Date expiration = calendar.getTime(); + + final byte[] caKey = getCAPrivateKeyData(); + final byte[] caCert = getCACertificateData(); + + // As the function name indicates, this is not a secure way of doing things + // and should either be done for testing only, or in an environment that you + // assure to be secure against unknown actors, because otherwise anyone who + // can install the app can probably easily extract the CA key. + identity = TLSIdentity.createdSignedIdentityInsecure( + Set.of(KeyUsage.SERVER_AUTH, KeyUsage.CLIENT_AUTH), + certAttributes, + caKey, + caCert, + expiration, + persistentLabel + ); + } + // end::multipeer-tlsidentity[] + + return identity; + } + + @SuppressWarnings("UnnecessaryLocalVariable") + public MultipeerCertificateAuthenticator authenticatorWithCallback() { + // tag::multipeer-authenticator-callback[] + // Use peer and certs to decide whether or not to allow (true) this peer + // or reject (false) + final MultipeerCertificateAuthenticator authenticator = + new MultipeerCertificateAuthenticator((peer, certs) -> true); + // end::multipeer-authenticator-callback[] + + return authenticator; + } + + @SuppressWarnings("UnnecessaryLocalVariable") + public MultipeerCertificateAuthenticator authenticatorWithRootCerts() throws CertificateException { + // tag::multipeer-authenticator-rootcerts[] + final byte[] caCert = getCACertificateData(); + final CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509"); + final ByteArrayInputStream inputStream = new ByteArrayInputStream(caCert); + final X509Certificate certObject = (X509Certificate) certificateFactory.generateCertificate(inputStream); + final MultipeerCertificateAuthenticator authenticator = + new MultipeerCertificateAuthenticator(Collections.singletonList(certObject)); + // end::multipeer-authenticator-rootcerts[] + + return authenticator; + } + + @SuppressWarnings("UnnecessaryLocalVariable") + public MultipeerReplicatorConfiguration createConfig() throws CouchbaseLiteException, CertificateException { + final TLSIdentity identity = createCASignedIdentity(); + final MultipeerCertificateAuthenticator authenticator = authenticatorWithRootCerts(); + final Set collections = collectionConfig(); + + // tag::multipeer-config[] + MultipeerReplicatorConfiguration config = new MultipeerReplicatorConfiguration.Builder() + .setPeerGroupID("com.myapp") + .setIdentity(identity) + .setAuthenticator(authenticator) + .setCollections(collections) + .build(); + // end::multipeer-config[] + + return config; + } + + @SuppressWarnings("UnnecessaryLocalVariable") + public MultipeerReplicator createMultipeerReplicator() throws CouchbaseLiteException, CertificateException { + final MultipeerReplicatorConfiguration config = createConfig(); + + // tag::multipeer-replicator + final MultipeerReplicator replicator = new MultipeerReplicator(config); + // end::multipeer-replicator[] + + return replicator; + } + + public void startReplicator() throws CouchbaseLiteException, CertificateException { + final MultipeerReplicator replicator = createMultipeerReplicator(); + // tag::multipeer-replicator-start[] + replicator.start(); + // end::multipeer-replicator-start[] + } + + public void stopReplicator() throws CouchbaseLiteException, CertificateException { + final MultipeerReplicator replicator = createMultipeerReplicator(); + // tag::multipeer-replicator-stop[] + replicator.stop(); + // end::multipeer-replicator-stop[] + } + + public void statusListener() throws CouchbaseLiteException, CertificateException { + final MultipeerReplicator replicator = createMultipeerReplicator(); + + // tag::multipeer-status-listener[] + final ListenerToken token = replicator.addStatusListener(status -> { + final String state = status.isActive() ? "active" : "inactive"; + final String error = status.getError() != null ? status.getError().getMessage() : "none"; + + Log.i(TAG, String.format("Multipeer replicator: %s, Error: %s", state, error)); + }); + // end::multipeer-status-listener[] + } + + public void peerDiscoveryListener() throws CouchbaseLiteException, CertificateException { + final MultipeerReplicator replicator = createMultipeerReplicator(); + + // tag::multipeer-peer-discovery-listener[] + final ListenerToken token = replicator.addPeerDiscoveryStatusListener(status -> { + final String online = status.isOnline() ? "online" : "offline"; + Log.i(TAG, String.format("Peer Discovery Status - Peer ID: %s Status: %s", + status.getPeer(), online)); + }); + // end::multipeer-peer-discovery-listener[] + } + + public void peerReplicatorStatus() throws CouchbaseLiteException, CertificateException { + final MultipeerReplicator replicator = createMultipeerReplicator(); + + // tag::multipeer-peer-discovery-listener[] + final ListenerToken token = replicator.addPeerReplicatorStatusListener(status -> { + final String direction = status.isOutgoing() ? "outgoing" : "incoming"; + final String activity = status.getStatus().getActivityLevel().name().toLowerCase(); + final String error = status.getStatus().getError() != null ? status.getStatus().getError().getMessage() : "none"; + Log.i(TAG, String.format("Peer Replicator Status - Peer ID: %s, Direction: %s, Activity: %s, Error: %s", + status, direction, activity, error)); + }); + // end::multipeer-peer-discovery-listener[] + } + + public void peerDocumentReplication() throws CouchbaseLiteException, CertificateException { + final MultipeerReplicator replicator = createMultipeerReplicator(); + + // tag::multipeer-document-replication-listener[] + final ListenerToken token = replicator.addPeerDocumentReplicationListener(status -> { + final String direction = status.isPush() ? "push" : "pull"; + Log.i(TAG, String.format("Peer Document Replication - Peer ID: %s Direction: %s", status.getPeer(), direction)); + for(ReplicatedDocument doc : status.getDocuments()) { + final Exception docError = doc.getError(); + final String error = docError != null ? docError.getMessage() : "none"; + final String collection = String.format("%s.%s", doc.getScope(), doc.getCollection()); + Log.i(TAG, String.format(" Collection: %s, Document ID: %s, " + + "Flags: %s, Error: %s", collection, doc.getID(), doc.getFlags(), error)); + } + }); + // end::multipeer-document-replication-listener[] + } + + public void peerID() throws CouchbaseLiteException, CertificateException { + final MultipeerReplicator replicator = createMultipeerReplicator(); + + // tag::multipeer-peer-id[] + final PeerInfo.PeerId peerID = replicator.getPeerId(); + Log.i(TAG, String.format("Peer ID: %s", peerID)); + // end::multipeer-peer-id[] + } + + public void neighborPeers() throws CouchbaseLiteException, CertificateException { + final MultipeerReplicator replicator = createMultipeerReplicator(); + + // tag::multipeer-neighbor-peers[] + Log.i(TAG, "Neighbor Peers:"); + for(PeerInfo.PeerId peer : replicator.getNeighborPeers()) { + Log.i(TAG, String.format(" %s", peer)); + } + // end::multipeer-neighbor-peers[] + } + + public void peerInfo() throws CouchbaseLiteException, CertificateException { + final MultipeerReplicator replicator = createMultipeerReplicator(); + + // tag::multipeer-peer-info[] + for(PeerInfo.PeerId peer : replicator.getNeighborPeers()) { + final PeerInfo info = replicator.getPeerInfo(peer); + Log.i(TAG, String.format("Peer ID: %s", peer)); + final String online = info.isOnline() ? "online" : "offline"; + Log.i(TAG, String.format(" Status: %s", online)); + Log.i(TAG, " Neighbor Peers:"); + for(PeerInfo.PeerId neighbor : info.getNeighbors()) { + Log.i(TAG, String.format(" %s", neighbor)); + } + + final ReplicatorStatus replStatus = info.getReplicatorStatus(); + final String activity = replStatus.getActivityLevel().name().toLowerCase(); + final String error = replStatus.getError() != null ? replStatus.getError().getMessage() : "none"; + Log.i(TAG, String.format(" Replicator Status: %s, Error: %s", activity, error)); + } + // end::multipeer-peer-info[] + } + + public void logging() { + // tag::multipeer-logdomain[] + // Enable verbose console logging for multipeer replicator-related domains only. + LogSinks.get().setConsole(new ConsoleLogSink(LogLevel.VERBOSE, LogDomain.PEER_DISCOVERY, + LogDomain.MULTIPEER)); + // end::multipeer-logdomain[] + } +} diff --git a/modules/java/nav-java.adoc b/modules/java/nav-java.adoc index a8299aaa0..44f39a392 100644 --- a/modules/java/nav-java.adoc +++ b/modules/java/nav-java.adoc @@ -9,7 +9,7 @@ include::partial$_set_page_context_for_java.adoc[] * xref:java:database.adoc[Databases] * xref:java:prebuilt-database.adoc[Pre-built Database] - + * xref:java:scopes-collections-manage.adoc[Scopes and Collections] * xref:java:document.adoc[Documents] @@ -43,7 +43,7 @@ include::partial$_set_page_context_for_java.adoc[] * xref:java:conflict.adoc[Handling Data Conflicts] // TODO change to {major}.{minor}.{maintenance-java}{tag} once beta version of 3.2 for Java Desktop released - + * https://docs.couchbase.com/mobile/{version-maintenance-java}/couchbase-lite-java/[API{nbsp}References] * xref:java:upgrade.adoc[Upgrade] diff --git a/modules/java/pages/compatibility.adoc b/modules/java/pages/compatibility.adoc index 5fdde855c..5f9a1aa12 100644 --- a/modules/java/pages/compatibility.adoc +++ b/modules/java/pages/compatibility.adoc @@ -22,11 +22,11 @@ Related Content -- xref:cbl-whatsnew.adoc[What's New] | xref:java:releasenotes The table below summarizes the compatible versions of Couchbase Lite with Sync Gateway. .Sync Gateway and Couchbase Lite Compatibility Matrix -[cols="3,^1,^1,^1,^1,^1,^1,^1"] +[cols="3,^1,^1,^1,^1,^1,^1,^1,^1"] |=== .2+^.>| Sync Gateway Versions ↓ -7+| Couchbase Lite → +8+| Couchbase Lite → ^| 1.4 *footnote:eos-cbl[This Couchbase Lite version is End of Support]]* ^| 2.0 @@ -35,6 +35,7 @@ The table below summarizes the compatible versions of Couchbase Lite with Sync G ^| 3.0.0 ^| 3.1.0 ^| 3.2.0 +^| 3.3.0 | 1.4 *footnote:eos-sgw[This Sync Gateway version is End of Support]* and 1.5 *footnote:eol-sgw[This Sync Gateway version is End of Life]* | image:ROOT:yes.png[] @@ -44,6 +45,7 @@ The table below summarizes the compatible versions of Couchbase Lite with Sync G | image:ROOT:no.png[] | image:ROOT:no.png[] | image:ROOT:no.png[] +| image:ROOT:no.png[] | 2.0 and 2.1 | image:ROOT:yes.png[] @@ -53,6 +55,7 @@ The table below summarizes the compatible versions of Couchbase Lite with Sync G | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] | 2.5 to 2.8 + with delta sync disabled @@ -63,6 +66,7 @@ with delta sync disabled | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] | 2.5 to 2.8 + with delta sync enabled @@ -73,6 +77,7 @@ with delta sync enabled | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] | 3.0.0 | image:ROOT:no.png[] @@ -82,6 +87,7 @@ with delta sync enabled | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] | 3.1.0 | image:ROOT:no.png[] @@ -91,6 +97,7 @@ with delta sync enabled | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] | 3.2.0 | image:ROOT:no.png[] @@ -100,6 +107,17 @@ with delta sync enabled | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] + +| 3.3.0 +| image:ROOT:no.png[] +| image:ROOT:yes.png[] +| image:ROOT:yes.png[] +| image:ROOT:yes.png[] +| image:ROOT:yes.png[] +| image:ROOT:yes.png[] +| image:ROOT:yes.png[] +| image:ROOT:yes.png[] |=== @@ -109,7 +127,7 @@ with delta sync enabled The table below summarizes the Operating System SDK versions supported by Couchbase Lite. .OS -- SDK Support -[cols="1,^1,^1,^1,^1,^1,^1,^1,^1,^1"] +[cols="1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1"] |=== @@ -123,6 +141,7 @@ The table below summarizes the Operating System SDK versions supported by Couchb ^.>h| 3.0 ^.>h| 3.1 ^.>h| 3.2 +^.>h| 3.3 h| Android | https://docs-archive.couchbase.com/home/index.html[archive link] @@ -133,7 +152,8 @@ h| Android | xref:2.8@couchbase-lite:android:supported-os.adoc[link] | xref:3.0@couchbase-lite:android:supported-os.adoc[link] | xref:3.1@couchbase-lite:android:supported-os.adoc[link] -| https://docs.couchbase.com/couchbase-lite/current/android/supported-os.html[link] +| xref:3.2@couchbase-lite:android:supported-os.adoc[link] +| xref:3.3@couchbase-lite:android:supported-os.adoc[link] h| C | - @@ -144,7 +164,8 @@ h| C | - | xref:3.0@couchbase-lite:c:supported-os.adoc[link] | xref:3.1@couchbase-lite:c:supported-os.adoc[link] -| https://docs.couchbase.com/couchbase-lite/current/c/supported-os.html[link] +| xref:3.2@couchbase-lite:c:supported-os.adoc[link] +| xref:3.3@couchbase-lite:c:supported-os.adoc[link] h| iOS | https://docs-archive.couchbase.com/home/index.html[archive link] @@ -155,7 +176,8 @@ h| iOS | xref:2.8@couchbase-lite:swift:supported-os.adoc[link] | xref:3.0@couchbase-lite:swift:supported-os.adoc[link] | xref:3.1@couchbase-lite:swift:supported-os.adoc[link] -| https://docs.couchbase.com/couchbase-lite/current/swift/supported-os.html[link] +| xref:3.2@couchbase-lite:swift:supported-os.adoc[link] +| xref:3.3@couchbase-lite:swift:supported-os.adoc[link] h| Java @@ -167,7 +189,8 @@ h| Java | xref:2.8@couchbase-lite:java:supported-os.adoc[link] | xref:3.0@couchbase-lite:java:supported-os.adoc[link] | xref:3.1@couchbase-lite:java:supported-os.adoc[link] -| https://docs.couchbase.com/couchbase-lite/current/java/supported-os.html[link] +| xref:3.2@couchbase-lite:java:supported-os.adoc[link] +| xref:3.3@couchbase-lite:java:supported-os.adoc[link] h| Javascript | - @@ -179,6 +202,7 @@ h| Javascript | xref:3.0@couchbase-lite:ROOT:javascript.adoc[link] | xref:3.1@couchbase-lite:ROOT:javascript.adoc[link] | xref:3.2@couchbase-lite:ROOT:javascript.adoc[link] +| xref:3.3@couchbase-lite:ROOT:javascript.adoc[link] h| .NET | https://docs-archive.couchbase.com/home/index.html[archive link] @@ -189,7 +213,8 @@ h| .NET | xref:2.8@couchbase-lite:csharp:supported-os.adoc[link] | xref:3.0@couchbase-lite:csharp:supported-os.adoc[link] | xref:3.1@couchbase-lite:csharp:supported-os.adoc[link] -| https://docs.couchbase.com/couchbase-lite/current/csharp/supported-os.html[link] +| xref:3.2@couchbase-lite:csharp:supported-os.adoc[link] +| xref:3.3@couchbase-lite:csharp:supported-os.adoc[link] |=== diff --git a/modules/java/pages/indexing.adoc b/modules/java/pages/indexing.adoc index 5504464ee..8edb01286 100644 --- a/modules/java/pages/indexing.adoc +++ b/modules/java/pages/indexing.adoc @@ -107,7 +107,7 @@ include::java:example$codesnippet_collection.java[tags="query-index_Querybuilder [#partial-index] == Partial Index -Couchbase Lite 3.2.2 introduces support for Partial Index - Partial Value and Partial Full-Text Indexes. +Couchbase Lite 3.2.2 introduced support for Partial Index - Partial Value and Partial Full-Text Indexes. The Partial Index can create a smaller index, potentially improving index and query performance. You can use Partial Index to specify a `WHERE` clause in your index configuration. If a where clause is specified, the database will index a document only when the where clause condition is met. @@ -182,7 +182,7 @@ include::java:example$snippets/common/main/java/com/couchbase/codesnippets/Query [#array-indexing] == Array Indexing -Couchbase Lite 3.2.1 introduces functionality to optimize querying arrays. +Couchbase Lite 3.2.1 introduced functionality to optimize querying arrays. xref:java:query-n1ql-mobile.adoc#lbl-unnest[Array `UNNEST`] to unpack arrays within a document to allow joins with the parent object, and array indexes for indexing unnested array's values to allow more efficient queries with `UNNEST`. [#the-array-index] @@ -311,7 +311,7 @@ include::java:example$snippets/common/main/java/com/couchbase/codesnippets/Array The above snippet creates an array index to allow you to iterate through `contacts[].phones[].type` in the document, namely `"home"` and `"mobile"`. -IMPORTANT: Array literals are not supported in CBL 3.2.1. +IMPORTANT: Array literals are not supported in CBL 3.3.0. Attempting to create a query with array literals will return an error. diff --git a/modules/java/pages/new-logging-api.adoc b/modules/java/pages/new-logging-api.adoc index 56dfc0fa7..3bbda2b89 100644 --- a/modules/java/pages/new-logging-api.adoc +++ b/modules/java/pages/new-logging-api.adoc @@ -4,7 +4,7 @@ :page-edition: :page-aliases: :page-role: -:description: Couchbase Lite 3.2.2 introduces a new Logging API. +:description: A new Logging API. :keywords: edge mobile api java kotlin android apple logging file console custom [abstract] @@ -30,7 +30,7 @@ For information about the now deprecated earlier version of the Logging API, see [#logsinks] == LogSinks -Couchbase Lite 3.2.2 introduces a new Logging API. +Couchbase Lite 3.2.2 introduced a new Logging API. The new Logging API has the following benefits: * Log sinks are now thread safe, removing risk of inconsistent states during initialization. diff --git a/modules/java/pages/query-n1ql-mobile.adoc b/modules/java/pages/query-n1ql-mobile.adoc index 8e6ce4597..26d517fb8 100644 --- a/modules/java/pages/query-n1ql-mobile.adoc +++ b/modules/java/pages/query-n1ql-mobile.adoc @@ -439,7 +439,7 @@ The query above will then produce the following output: The output demonstrates retrieval of both primary and secondary contact numbers listed as type `"mobile"`. -IMPORTANT: Array literals are not supported in CBL 3.2.1. +IMPORTANT: Array literals are not supported in CBL 3.3.0. Attempting to create a query with array literals will return an error. [#lbl-where] diff --git a/modules/java/pages/releasenotes.adoc b/modules/java/pages/releasenotes.adoc index 727ed1ae6..7e683c5ea 100644 --- a/modules/java/pages/releasenotes.adoc +++ b/modules/java/pages/releasenotes.adoc @@ -8,15 +8,4 @@ ifdef::prerelease[:page-status: {prerelease}] :param-title: Java [#maint-latest] -include::partial$release-notes/couchbase-mobile-java-release-note.3.2.4.adoc[] - -include::partial$release-notes/couchbase-mobile-java-release-note.3.2.3.adoc[] - -include::partial$release-notes/couchbase-mobile-java-release-note.3.2.2.adoc[] - -include::partial$release-notes/couchbase-mobile-java-release-note.3.2.1.adoc[] - -include::partial$release-notes/couchbase-mobile-java-release-note.3.2.0.adoc[] - -include::partial$release-notes/couchbase-mobile-java-release-note.3.2.0-beta.adoc[] - +include::partial$release-notes/couchbase-mobile-java-release-note.4.0.0.adoc[] diff --git a/modules/java/pages/supported-os.adoc b/modules/java/pages/supported-os.adoc index d72c3e78b..6e4cb656c 100644 --- a/modules/java/pages/supported-os.adoc +++ b/modules/java/pages/supported-os.adoc @@ -24,10 +24,7 @@ The targeted OS versions are given in xref:java:supported-os.adoc#supported-os- -- Support for the following will be deprecated in this release and will be removed in a future release: -* RedHat - 8 -* Debian 9, 10 -* Ubuntu - 20.04 LTS -* Microsoft Server - 2019 +* macOS - 13 Please plan to migrate your apps to use an appropriate alternative version. -- @@ -39,7 +36,7 @@ Please plan to migrate your apps to use an appropriate alternative version. | OS|Version|Type |RedHat -|8+ +|9+ |ALL |RockyLinux @@ -52,37 +49,26 @@ Please plan to migrate your apps to use an appropriate alternative version. | 22.04 LTS | ALL -| 20.04 LTS +| 24.04 LTS | Desktop & Web Service/Servlet (Tomcat) -.4+|Debian -|GNU/Linux 9 + -|Desktop & Web Service/Servlet (Tomcat) - -|GNU/Linux 10 (Buster) + -|Desktop & Web Service/Servlet (Tomcat) - +.2+|Debian |GNU/Linux 11 (Bullseye) + |Desktop & Web Service/Servlet (Tomcat) |GNU/Linux 12 (Bookworm) + |Desktop & Web Service/Servlet (Tomcat) -.2+|Microsoft Server - -|Windows Server 2019 (64-bit) -|Web Service/Servlet (Tomcat) +.1+|Microsoft Server |Windows Server 2022 (64-bit) |Web Service/Servlet (Tomcat) -.2+|Microsoft +.1+|Microsoft |Windows 11 |Desktop -|Windows 10 -|Desktop .3+|Apple |MacOS 14 (Sonoma) @@ -91,9 +77,6 @@ Please plan to migrate your apps to use an appropriate alternative version. |MacOS 13 (Ventura) |Desktop -|MacOS 12 (Monterey) -|Desktop - |=== diff --git a/modules/java/partials/release-notes/couchbase-mobile-java-release-note.3.2.0-beta.adoc b/modules/java/partials/release-notes/couchbase-mobile-java-release-note.3.2.0-beta.adoc deleted file mode 100644 index a00f6bc70..000000000 --- a/modules/java/partials/release-notes/couchbase-mobile-java-release-note.3.2.0-beta.adoc +++ /dev/null @@ -1,184 +0,0 @@ -[#maint-3-2-0] -== 3.2.0 -- August 2024 - -Version 3.2.0 Beta 2 for {param-title} delivers the following features and enhancements: - -=== Enhancements - -* https://issues.couchbase.com/browse/CBL-5213[CBL-5213 - Implement Proxy Authenticator API for Android / Java] - -* https://issues.couchbase.com/browse/CBL-5207[CBL-5207 - Implement Collection's database property] - -* https://issues.couchbase.com/browse/CBL-5201[CBL-5201 - Implementation of Collection's full-name property] - -* https://issues.couchbase.com/browse/CBL-5361[CBL-5361 - Control the JNI library's publication of symbols] - -* https://issues.couchbase.com/browse/CBL-5270[CBL-5270 - Ensure that c4queryobs_* functions axre called under the database-exclusive lock] - -* https://issues.couchbase.com/browse/CBL-4897[CBL-4897 - Revise zipfile production] - -// LiteCore - -* https://issues.couchbase.com/browse/CBL-5241[CBL-5241 - Upsert performance is degraded when the number of docs is increased] - -* https://issues.couchbase.com/browse/CBL-5379[CBL-5379 - Update iOS Target Version to 12] - -* https://issues.couchbase.com/browse/CBL-5287[CBL-5287 - Enable Prediction Function in SQL++ Parser] - -* https://issues.couchbase.com/browse/CBL-283[CBL-283 - Date Format other than ISO 8601] - -* https://issues.couchbase.com/browse/CBL-68[CBL-68 - DATE_DIFF_MILLIS(date1, date2, part)] - -* https://issues.couchbase.com/browse/CBL-67[CBL-67 - DATE_ADD_STR(date1, n, part)] - -* https://issues.couchbase.com/browse/CBL-66[CBL-66 - DATE_ADD_MILLIS(date1, n, part)] - -* https://issues.couchbase.com/browse/CBL-65[CBL-65 - MILLIS_TO_UTC(date1 [, fmt])] - -* https://issues.couchbase.com/browse/CBL-64[CBL-64 - MILLIS_TO_TZ(date1, tz [, fmt])] - -* https://issues.couchbase.com/browse/CBL-62[CBL-62 - STR_TO_TZ(date1, tz)] - -* https://issues.couchbase.com/browse/CBL-61[CBL-61 - MILLIS_TO_STR(date1 [, fmt ])] - -* https://issues.couchbase.com/browse/CBL-60[CBL-60 - DATE_DIFF_STR(date1, date2, part)] - -=== Issues and Resolutions - -* https://issues.couchbase.com/browse/CBL-5280[CBL-5280 - Fixed not releasing LocalRefs on callbacks.] - -* https://issues.couchbase.com/browse/CBL-5310[CBL-5310 - Fix concurrent modification during iteration] - -* https://issues.couchbase.com/browse/CBL-5037[CBL-5037 - Allow empty Domain list for Console Logger] - -* https://issues.couchbase.com/browse/CBL-5225[CBL-5225 - Fix ReplicatedDocument getters do not comply with the spec] - -* https://issues.couchbase.com/browse/CBL-4992[CBL-4992 - Beryllium: Null is a legal revId in createC4DocumentChange] - -* https://issues.couchbase.com/browse/CBL-4990[CBL-4990 - Fix Beryllium: `CollectionChangeNotifier.getChanges()` prematurely signals end of changes] - -* https://issues.couchbase.com/browse/CBL-4988[CBL-4988 - Beryllium: Map LiteCore log domain "Changes" to LogDomain.DATABASE] - -* https://issues.couchbase.com/browse/CBL-4986[CBL-4986 - Remap Changes LiteCore Log Domain to Database Domain] - -* https://issues.couchbase.com/browse/CBL-5455[CBL-5455 - FixResult.toJSON is annotated @NonNull, but can return null] - -* https://issues.couchbase.com/browse/CBL-4841[CBL-4841 - Fix Logic bug in Conflict Resolver] - -* https://issues.couchbase.com/browse/CBL-4742[CBL-4742 - Stop treating all connection failures as Server Errors] - -* https://issues.couchbase.com/browse/CBL-4797[CBL-4797 - Database.exists should support the default directory] - -* https://issues.couchbase.com/browse/CBL-4294[CBL-4294 - ReplicatorConfiguration.setAuthenticator should allow a null argument] - -* https://issues.couchbase.com/browse/CBL-4837[CBL-4837 - Lower the max size on the ClientTask thread pool to 8] - -* https://issues.couchbase.com/browse/CBL-4298[CBL-4298 - Work Manager Replication thows on Replication complete (Beryllium)] - -// Litecore enhancements - -* https://issues.couchbase.com/browse/CBL-5336[CBL-5336 - Over the bound of FLDicIterator should be banned] - -* https://issues.couchbase.com/browse/CBL-5335[CBL-5335 - array_agg seem to fail under some circumstances] - -* https://issues.couchbase.com/browse/CBL-5332[CBL-5332 - Crash during document expiration] - -* https://issues.couchbase.com/browse/CBL-5307[CBL-5307 - Updating remote revision when pulling the existing revision] - -* https://issues.couchbase.com/browse/CBL-5044[CBL-5044 - Don't capture backtrace for OutOfRange error FLDictIterator_Next] - -* https://issues.couchbase.com/browse/CBL-5033[CBL-5033 - Puller revoked docs should queue with other revs] - -* https://issues.couchbase.com/browse/CBL-5020[CBL-5020 - Fixed cannot read digest file: /libs/macos/aarch64/lib/libLiteCoreJNI.dylib.MD5 exception] - -* https://issues.couchbase.com/browse/CBL-5449[CBL-5449 - Port - Attachments flag is dropped when applying delta to incoming rev] - -* https://issues.couchbase.com/browse/CBL-4536[CBL-4536 - Error when saving documents with LiteCore error 17: must be called during a transaction] - -* https://issues.couchbase.com/browse/CBL-4506[CBL-4506 - Investigate Replicator starts up slow for big database] - -* https://issues.couchbase.com/browse/CBL-4499[CBL-4499 - Replicator may get stuck when there is an error of "Invalid delta"] - -* https://issues.couchbase.com/browse/CBL-4493[CBL-4493 - Couchbase Lite C - Flutter plugin (dart language bindings) replication not resuming when internet reconnected] - -* https://issues.couchbase.com/browse/CBL-4802[CBL-4802 - Websocket implementation unable to handle continuation fragments] - -* https://issues.couchbase.com/browse/CBL-4801[CBL-4801 - Open an old db is slow in V3.1 first time] - -* https://issues.couchbase.com/browse/CBL-4390[CBL-4390 - The URL Scheme the HTTP Message is incorrect when using proxy] - -* https://issues.couchbase.com/browse/CBL-4247[CBL-4247 - Replicator binary logs with collections cannot be decoded] - -* https://issues.couchbase.com/browse/CBL-4245[CBL-4245 - Update sockcpp to cbl-3663] - -* https://issues.couchbase.com/browse/CBL-4600[CBL-4600 - Doc update c4repl_start] - -* https://issues.couchbase.com/browse/CBL-4568[CBL-4568 - URLEndpointListener.getURLs returns an empty list on Android v>=11] - -* https://issues.couchbase.com/browse/CBL-4334[CBL-4334 - Data getting corrupted during collection replication] - -* https://issues.couchbase.com/browse/CBL-4326[CBL-4326 - Opening the upgraded database from 2.8 to 3.0.2 is slow] - -* https://issues.couchbase.com/browse/CBL-4413[CBL-4413 - Compaction could cause "database is locked" error when the replicator attempts to save its checkpoint at the same time] - -* https://issues.couchbase.com/browse/CBL-4391[CBL-4391 - Stop replicator could cause 'database is locked' error when saving a document] - -* https://issues.couchbase.com/browse/CBL-4913[CBL-4913 - Regression in pull of blobs/legacy attachment handling] - -* https://issues.couchbase.com/browse/CBL-4547[CBL-4547 - Allow DictKeys to cache shared keys from query results] - -* https://issues.couchbase.com/browse/CBL-4750[CBL-4750 - c4queryenum_next crashes with FTS] - -* https://issues.couchbase.com/browse/CBL-4639[CBL-4639 - Use FTS match() in the WHERE clause of LEFT OUTER JOINS Not Returning Correct Result] - -* https://issues.couchbase.com/browse/CBL-4838[CBL-4838 - Attachments/Blobs got deleted after compaction&re-sync] - -* https://issues.couchbase.com/browse/CBL-4470[CBL-4470 - FLTimestamp_ToString() could return a slice with a wrong size] - -* https://issues.couchbase.com/browse/CBL-4424[Uninitialized struct] - -* https://issues.couchbase.com/browse/CBL-3836[CBL-3836 - Corrupt Revision Data error when saving documents] - -=== Known Issues - -None for this release - -=== Deprecations - -* https://issues.couchbase.com/browse/CBL-5491[CBL-5491 - Default's `MAX_ATTEMPT_WAIT_TIME` and `USE_PLAIN_TEXT` are deprecated] - -* https://issues.couchbase.com/browse/CBL-4316[CBL-4316 - Replicator's `getPendingDocumentIds()` and `isDocumentPending(String id)` are deprecated] - -* https://issues.couchbase.com/browse/CBL-4315[CBL-4315 - ReplicatorConfiguration's filters and conflict resolver properties are deprecated] - -* https://issues.couchbase.com/browse/CBL-4314[CBL-4314 - ReplicatorConfiguration APIs with Database object are deprecated ] - -* https://issues.couchbase.com/browse/CBL-4313[CBL-4313 - MessageEndpointListenerConfiguration APIs using Database object are deprecated] - -* https://issues.couchbase.com/browse/CBL-4312[CBL-4312 - URLEndpointListenerConfiguration APIs using Database object are deprecated] - -* https://issues.couchbase.com/browse/CBL-4311[CBL-4311 - QueryBuilder : `isNullOrMissing()` and `notNullOrMissing()` are deprecated] - -* https://issues.couchbase.com/browse/CBL-4310[CBL-4310 - QueryBuilder : FullTextFunction's `rank(String index)` and `match(String index, String query)` are deprecated] - -* https://issues.couchbase.com/browse/CBL-4309[CBL-4309 - QueryBuilder : DataSource's `database()` is deprecated] - -* https://issues.couchbase.com/browse/CBL-4307[CBL-4307 - DocumentChange's database property is deprecated] - -* https://issues.couchbase.com/browse/CBL-4306[CBL-4306 - DatabaseChange and DatabaseChangeListener are deprecated] - -* https://issues.couchbase.com/browse/CBL-4305[CBL-4305 - Database's removeChangeListener() is deprecated] - -* https://issues.couchbase.com/browse/CBL-4304[CBL-4304 - Database's Document APIs are deprecated] - -* https://issues.couchbase.com/browse/CBL-4264[CBL-4264 - Increased security: store BasicAuthenticator password as a char[] and zero before release] - -* https://issues.couchbase.com/browse/CBL-4262[CBL-4262 - ReplicatorConfiguration.setPinnedServerCertificate should take a Certificate] - -* https://issues.couchbase.com/browse/CBL-3963[CBL-3963 - Remove Deprecated ReplicatorConfiguration.ReplicatorType] - -* https://issues.couchbase.com/browse/CBL-1727[CBL-1727 - Improved naming for AbstractReplicatorConfiguration.ReplicatorType] - -* https://issues.couchbase.com/browse/CBL-4263[CBL-4263 - The public type ReplicatorConfiguration.ReplicatorType is not visible from Kotlin] - -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0 Beta 2, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] diff --git a/modules/java/partials/release-notes/couchbase-mobile-java-release-note.3.2.0.adoc b/modules/java/partials/release-notes/couchbase-mobile-java-release-note.3.2.0.adoc deleted file mode 100644 index 83b4c7ffe..000000000 --- a/modules/java/partials/release-notes/couchbase-mobile-java-release-note.3.2.0.adoc +++ /dev/null @@ -1,189 +0,0 @@ -[#maint-3-2-0] -== 3.2.0 -- August 2024 - -Version 3.2.0 for {param-title} delivers the following features and enhancements: - -=== Downgrade Support - -Downgrades from 3.2.x to any other version of Couchbase Lite are not supported. - -=== Enhancements - -// Lite Core begin - -* https://issues.couchbase.com/browse/CBL-5287[CBL-5287 - Enable Prediction Function in SQL++] - -* https://issues.couchbase.com/browse/CBL-5634[CBL-5634 - NoRev enhancement with Replacement Rev in pull replication] - -* https://issues.couchbase.com/browse/CBL-5687[CBL-5687 - Update replication protocol doc per ReplacementRev changes] - -* https://issues.couchbase.com/browse/CBL-4412[CBL-4412 - Enhance checkpoint resolution algorithm when local and remote checkpoint are mismatched] - -* https://issues.couchbase.com/browse/CBL-5346[CBL-5346 - Logging Replicator reasons of state change] - -* https://issues.couchbase.com/browse/CBL-283[CBL-283 - Support Date Format other than ISO 8601 in SQL++] - -* https://issues.couchbase.com/browse/CBL-68[CBL-68 - DATE_DIFF_MILLIS(date1, date2, part)] - -* https://issues.couchbase.com/browse/CBL-67[CBL-67 - DATE_ADD_STR(date1, n, part)] - -* https://issues.couchbase.com/browse/CBL-66[CBL-66 - DATE_ADD_MILLIS(date1, n, part)] - -* https://issues.couchbase.com/browse/CBL-65[CBL-65 - MILLIS_TO_UTC(date1 [, fmt])] - -* https://issues.couchbase.com/browse/CBL-64[CBL-64 - MILLIS_TO_TZ(date1, tz [, fmt])] - -* https://issues.couchbase.com/browse/CBL-62[CBL-62 - STR_TO_TZ(date1, tz)] - -* https://issues.couchbase.com/browse/CBL-61[CBL-61 - MILLIS_TO_STR(date1 [, fmt ])] - -* https://issues.couchbase.com/browse/CBL-60[CBL-60 - DATE_DIFF_STR(date1, date2, part)] - -// Lite Core end first ticket below is JAVA ONLY - -* https://issues.couchbase.com/browse/CBL-4451[CBL-4451 - Native Support for Mac ARM] - -* https://issues.couchbase.com/browse/CBL-5213[CBL-5213 - Implement Proxy Authenticator API for Android / Java] - -* https://issues.couchbase.com/browse/CBL-5207[CBL-5207 - Implement Collection's database property] - -* https://issues.couchbase.com/browse/CBL-5201[CBL-5201 - Implementation Collection's full-name property] - -* https://issues.couchbase.com/browse/CBL-5683[CBL-5683 - Database.getDefaultCollection should not be nullable] - -* https://issues.couchbase.com/browse/CBL-5535[CBL-5535 - Update OkHTTP to 4.12] - -* https://issues.couchbase.com/browse/CBL-4435[CBL-4435 - Replicator.close() stops state updates] - -* https://issues.couchbase.com/browse/CBL-4725[CBL-4725 - Remove deprecated C4QueryOptions] - -* https://issues.couchbase.com/browse/CBL-4897[CBL-4897 - Revise zipfile production] - -* https://issues.couchbase.com/browse/CBL-5361[CBL-5361 - Control the JNI library's publication of symbols] - -* https://issues.couchbase.com/browse/CBL-5487[CBL-5847 - Dates in Parameters can now be encoded] - -=== Issues and Resolutions - -// Lite Core begin - -* https://issues.couchbase.com/browse/CBL-3846[CBL-3846 - Fixed corrupt Revision Data error when saving documents] - -* https://issues.couchbase.com/browse/CBL-4247[CBL-4247 - Fixed Replicator binary logs with collections cannot be decoded] - -* https://issues.couchbase.com/browse/CBL-4326[CBL-4326 - Fixed opening the upgraded database from 2.8 to 3.0.2 is slow] - -* https://issues.couchbase.com/browse/CBL-4334[CBL-4334 - Fixed Data getting corrupted during collection replication] - -* https://issues.couchbase.com/browse/CBL-4390[CBL-4390 - Fixed The URL Scheme the HTTP Message is incorrect when using proxy] - -* https://issues.couchbase.com/browse/CBL-4391[CBL-4391 - Fixed Stop replicator could cause 'database is locked' error when saving a document] - -* https://issues.couchbase.com/browse/CBL-4413[CBL-4413 - Fixed Compaction could cause "database is locked" error when the replicator attempts to save its checkpoint at the same time] - -* https://issues.couchbase.com/browse/CBL-4470[CBL-4470 - Fixed FLTimestamp_ToString() could return a slice with a wrong size] - -* https://issues.couchbase.com/browse/CBL-4493[CBL-4493 - Fixed Couchbase Lite C - Flutter plugin (dart language bindings) replication not resuming when internet reconnected] - -* https://issues.couchbase.com/browse/CBL-4499[CBL-4499 - Fixed Replicator may get stuck when there is an error of "Invalid delta"] - -* https://issues.couchbase.com/browse/CBL-4506[CBL-4506 - Fixed Replicator starts up slow for big database] - -* https://issues.couchbase.com/browse/CBL-4536[CBL-4536 - Fixed error when saving documents with LiteCore error 17: must be called during a transaction] - -* https://issues.couchbase.com/browse/CBL-4547[CBL-4547 - Allow DictKeys to cache shared keys from query results] - -* https://issues.couchbase.com/browse/CBL-4568[CBL-4568 - Fixed URLEndpointListener.getURLs returns an empty list on Android v>=11] - -* https://issues.couchbase.com/browse/CBL-4639[CBL-4639 - Use FTS match() in the WHERE clause of LEFT OUTER JOINS Not Returning Correct Result] - -* https://issues.couchbase.com/browse/CBL-4750[CBL-4750 - Fixed c4queryenum_next crashes with FTS] - -* https://issues.couchbase.com/browse/CBL-4801[CBL-4801 - Fixed opening an old db is slow in V3.1 the first time] - -* https://issues.couchbase.com/browse/CBL-4802[CBL-4802 - Fixed websocket implementation unable to handle continuation fragments] - -* https://issues.couchbase.com/browse/CBL-4838[CBL-4838 - Fixed Attachments/Blobs got deleted after compaction&re-sync] - -* https://issues.couchbase.com/browse/CBL-4913[CBL-4913 - Fixed regression in pull of blobs/legacy attachment handling] - -* https://issues.couchbase.com/browse/CBL-5082[CBL-5082 - Fixed crash in setting Housekeeper::_doExpiration()] - -* https://issues.couchbase.com/browse/CBL-5033[CBL-5033 - Fixed Puller revoked docs should queue with other revs] - -* https://issues.couchbase.com/browse/CBL-5044[CBL-5044 - Don't capture backtrace for OutOfRange error FLDictIterator_Next] - -* https://issues.couchbase.com/browse/CBL-5307[CBL-5307 - Correctly updating remote revision when pulling the existing revision] - -* https://issues.couchbase.com/browse/CBL-5332[CBL-5332 - Fixed crash during document expiration] - -* https://issues.couchbase.com/browse/CBL-5335[CBL-5335 - Fixed array_agg failures] - -* https://issues.couchbase.com/browse/CBL-5336[CBL-5336 - Over the bound of FLDicIterator should be banned] - -* https://issues.couchbase.com/browse/CBL-5377[CBL-5377 - Fixed MILLIS_TO_STRING is returning UTC instead of local time zone] - -* https://issues.couchbase.com/browse/CBL-5449[CBL-5449 - Fixed Attachments flag is dropped when applying delta to incoming rev] - -* https://issues.couchbase.com/browse/CBL-5515[CBL-5515 - Fixed Result alias can't be used elsewhere in query] - -* https://issues.couchbase.com/browse/CBL-5540[CBL-5540 - Fixed pthread_mutex_lock called on a destroyed mutex] - -* https://issues.couchbase.com/browse/CBL-5587[CBL-5587 - Fixed Remote rev KeepBody flag could be cleared accidentally] - -* https://issues.couchbase.com/browse/CBL-5589[CBL-5589 - Fixed N1QL Parser has exponential slowdown for redundant parentheses] - -* https://issues.couchbase.com/browse/CBL-5646[CBL-5646 - Fixed Null dereference crash in gotHTTPResponse] - -* https://issues.couchbase.com/browse/CBL-5724[CBL-5724 - Fixed Replicator syncs from beginning when using prebuilt dbs synced from SG] - -// Lite Core end first issue below is JAVA ONLY - -* https://issues.couchbase.com/browse/CBL-5280[CBL-5280 - Fixed not releasing LocalRefs on callbacks.] - -* https://issues.couchbase.com/browse/CBL-5225[CBL-5225 - Fixed ReplicatedDocument getters do not comply with the spec] - -* https://issues.couchbase.com/browse/CBL-5310[CBL-5310 - Fixed concurrent modification during iteration] - -* https://issues.couchbase.com/browse/CBL-5584[CBL-5584 - Fixed NativeC4QueryObserver.free should disable the listener before freeing it] - -* https://issues.couchbase.com/browse/CBL-5513[CBL-5513 - Query.setParameters should throw] - -* https://issues.couchbase.com/browse/CBL-5512[CBL-5512 - toJSON should throw] - -* https://issues.couchbase.com/browse/CBL-4782[CBL-4782 - Stop treating all connection failures as Server Errors] - -* https://issues.couchbase.com/browse/CBL-4298[CBL-4298 - Fixed Work Manager Replication thows on Replication complete] - -* https://issues.couchbase.com/browse/CBL-4294[CBL-4294- ReplicatorConfiguration.setAuthenticator should allow a null argument] - -* https://issues.couchbase.com/browse/CBL-4992[CBL-4992 - Fixed Null is a legal revId in createC4DocumentChange] - -* https://issues.couchbase.com/browse/CBL-4990[CBL-4990 - Fixed CollectionChangeNotifier.getChanges() prematurely signals end of changes] - -* https://issues.couchbase.com/browse/CBL-4988[CBL-4988 - Map LiteCore log domain "Changes" to LogDomain.DATABASE] - -* https://issues.couchbase.com/browse/CBL-5037[CBL-5037 - Allow empty Domain list for Console Logger] - -* https://issues.couchbase.com/browse/CBL-4797[CBL-4797 - Database.exists should support the default directory] - -* https://issues.couchbase.com/browse/CBL-5486[CBL-5486 - Fixed native crash in objects derived from ResultSet] - -* https://issues.couchbase.com/browse/CBL-4841[CBL-4841 - Fixed logic bug in Conflict Resolver] - -* https://issues.couchbase.com/browse/CBL-4837[CBL-4837 - Lower the max size on the ClientTask thread pool to 8] - -* https://issues.couchbase.com/browse/CBL-5853[CBL-5853 - Dictionary and Array should allow adding self] - -* https://issues.couchbase.com/browse/CBL-5455[CBL-5455 - Fixed Result.toJSON is annotated @NonNull, but can return null] - - -=== Known Issues - -None for this release - -=== Deprecations - -No new deprecations for GA release - -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] diff --git a/modules/java/partials/release-notes/couchbase-mobile-java-release-note.3.2.1.adoc b/modules/java/partials/release-notes/couchbase-mobile-java-release-note.3.2.1.adoc deleted file mode 100644 index 116a935a4..000000000 --- a/modules/java/partials/release-notes/couchbase-mobile-java-release-note.3.2.1.adoc +++ /dev/null @@ -1,38 +0,0 @@ -[#maint-3-2-1] -== 3.2.1 -- November 2024 - -Version 3.2.1 for {param-title} delivers the following features and enhancements: - -=== Enhancements - -// Lite Core begin - -* https://jira.issues.couchbase.com/browse/CBL-5169[CBL-5169 - Support for Unnest Query and Array Index] - -* https://jira.issues.couchbase.com/browse/CBL-6303[CBL-6303 - Add ability to disable mmap usage] - -// Lite Core end - -* https://jira.issues.couchbase.com/browse/CBL-6074[CBL-6074 - Replace Java Finalizer with Cleaner Using Phantom Reference] - -=== Issues and Resolutions - -// Lite Core begin - -* https://jira.issues.couchbase.com/browse/CBL-6131[CBL-6131 - Fixed race creating the expiration column in a collection table] - -* https://jira.issues.couchbase.com/browse/CBL-6245[CBL-6245 - Fixed query parser regression related to brackets] - -* https://jira.issues.couchbase.com/browse/CBL-6378[CBL-6378 - Crash when calling onWebSocketGotTLSCertificate callback after the connection is closed] - -// Lite Core end - -=== Known Issues - -None for this release - -=== Deprecations - -No new deprecations for GA release - -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] diff --git a/modules/java/partials/release-notes/couchbase-mobile-java-release-note.3.2.2.adoc b/modules/java/partials/release-notes/couchbase-mobile-java-release-note.3.2.2.adoc deleted file mode 100644 index 99a13acfa..000000000 --- a/modules/java/partials/release-notes/couchbase-mobile-java-release-note.3.2.2.adoc +++ /dev/null @@ -1,30 +0,0 @@ -[#maint-3-2-2] -== 3.2.2 -- March 2025 - -Version 3.2.2 for {param-title} delivers the following features and enhancements: - -=== Enhancements - -* https://jira.issues.couchbase.com/browse/CBL-5185[CBL-5185 - Support for Partial Indexes in Value and Full-Text Indexes] - -* https://jira.issues.couchbase.com/browse/CBL-6451[CBL-6451 - LogSink API for Configuring Couchbase Lite Logging] - -=== Issues and Resolutions - -// Lite Core begin - -* https://jira.issues.couchbase.com/browse/CBL-6534[CBL-6534 - No Such Table Error When Upgrading from 3.1.9 to 3.2.1] - -* https://jira.issues.couchbase.com/browse/CBL-6822[CBL-6822 - Replicator may hang while stopping the housekeeper task during stop] - -// Lite Core end - -=== Known Issues - -None for this release - -=== Deprecations - -* https://jira.issues.couchbase.com/browse/CBL-6679[CBL-6679 - Deprecated: Database.log API for Configuring Couchbase Lite Logging — Use LogSink API Instead] - -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] diff --git a/modules/java/partials/release-notes/couchbase-mobile-java-release-note.3.2.3.adoc b/modules/java/partials/release-notes/couchbase-mobile-java-release-note.3.2.3.adoc deleted file mode 100644 index 0dd27fa15..000000000 --- a/modules/java/partials/release-notes/couchbase-mobile-java-release-note.3.2.3.adoc +++ /dev/null @@ -1,22 +0,0 @@ -[#maint-3-2-3] -== 3.2.3 -- April 2025 - -Version 3.2.3 for {param-title} delivers the following features and enhancements: - -=== Enhancements - -* https://jira.issues.couchbase.com/browse/CBL-6884[CBL-6884 -- Support 16 KB page size] - -=== Issues and Resolutions - -include::ROOT:partial$release-notes/couchbase-mobile-litecore-release-note.3.2.3.adoc[tags=fixes] - -=== Known Issues - -None for this release - -=== Deprecations - -None for this release - -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] diff --git a/modules/java/partials/release-notes/couchbase-mobile-java-release-note.3.3.0.adoc b/modules/java/partials/release-notes/couchbase-mobile-java-release-note.3.3.0.adoc new file mode 100644 index 000000000..50aa9a681 --- /dev/null +++ b/modules/java/partials/release-notes/couchbase-mobile-java-release-note.3.3.0.adoc @@ -0,0 +1,33 @@ +[#maint-3-3-0] +== 3.3.0 -- September 2025 + +Version 3.3.0 for {param-title} delivers the following features and enhancements: + +=== Downgrade Support + +Downgrades from 3.3.x to any other version of Couchbase Lite are not supported. + +=== Enhancements + +// Lite Core begin + +// Lite Core end first ticket below is JAVA ONLY + + +=== Issues and Resolutions + +// Lite Core begin + + +// Lite Core end first issue below is JAVA ONLY + + +=== Known Issues + +None for this release + +=== Deprecations + +No new deprecations for GA release + +NOTE: For an overview of the latest features offered in Couchbase Lite 3.3.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.3] diff --git a/modules/java/partials/release-notes/couchbase-mobile-java-release-note.4.0.0.adoc b/modules/java/partials/release-notes/couchbase-mobile-java-release-note.4.0.0.adoc new file mode 100644 index 000000000..efe5e3f7b --- /dev/null +++ b/modules/java/partials/release-notes/couchbase-mobile-java-release-note.4.0.0.adoc @@ -0,0 +1,53 @@ +[#maint-4-0-0] +== 4.0.0 -- Q1 2025 + +Version 4.0.0 for {param-title} delivers the following features and enhancements: + +== Couchbase Lite Release Notes + +=== Downgrade Support + +Downgrades from 4.0 to earlier versions of Couchbase Lite are not supported. + +=== Enhancements + +// Lite Core begin + +NOTE: TODO + +* https://issues.couchbase.com/browse/CBL-5287[CBL-5287 - Enable Prediction Function in SQL++] + +// Lite Core end + +NOTE: TODO + +* https://issues.couchbase.com/browse/CBL-5213[CBL-5213 - Implement Proxy Authenticator API for Android / Java] + +=== Issues and Resolutions + +// Lite Core begin + +NOTE: TODO + +* https://issues.couchbase.com/browse/CBL-3846[CBL-3846 - Fixed corrupt Revision Data error when saving documents] + + +// Lite Core end + +NOTE: TODO + +* https://issues.couchbase.com/browse/CBL-5225[CBL-5225 - Fixed ReplicatedDocument getters do not comply with the spec] + +=== Known Issues + +NOTE: TODO + +None for this release + +=== Deprecations + +NOTE: TODO + +No new deprecations for GA release + +NOTE: For an overview of the latest features offered in Couchbase Lite 4.0.0, see xref:ROOT:cbl-whatsnew.adoc[New in 4.0] diff --git a/modules/java/partials/release-notes/couchbase-mobile-java-vs-release-note.1.0.0-beta.adoc b/modules/java/partials/release-notes/couchbase-mobile-java-vs-release-note.1.0.0-beta.adoc index b5440b2fb..4cb55d0c7 100644 --- a/modules/java/partials/release-notes/couchbase-mobile-java-vs-release-note.1.0.0-beta.adoc +++ b/modules/java/partials/release-notes/couchbase-mobile-java-vs-release-note.1.0.0-beta.adoc @@ -21,4 +21,4 @@ None for this release None for this release -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] +NOTE: For an overview of the latest features offered in Couchbase Lite 4.0.0, see xref:ROOT:cbl-whatsnew.adoc[New in 4.0] diff --git a/modules/objc/examples/code_snippets.xcodeproj/project.pbxproj b/modules/objc/examples/code_snippets.xcodeproj/project.pbxproj index 2c86026d7..d26381b30 100644 --- a/modules/objc/examples/code_snippets.xcodeproj/project.pbxproj +++ b/modules/objc/examples/code_snippets.xcodeproj/project.pbxproj @@ -18,6 +18,7 @@ 4001A1BD2BB344790067B507 /* CouchbaseLiteVectorSearch.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4001A1BA2BB344790067B507 /* CouchbaseLiteVectorSearch.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 4001A1BE2BB344790067B507 /* CouchbaseLite.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4001A1BB2BB344790067B507 /* CouchbaseLite.xcframework */; }; 4001A1BF2BB344790067B507 /* CouchbaseLite.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4001A1BB2BB344790067B507 /* CouchbaseLite.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 40A3E5F82E1FC20600DF445B /* MultipeerReplicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 40A3E5F72E1FC20600DF445B /* MultipeerReplicator.m */; }; AE96AF0C2BF24E36000253DF /* VectorSearch.m in Sources */ = {isa = PBXBuildFile; fileRef = AE96AF0B2BF24E36000253DF /* VectorSearch.m */; }; /* End PBXBuildFile section */ @@ -50,6 +51,7 @@ 4001A1B82BB343120067B507 /* code-snippets.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "code-snippets.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 4001A1BA2BB344790067B507 /* CouchbaseLiteVectorSearch.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = CouchbaseLiteVectorSearch.xcframework; path = Frameworks/CouchbaseLiteVectorSearch.xcframework; sourceTree = ""; }; 4001A1BB2BB344790067B507 /* CouchbaseLite.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = CouchbaseLite.xcframework; path = Frameworks/CouchbaseLite.xcframework; sourceTree = ""; }; + 40A3E5F72E1FC20600DF445B /* MultipeerReplicator.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MultipeerReplicator.m; sourceTree = ""; }; AE96AF0B2BF24E36000253DF /* VectorSearch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VectorSearch.m; sourceTree = ""; }; /* End PBXFileReference section */ @@ -78,6 +80,7 @@ 1A508E6E273A3887007EABB2 /* main.m */, 1A508E6F273A3887007EABB2 /* AppDelegate.m */, 1A508E70273A3887007EABB2 /* SampleCodeTest.m */, + 40A3E5F72E1FC20600DF445B /* MultipeerReplicator.m */, AE96AF0B2BF24E36000253DF /* VectorSearch.m */, 1A354CEB273B5996001A20BE /* GettingStarted.h */, ); @@ -177,6 +180,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 40A3E5F82E1FC20600DF445B /* MultipeerReplicator.m in Sources */, 1A508E7A273A3887007EABB2 /* main.m in Sources */, 1A508E79273A3887007EABB2 /* GettingStarted.m in Sources */, 1A508E7B273A3887007EABB2 /* AppDelegate.m in Sources */, diff --git a/modules/objc/examples/code_snippets/GettingStarted.m b/modules/objc/examples/code_snippets/GettingStarted.m index a02d3e58a..21cbda99a 100644 --- a/modules/objc/examples/code_snippets/GettingStarted.m +++ b/modules/objc/examples/code_snippets/GettingStarted.m @@ -1,7 +1,7 @@ // // GettingStarted.m // -// Copyright (c) 2024 Couchbase, Inc. All rights reserved. +// Copyright (c) 2025 Couchbase, Inc. All rights reserved. // // Licensed under the Couchbase License Agreement (the "License"); // you may not use this file except in compliance with the License. diff --git a/modules/objc/examples/code_snippets/MultipeerReplicator.m b/modules/objc/examples/code_snippets/MultipeerReplicator.m new file mode 100644 index 000000000..610959e3b --- /dev/null +++ b/modules/objc/examples/code_snippets/MultipeerReplicator.m @@ -0,0 +1,309 @@ +// +// MultipeerReplicator.m +// CouchbaseLite +// +// Copyright © 2025 couchbase. All rights reserved. +// + +#import +#import + +@interface MultipeerReplicatorSnippets : NSObject + +@end + +@interface CustomConflictResolver : NSObject +@end + +@implementation CustomConflictResolver + +- (nullable CBLDocument*) resolveConflict: (CBLConflict*)conflict forPeer: (CBLPeerID*)peerID { + return conflict.remoteDocument; +} + +@end + +@implementation MultipeerReplicatorSnippets { + CBLDatabase *database; + CBLCollection *collection1; + CBLCollection *collection2; + CBLCollection *collection3; +} + +- (NSArray *)collectionSimple { + // tag::multipeer-collection-simple + NSMutableArray *collections = [NSMutableArray array]; + for (CBLCollection *col in @[collection1, collection2, collection3]) { + CBLMultipeerCollectionConfiguration *config = + [[CBLMultipeerCollectionConfiguration alloc] initWithCollection:col]; + [collections addObject:config]; + } + // end::multipeer-collection-simple + return collections; +} + +- (NSArray *)collectionConfig { + // Config with custom conflict resolver + CBLMultipeerCollectionConfiguration *config1 = + [[CBLMultipeerCollectionConfiguration alloc] initWithCollection:collection1]; + config1.conflictResolver = [[CustomConflictResolver alloc] init]; + + // Config with document IDs filter + CBLMultipeerCollectionConfiguration *config2 = + [[CBLMultipeerCollectionConfiguration alloc] initWithCollection:collection2]; + config2.documentIDs = @[@"doc1", @"doc2"]; + + // Config with push replication filter + CBLMultipeerCollectionConfiguration *config3 = + [[CBLMultipeerCollectionConfiguration alloc] initWithCollection:collection3]; + config3.pushFilter = ^BOOL(CBLPeerID *peerID, CBLDocument *document, CBLDocumentFlags flags) { + return [document integerForKey:@"access-level"] == 2; + }; + + NSArray *collections = @[config1, config2, config3]; + // end::multipeer-collection-config + return collections; +} + +- (CBLTLSIdentity *)createSelfSignedIdentity { + // tag::multipeer-selfsigned-tlsidentity + // Note: This example is simplified for demonstration and does not include error handling. + NSString *persistentLabel = @"com.myapp.identity"; + + // Retrieve the TLS identity from the keychain using the persistent label. + NSError *error = nil; + CBLTLSIdentity *identity = [CBLTLSIdentity identityWithLabel:persistentLabel error:&error]; + + // If the identity exists but is expired, delete it. + if (identity && [identity.expiration compare:[NSDate date]] == NSOrderedAscending) { + [CBLTLSIdentity deleteIdentityWithLabel: persistentLabel error: &error]; + identity = nil; + } + + // If the identity doesn't exist or expired, create a new one. + if (!identity) { + // Define certificate attributes and expiration date. + NSDictionary *attrs = @{ kCBLCertAttrCommonName: @"MyApp" }; + NSDate *expiration = [[NSCalendar currentCalendar] dateByAddingUnit:NSCalendarUnitYear + value:2 + toDate:[NSDate date] + options:0]; + + // Create and store a new self-signed identity in the keychain with a persistent label. + identity = [CBLTLSIdentity createIdentityForKeyUsages:kCBLKeyUsagesClientAuth|kCBLKeyUsagesServerAuth + attributes:attrs + expiration:expiration + label:persistentLabel + error:&error]; + } + // end::multipeer-selfsigned-tlsidentity + return identity; +} + +- (CBLTLSIdentity *)createCASignedIdentity { + // tag::multipeer-tlsidentity + // Note: This example is simplified for demonstration and does not include error handling. + NSString *persistentLabel = @"com.myapp.identity"; + + // Retrieve the TLS identity from the keychain using the persistent label. + NSError *error = nil; + CBLTLSIdentity *identity = [CBLTLSIdentity identityWithLabel:persistentLabel error:&error]; + + // If the identity exists but is expired, delete it. + if (identity && [identity.expiration compare:[NSDate date]] == NSOrderedAscending) { + [CBLTLSIdentity deleteIdentityWithLabel: persistentLabel error: &error]; + identity = nil; + } + + // If the identity doesn't exist or expired, create a new one. + if (!identity) { + // Get the issuer's private key and certificate data (DER format) for signing the identity's certificate. + NSData *caKey = [self getIssuerPrivateKeyData]; + NSData *caCert = [self getIssuerCertificateData]; + + // Define certificate attributes and expiration date. + NSDictionary *attrs = @{ kCBLCertAttrCommonName: @"MyApp" }; + NSDate *expiration = [[NSCalendar currentCalendar] dateByAddingUnit:NSCalendarUnitYear + value:2 + toDate:[NSDate date] + options:0]; + + // Create and store a new identity signed with the issuer in the keychain with a persistent label. + identity = [CBLTLSIdentity createSignedIdentityInsecureForKeyUsages:kCBLKeyUsagesClientAuth|kCBLKeyUsagesServerAuth + attributes:attrs + expiration:expiration + caKey:caKey + caCertificate:caCert + label:persistentLabel + error:&error]; + } + // end::multipeer-tlsidentity + return identity; +} + +- (NSData *)getIssuerPrivateKeyData { + return [[NSData alloc] initWithBase64EncodedString:@"your_base64_encoded_private_key" options:0]; +} + +- (NSData *)getIssuerCertificateData { + return [[NSData alloc] initWithBase64EncodedString:@"your_base64_encoded_certicate" options:0]; +} + +- (id)authenticatorWithCallback { + // tag::multipeer-authenticator-callback + id authenticator = + [[CBLMultipeerCertificateAuthenticator alloc] initWithBlock:^BOOL(CBLPeerID *peerID, NSArray *certs) { + return YES; + }]; + // end::multipeer-authenticator-callback + return authenticator; +} + +- (id)authenticatorWithRootCerts { + // tag::multipeer-authenticator-rootcerts + // Get issuer's certificate data (DER format), which was used to sign the peer's certificate. + NSData *caCert = [self getIssuerCertificateData]; + SecCertificateRef caCertRef = SecCertificateCreateWithData(NULL, (__bridge CFDataRef)caCert); + id authenticator = + [[CBLMultipeerCertificateAuthenticator alloc] initWithRootCerts:@[(__bridge_transfer id)caCertRef]]; + // end::multipeer-authenticator-rootcerts + return authenticator; +} + +- (CBLMultipeerReplicatorConfiguration *)createConfig { + CBLTLSIdentity *identity = [self createCASignedIdentity]; + id authenticator = [self authenticatorWithRootCerts]; + NSArray *collections = [self collectionConfig]; + + // tag::multipeer-config + CBLMultipeerReplicatorConfiguration *config = + [[CBLMultipeerReplicatorConfiguration alloc] initWithPeerGroupID:@"com.myapp" + identity:identity + authenticator:authenticator + collections:collections]; + // end::multipeer-config + return config; +} + +- (CBLMultipeerReplicator *)createMultipeerReplicator { + CBLMultipeerReplicatorConfiguration *config = [self createConfig]; + NSError *error = nil; + // tag::multipeer-replicator + CBLMultipeerReplicator *replicator = [[CBLMultipeerReplicator alloc] initWithConfig:config error:&error]; + // end::multipeer-replicator + return replicator; +} + +- (void)startReplicator { + CBLMultipeerReplicator *replicator = [self createMultipeerReplicator]; + // tag::multipeer-replicator-start + [replicator start]; + // end::multipeer-replicator-start +} + +- (void)stopReplicator { + CBLMultipeerReplicator *replicator = [self createMultipeerReplicator]; + // tag::multipeer-replicator-stop + [replicator stop]; + // end::multipeer-replicator-stop +} + +- (void)statusListener { + CBLMultipeerReplicator *replicator = [self createMultipeerReplicator]; + // tag::multipeer-status-listener + [replicator addStatusListenerWithQueue:nil listener:^(CBLMultipeerReplicatorStatus *status) { + NSString *state = status.active ? @"active" : @"inactive"; + NSString *err = status.error ? status.error.localizedDescription : @"none"; + NSLog(@"Multipeer Replicator Status: %@, Error: %@", state, err); + }]; + // end::multipeer-status-listener +} + +- (void)peerDiscoveryListener { + CBLMultipeerReplicator *replicator = [self createMultipeerReplicator]; + // tag::multipeer-peer-discovery-listener + [replicator addPeerDiscoveryStatusListenerWithQueue:nil listener:^(CBLPeerDiscoveryStatus *status) { + NSString *online = status.online ? @"online" : @"offline"; + NSLog(@"Peer Discovery Status - Peer ID: %@, Status: %@", status.peerID, online); + }]; + // end::multipeer-peer-discovery-listener +} + +- (void)peerReplicatorStatus { + CBLMultipeerReplicator *replicator = [self createMultipeerReplicator]; + // tag::multipeer-replicator-status-listener + NSArray *activities = @[ @"stopped", @"offline", @"connecting", @"idle", @"busy" ]; + [replicator addPeerReplicatorStatusListenerWithQueue:nil listener:^(CBLPeerReplicatorStatus *replStatus) { + NSString *direction = replStatus.outgoing ? @"outgoing" : @"incoming"; + NSString *activity = activities[replStatus.status.activity]; + NSString *error = replStatus.status.error ? replStatus.status.error.localizedDescription : @"none"; + NSLog(@"Peer Replicator Status - " + "Peer ID: %@, Direction: %@, Activity: %@, Error: %@", + replStatus.peerID, direction, activity, error); + }]; + // end::multipeer-replicator-status-listener +} + +- (void)peerDocumentReplication { + CBLMultipeerReplicator *replicator = [self createMultipeerReplicator]; + // tag::multipeer-document-replication-listener + [replicator addPeerDocumentReplicationListenerWithQueue:nil listener:^(CBLPeerDocumentReplication *docRepl) { + NSString *direction = docRepl.isPush ? @"Push" : @"Pull"; + NSLog(@"Peer Document Replication - Peer ID: %@, Direction: %@", docRepl.peerID, direction); + for (CBLReplicatedDocument *doc in docRepl.documents) { + NSString *error = doc.error ? doc.error.localizedDescription : @"none"; + NSString *collection = [NSString stringWithFormat:@"%@.%@", doc.scope, doc.collection]; + NSLog(@" Collection: %@ Document ID: %@, Flags: %lu, Error: %@", + collection, doc.id, (unsigned long)doc.flags, error); + } + }]; + // end::multipeer-document-replication-listener +} + +- (void)peerID { + CBLMultipeerReplicator *replicator = [self createMultipeerReplicator]; + // tag::multipeer-peer-id + CBLPeerID *peerID = replicator.peerID; + NSLog(@"Peer ID: %@", peerID); + // end::multipeer-peer-id +} + +- (void)neighborPeers { + CBLMultipeerReplicator *replicator = [self createMultipeerReplicator]; + // tag::multipeer-neighbor-peers + NSLog(@"Neighbor Peers:"); + for (CBLPeerID *peerID in replicator.neighborPeers) { + NSLog(@" %@", peerID); + } + // end::multipeer-neighbor-peers +} + +- (void)peerInfo { + CBLMultipeerReplicator *replicator = [self createMultipeerReplicator]; + // tag::multipeer-peer-info + NSArray *activities = @[ @"stopped", @"offline", @"connecting", @"idle", @"busy" ]; + + void (^printPeerInfo)(CBLPeerInfo *) = ^(CBLPeerInfo *info) { + NSLog(@"Peer ID: %@", info.peerID); + NSLog(@" Status: %@", info.online ? @"online" : @"offline"); + NSLog(@" Neighbor Peers:"); + for (CBLPeerID *peerID in info.neighborPeers) { + NSLog(@" %@", peerID); + } + + CBLReplicatorStatus *replStatus = info.replicatorStatus; + NSString *activity = activities[(NSInteger)replStatus.activity]; + NSString *error = replStatus.error ? replStatus.error.localizedDescription : @"none"; + NSLog(@" Replicator Status: %@, Error: %@", activity, error); + }; + + for (CBLPeerID *peerID in replicator.neighborPeers) { + CBLPeerInfo *peerInfo = [replicator peerInfoForPeerID: peerID]; + if (peerInfo) { + printPeerInfo(peerInfo); + } + } + // end::multipeer-peer-info +} + +@end diff --git a/modules/objc/pages/compatibility.adoc b/modules/objc/pages/compatibility.adoc index a79d3a01b..3a7a2b69c 100644 --- a/modules/objc/pages/compatibility.adoc +++ b/modules/objc/pages/compatibility.adoc @@ -24,11 +24,11 @@ Related Content -- xref:cbl-whatsnew.adoc[What's New] | xref:objc:releasenotes The table below summarizes the compatible versions of Couchbase Lite with Sync Gateway. .Sync Gateway and Couchbase Lite Compatibility Matrix -[cols="3,^1,^1,^1,^1,^1,^1,^1"] +[cols="3,^1,^1,^1,^1,^1,^1,^1,^1"] |=== .2+^.>| Sync Gateway Versions ↓ -7+| Couchbase Lite → +8+| Couchbase Lite → ^| 1.4 *footnote:eos-cbl[This Couchbase Lite version is End of Support]]* ^| 2.0 @@ -37,6 +37,7 @@ The table below summarizes the compatible versions of Couchbase Lite with Sync G ^| 3.0.0 ^| 3.1.0 ^| 3.2.0 +^| 3.3.0 | 1.4 *footnote:eos-sgw[This Sync Gateway version is End of Support]* and 1.5 *footnote:eol-sgw[This Sync Gateway version is End of Life]* | image:ROOT:yes.png[] @@ -46,6 +47,7 @@ The table below summarizes the compatible versions of Couchbase Lite with Sync G | image:ROOT:no.png[] | image:ROOT:no.png[] | image:ROOT:no.png[] +| image:ROOT:no.png[] | 2.0 and 2.1 | image:ROOT:yes.png[] @@ -55,6 +57,7 @@ The table below summarizes the compatible versions of Couchbase Lite with Sync G | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] | 2.5 to 2.8 + with delta sync disabled @@ -65,6 +68,7 @@ with delta sync disabled | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] | 2.5 to 2.8 + with delta sync enabled @@ -75,6 +79,7 @@ with delta sync enabled | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] | 3.0.0 | image:ROOT:no.png[] @@ -84,6 +89,7 @@ with delta sync enabled | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] | 3.1.0 | image:ROOT:no.png[] @@ -93,6 +99,7 @@ with delta sync enabled | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] | 3.2.0 | image:ROOT:no.png[] @@ -102,6 +109,17 @@ with delta sync enabled | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] + +| 3.3.0 +| image:ROOT:no.png[] +| image:ROOT:yes.png[] +| image:ROOT:yes.png[] +| image:ROOT:yes.png[] +| image:ROOT:yes.png[] +| image:ROOT:yes.png[] +| image:ROOT:yes.png[] +| image:ROOT:yes.png[] |=== @@ -111,7 +129,7 @@ with delta sync enabled The table below summarizes the Operating System SDK versions supported by Couchbase Lite. .OS -- SDK Support -[cols="1,^1,^1,^1,^1,^1,^1,^1,^1,^1"] +[cols="1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1"] |=== @@ -125,6 +143,7 @@ The table below summarizes the Operating System SDK versions supported by Couchb ^.>h| 3.0 ^.>h| 3.1 ^.>h| 3.2 +^.>h| 3.3 h| Android | https://docs-archive.couchbase.com/home/index.html[archive link] @@ -135,7 +154,8 @@ h| Android | xref:2.8@couchbase-lite:android:supported-os.adoc[link] | xref:3.0@couchbase-lite:android:supported-os.adoc[link] | xref:3.1@couchbase-lite:android:supported-os.adoc[link] -| https://docs.couchbase.com/couchbase-lite/current/android/supported-os.html[link] +| xref:3.2@couchbase-lite:android:supported-os.adoc[link] +| xref:3.3@couchbase-lite:android:supported-os.adoc[link] h| C | - @@ -146,7 +166,8 @@ h| C | - | xref:3.0@couchbase-lite:c:supported-os.adoc[link] | xref:3.1@couchbase-lite:c:supported-os.adoc[link] -| https://docs.couchbase.com/couchbase-lite/current/c/supported-os.html[link] +| xref:3.2@couchbase-lite:c:supported-os.adoc[link] +| xref:3.3@couchbase-lite:c:supported-os.adoc[link] h| iOS | https://docs-archive.couchbase.com/home/index.html[archive link] @@ -157,7 +178,8 @@ h| iOS | xref:2.8@couchbase-lite:swift:supported-os.adoc[link] | xref:3.0@couchbase-lite:swift:supported-os.adoc[link] | xref:3.1@couchbase-lite:swift:supported-os.adoc[link] -| https://docs.couchbase.com/couchbase-lite/current/swift/supported-os.html[link] +| xref:3.2@couchbase-lite:swift:supported-os.adoc[link] +| xref:3.3@couchbase-lite:swift:supported-os.adoc[link] h| Java @@ -169,7 +191,8 @@ h| Java | xref:2.8@couchbase-lite:java:supported-os.adoc[link] | xref:3.0@couchbase-lite:java:supported-os.adoc[link] | xref:3.1@couchbase-lite:java:supported-os.adoc[link] -| https://docs.couchbase.com/couchbase-lite/current/java/supported-os.html[link] +| xref:3.2@couchbase-lite:java:supported-os.adoc[link] +| xref:3.3@couchbase-lite:java:supported-os.adoc[link] h| Javascript | - @@ -181,6 +204,7 @@ h| Javascript | xref:3.0@couchbase-lite:ROOT:javascript.adoc[link] | xref:3.1@couchbase-lite:ROOT:javascript.adoc[link] | xref:3.2@couchbase-lite:ROOT:javascript.adoc[link] +| xref:3.3@couchbase-lite:ROOT:javascript.adoc[link] h| .NET | https://docs-archive.couchbase.com/home/index.html[archive link] @@ -191,7 +215,8 @@ h| .NET | xref:2.8@couchbase-lite:csharp:supported-os.adoc[link] | xref:3.0@couchbase-lite:csharp:supported-os.adoc[link] | xref:3.1@couchbase-lite:csharp:supported-os.adoc[link] -| https://docs.couchbase.com/couchbase-lite/current/csharp/supported-os.html[link] +| xref:3.2@couchbase-lite:csharp:supported-os.adoc[link] +| xref:3.3@couchbase-lite:csharp:supported-os.adoc[link] |=== diff --git a/modules/objc/pages/gs-install.adoc b/modules/objc/pages/gs-install.adoc index e16f4e5f0..0851553ed 100644 --- a/modules/objc/pages/gs-install.adoc +++ b/modules/objc/pages/gs-install.adoc @@ -41,7 +41,9 @@ Couchbase Lite is distributed as an xcframework, to support this: [#lbl-install-tabs] === Install Couchbase Lite +//// IMPORTANT: There is no Carthage support for the 3.2.0 Beta version of Couchbase Lite. +//// [tabs] ==== diff --git a/modules/objc/pages/indexing.adoc b/modules/objc/pages/indexing.adoc index b67d955c1..a4d798a26 100644 --- a/modules/objc/pages/indexing.adoc +++ b/modules/objc/pages/indexing.adoc @@ -109,7 +109,7 @@ include::objc:example$code_snippets/SampleCodeTest.m[tags="query-index_Querybuil [#partial-index] == Partial Index -Couchbase Lite 3.2.2 introduces support for Partial Index - Partial Value and Partial Full-Text Indexes. +Couchbase Lite 3.2.2 introduced support for Partial Index - Partial Value and Partial Full-Text Indexes. The Partial Index can create a smaller index, potentially improving index and query performance. You can use Partial Index to specify a `WHERE` clause in your index configuration. If a where clause is specified, the database will index a document only when the where clause condition is met. @@ -184,7 +184,7 @@ include::objc:example$code_snippets/SampleCodeTest.m[tags=partial-full-text-inde [#array-indexing] == Array Indexing -Couchbase Lite 3.2.1 introduces functionality to optimize querying arrays. +Couchbase Lite 3.2.1 introduced functionality to optimize querying arrays. xref:objc:query-n1ql-mobile.adoc#lbl-unnest[Array `UNNEST`] to unpack arrays within a document to allow joins with the parent object, and array indexes for indexing unnested array's values to allow more efficient queries with `UNNEST`. [#the-array-index] @@ -313,7 +313,7 @@ include::objc:example$code_snippets/VectorSearch.m[tags=array-index-nested] The above snippet creates an array index to allow you to iterate through `contacts[].phones[].type` in the document, namely `"home"` and `"mobile"`. -IMPORTANT: Array literals are not supported in CBL 3.2.1. +IMPORTANT: Array literals are not supported in CBL 3.3.0. Attempting to create a query with array literals will return an error. diff --git a/modules/objc/pages/new-logging-api.adoc b/modules/objc/pages/new-logging-api.adoc index 7f401535c..1275cf3c3 100644 --- a/modules/objc/pages/new-logging-api.adoc +++ b/modules/objc/pages/new-logging-api.adoc @@ -4,7 +4,7 @@ :page-edition: :page-aliases: :page-role: -:description: Couchbase Lite 3.2.2 introduces a new Logging API. +:description: A new Logging API. :keywords: edge mobile api java kotlin android apple logging file console custom [abstract] @@ -32,7 +32,7 @@ For information about the now deprecated earlier version of the Logging API, see [#logsinks] == LogSinks -Couchbase Lite 3.2.2 introduces a new Logging API. +Couchbase Lite 3.2.2 introduced a new Logging API. The new Logging API has the following benefits: * Log sinks are now thread safe, removing risk of inconsistent states during initialization. diff --git a/modules/objc/pages/query-n1ql-mobile.adoc b/modules/objc/pages/query-n1ql-mobile.adoc index 7aebbb4ea..9e242dafd 100644 --- a/modules/objc/pages/query-n1ql-mobile.adoc +++ b/modules/objc/pages/query-n1ql-mobile.adoc @@ -441,7 +441,7 @@ The query above will then produce the following output: The output demonstrates retrieval of both primary and secondary contact numbers listed as type `"mobile"`. -IMPORTANT: Array literals are not supported in CBL 3.2.1. +IMPORTANT: Array literals are not supported in CBL 3.3.0. Attempting to create a query with array literals will return an error. [#lbl-where] diff --git a/modules/objc/pages/releasenotes.adoc b/modules/objc/pages/releasenotes.adoc index 03161856d..1871b603b 100644 --- a/modules/objc/pages/releasenotes.adoc +++ b/modules/objc/pages/releasenotes.adoc @@ -8,15 +8,4 @@ ifdef::prerelease[:page-status: {prerelease}] :param-title: Objective-C [#maint-latest] -include::partial$release-notes/couchbase-mobile-objc-release-note.3.2.4.adoc[] - -include::partial$release-notes/couchbase-mobile-objc-release-note.3.2.3.adoc[] - -include::partial$release-notes/couchbase-mobile-objc-release-note.3.2.2.adoc[] - -include::partial$release-notes/couchbase-mobile-objc-release-note.3.2.1.adoc[] - -include::partial$release-notes/couchbase-mobile-objc-release-note.3.2.0.adoc[] - -include::partial$release-notes/couchbase-mobile-objc-release-note.3.2.0-beta.adoc[] - +include::partial$release-notes/couchbase-mobile-objc-release-note.4.0.0.adoc[] diff --git a/modules/objc/pages/supported-os.adoc b/modules/objc/pages/supported-os.adoc index 76936ff17..e21f45669 100644 --- a/modules/objc/pages/supported-os.adoc +++ b/modules/objc/pages/supported-os.adoc @@ -29,10 +29,10 @@ The following table identifies the xref:objc:supported-os.adoc#supported-os-vers |Platform |Minimum OS version |iOS -|12.0+ +|15.0+ |macOS -| 12 (Monterey), 13 (Ventura), 14 (Sonoma) +| 13 (Ventura), 14 (Sonoma), 15 (Sequoia) |=== NOTE: Couchbase Lite for Objective-C provides native support for both Mac Catalyst and M1. @@ -45,13 +45,9 @@ NOTE: Couchbase Lite for Objective-C provides native support for both Mac Cataly |=== h|Operating System|Version|Deprecation Release -|iOS -|iOS 12 -|3.2.0 - |macOS -|12 (Monterey) -|3.2.0 +|13 (Ventura) +|3.3.0 |=== @@ -66,7 +62,7 @@ h|Operating System|Version|Deprecation Release ^.>|Removed ^.>|Deprecation Release -.2+| iOS +.4+| iOS | iOS 10 | 3.1.1 @@ -76,7 +72,19 @@ h|Operating System|Version|Deprecation Release | 3.2.0 | 3.1.1 -.3+| macOS +| iOS 12 +| 3.3.0 +| 3.3.0 + +| iOS 13 & 14 +| 3.2.0 +| 3.3.0 + +.4+| macOS + +| macOS 12 +| 3.3.0 +| 3.2.0 | macOS 11 | 3.2.0 diff --git a/modules/objc/partials/release-notes/couchbase-mobile-objc-release-note.3.2.0-beta.adoc b/modules/objc/partials/release-notes/couchbase-mobile-objc-release-note.3.2.0-beta.adoc deleted file mode 100644 index 0b6c3336c..000000000 --- a/modules/objc/partials/release-notes/couchbase-mobile-objc-release-note.3.2.0-beta.adoc +++ /dev/null @@ -1,172 +0,0 @@ -[#maint-3-2-0] -== 3.2.0 -- August 2024 - -Version 3.2.0 Beta 1 for {param-title} delivers the following features and enhancements: - -=== Enhancements - -* https://issues.couchbase.com/browse/CBL-5209[CBL-5209 - Implement Collection's database property] - -* https://issues.couchbase.com/browse/CBL-5203[CBL-5203 - Implementation of Collection's full-name property] - -* https://issues.couchbase.com/browse/CBL-5378[CBL-5378 - Update iOS Target Version to 12] - -* https://issues.couchbase.com/browse/CBL-5374[CBL-5374 - Change all Swift IndexConfiguration from class to struct] - -* https://issues.couchbase.com/browse/CBL-5487[CBL-5487 - CBL ObjC Framework Warning about Double-quoted include] - -* https://issues.couchbase.com/browse/CBL-5457[CBL-5457 - Some Objective-C symbols are missing in the exp file] - -* https://issues.couchbase.com/browse/CBL-5415[CBL-5415 - Symbol Not Found error when building with XCode 15.2] - -* https://issues.couchbase.com/browse/CBL-5265[CBL-5265 - Include Privacy Manifest in the released library] - -* https://issues.couchbase.com/browse/CBL-4648[CBL-4648 - Use Swift Private Module Map File for private ObjC Headers] - -// LiteCore - -* https://issues.couchbase.com/browse/CBL-5241[CBL-5241 - Upsert performance is degraded when the number of docs is increased] - -* https://issues.couchbase.com/browse/CBL-5379[CBL-5379 - Update iOS Target Version to 12] - -* https://issues.couchbase.com/browse/CBL-5287[CBL-5287 - Enable Prediction Function in SQL++ Parser] - -* https://issues.couchbase.com/browse/CBL-283[CBL-283 - Date Format other than ISO 8601] - -* https://issues.couchbase.com/browse/CBL-68[CBL-68 - DATE_DIFF_MILLIS(date1, date2, part)] - -* https://issues.couchbase.com/browse/CBL-67[CBL-67 - DATE_ADD_STR(date1, n, part)] - -* https://issues.couchbase.com/browse/CBL-66[CBL-66 - DATE_ADD_MILLIS(date1, n, part)] - -* https://issues.couchbase.com/browse/CBL-65[CBL-65 - MILLIS_TO_UTC(date1 [, fmt])] - -* https://issues.couchbase.com/browse/CBL-64[CBL-64 - MILLIS_TO_TZ(date1, tz [, fmt])] - -* https://issues.couchbase.com/browse/CBL-62[CBL-62 - STR_TO_TZ(date1, tz)] - -* https://issues.couchbase.com/browse/CBL-61[CBL-61 - MILLIS_TO_STR(date1 [, fmt ])] - -* https://issues.couchbase.com/browse/CBL-60[CBL-60 - DATE_DIFF_STR(date1, date2, part)] - -=== Issues and Resolutions - -* https://issues.couchbase.com/browse/CBL-4985[CBL-4985 - Remap Changes LiteCore Log Domain to Database Domain] - -* https://issues.couchbase.com/browse/CBL-5399[CBL-5399 - Close database might hang waiting for no active replicators or live queries] - -* https://issues.couchbase.com/browse/CBL-5418[CBL-5418 - Ensure the network streams are disconnected before CBLWebSocket is dealloc] - -* https://issues.couchbase.com/browse/CBL-4512[CBL-4512 - ListenerToken is not discardable in Collection's add change listener functions] - -* https://issues.couchbase.com/browse/CBL-4582[CBL-4582 - MutableDocument contains(key: String) returns wrong result] - -* https://issues.couchbase.com/browse/CBL-4336[CBL-4336 - Missing subscript function implementation in Collection class (Port)] - -* https://issues.couchbase.com/browse/CBL-4442[CBL-4442 - Update Database API deprecation messages] - -* https://issues.couchbase.com/browse/CBL-4441[CBL-4441 - Fixed `Collection.addDocumentChangeListener()` can fatal crash] - -* https://issues.couchbase.com/browse/CBL-4440[CBL-4440 - Fixed `CBLCollection` could be leaked if document listener token is not removed] - -* https://issues.couchbase.com/browse/CBL-4429[CBL-4429 - Fixed Crash when starting multiple live queries concurrently] - -// Litecore enhancements - -* https://issues.couchbase.com/browse/CBL-5336[CBL-5336 - Over the bound of FLDicIterator should be banned] - -* https://issues.couchbase.com/browse/CBL-5335[CBL-5335 - array_agg seem to fail under some circumstances] - -* https://issues.couchbase.com/browse/CBL-5332[CBL-5332 - Crash during document expiration] - -* https://issues.couchbase.com/browse/CBL-5307[CBL-5307 - Updating remote revision when pulling the existing revision] - -* https://issues.couchbase.com/browse/CBL-5044[CBL-5044 - Don't capture backtrace for OutOfRange error FLDictIterator_Next] - -* https://issues.couchbase.com/browse/CBL-5033[CBL-5033 - Puller revoked docs should queue with other revs] - -* https://issues.couchbase.com/browse/CBL-5449[CBL-5449 - Port - Attachments flag is dropped when applying delta to incoming rev] - -* https://issues.couchbase.com/browse/CBL-4536[CBL-4536 - Error when saving documents with LiteCore error 17: must be called during a transaction] - -* https://issues.couchbase.com/browse/CBL-4506[CBL-4506 - Investigate Replicator starts up slow for big database] - -* https://issues.couchbase.com/browse/CBL-4499[CBL-4499 - Replicator may get stuck when there is an error of "Invalid delta"] - -* https://issues.couchbase.com/browse/CBL-4493[CBL-4493 - Couchbase Lite C - Flutter plugin (dart language bindings) replication not resuming when internet reconnected] - -* https://issues.couchbase.com/browse/CBL-4802[CBL-4802 - Websocket implementation unable to handle continuation fragments] - -* https://issues.couchbase.com/browse/CBL-4801[CBL-4801 - Open an old db is slow in V3.1 first time] - -* https://issues.couchbase.com/browse/CBL-4390[CBL-4390 - The URL Scheme the HTTP Message is incorrect when using proxy] - -* https://issues.couchbase.com/browse/CBL-4247[CBL-4247 - Replicator binary logs with collections cannot be decoded] - -* https://issues.couchbase.com/browse/CBL-4245[CBL-4245 - Update sockcpp to cbl-3663] - -* https://issues.couchbase.com/browse/CBL-4600[CBL-4600 - Doc update c4repl_start] - -* https://issues.couchbase.com/browse/CBL-4568[CBL-4568 - URLEndpointListener.getURLs returns an empty list on Android v>=11] - -* https://issues.couchbase.com/browse/CBL-4334[CBL-4334 - Data getting corrupted during collection replication] - -* https://issues.couchbase.com/browse/CBL-4326[CBL-4326 - Opening the upgraded database from 2.8 to 3.0.2 is slow] - -* https://issues.couchbase.com/browse/CBL-4413[CBL-4413 - Compaction could cause "database is locked" error when the replicator attempts to save its checkpoint at the same time] - -* https://issues.couchbase.com/browse/CBL-4391[CBL-4391 - Stop replicator could cause 'database is locked' error when saving a document] - -* https://issues.couchbase.com/browse/CBL-4913[CBL-4913 - Regression in pull of blobs/legacy attachment handling] - -* https://issues.couchbase.com/browse/CBL-4547[CBL-4547 - Allow DictKeys to cache shared keys from query results] - -* https://issues.couchbase.com/browse/CBL-4750[CBL-4750 - c4queryenum_next crashes with FTS] - -* https://issues.couchbase.com/browse/CBL-4639[CBL-4639 - Use FTS match() in the WHERE clause of LEFT OUTER JOINS Not Returning Correct Result] - -* https://issues.couchbase.com/browse/CBL-4838[CBL-4838 - Attachments/Blobs got deleted after compaction&re-sync] - -* https://issues.couchbase.com/browse/CBL-4470[CBL-4470 - FLTimestamp_ToString() could return a slice with a wrong size] - -* https://issues.couchbase.com/browse/CBL-4424[Uninitialized struct] - -* https://issues.couchbase.com/browse/CBL-3836[CBL-3836 - Corrupt Revision Data error when saving documents] - -=== Known Issues - -None for this release - -=== Deprecations - -* https://issues.couchbase.com/browse/CBL-5491[CBL-5491 - Default's `MAX_ATTEMPT_WAIT_TIME` and `USE_PLAIN_TEXT` are deprecated] - -* https://issues.couchbase.com/browse/CBL-4316[CBL-4316 - Replicator's `getPendingDocumentIds()` and `isDocumentPending(String id)` are deprecated] - -* https://issues.couchbase.com/browse/CBL-4315[CBL-4315 - ReplicatorConfiguration's filters and conflict resolver properties are deprecated] - -* https://issues.couchbase.com/browse/CBL-4314[CBL-4314 - ReplicatorConfiguration APIs with Database object are deprecated ] - -* https://issues.couchbase.com/browse/CBL-4313[CBL-4313 - MessageEndpointListenerConfiguration APIs using Database object are deprecated] - -* https://issues.couchbase.com/browse/CBL-4312[CBL-4312 - URLEndpointListenerConfiguration APIs using Database object are deprecated] - -* https://issues.couchbase.com/browse/CBL-4311[CBL-4311 - QueryBuilder : `isNullOrMissing()` and `notNullOrMissing()` are deprecated] - -* https://issues.couchbase.com/browse/CBL-4310[CBL-4310 - QueryBuilder : FullTextFunction's `rank(String index)` and `match(String index, String query)` are deprecated] - -* https://issues.couchbase.com/browse/CBL-4309[CBL-4309 - QueryBuilder : DataSource's `database()` is deprecated] - -* https://issues.couchbase.com/browse/CBL-4307[CBL-4307 - DocumentChange's database property is deprecated] - -* https://issues.couchbase.com/browse/CBL-4306[CBL-4306 - DatabaseChange and DatabaseChangeListener are deprecated] - -* https://issues.couchbase.com/browse/CBL-4305[CBL-4305 - Database's removeChangeListener() is deprecated] - -* https://issues.couchbase.com/browse/CBL-4304[CBL-4304 - Database's Document APIs are deprecated] - -* https://issues.couchbase.com/browse/CBL-5331[CBL-5331 - Deprecate Replicator's `removeChangeListener`] - -* https://issues.couchbase.com/browse/CBL-5330[CBL-5330 - Deprecate Replicator's `removeChangeListener`] - -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0 Beta 1, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] diff --git a/modules/objc/partials/release-notes/couchbase-mobile-objc-release-note.3.2.0.adoc b/modules/objc/partials/release-notes/couchbase-mobile-objc-release-note.3.2.0.adoc deleted file mode 100644 index 598ea7080..000000000 --- a/modules/objc/partials/release-notes/couchbase-mobile-objc-release-note.3.2.0.adoc +++ /dev/null @@ -1,181 +0,0 @@ -[#maint-3-2-0] -== 3.2.0 -- August 2024 - -Version 3.2.0 for {param-title} delivers the following features and enhancements: - -=== Downgrade Support - -Downgrades from 3.2.x to any other version of Couchbase Lite are not supported. - -=== Enhancements - -// Lite Core begin - -* https://issues.couchbase.com/browse/CBL-5287[CBL-5287 - Enable Prediction Function in SQL++] - -* https://issues.couchbase.com/browse/CBL-5634[CBL-5634 - NoRev enhancement with Replacement Rev in pull replication] - -* https://issues.couchbase.com/browse/CBL-5687[CBL-5687 - Update replication protocol doc per ReplacementRev changes] - -* https://issues.couchbase.com/browse/CBL-4412[CBL-4412 - Enhance checkpoint resolution algorithm when local and remote checkpoint are mismatched] - -* https://issues.couchbase.com/browse/CBL-5346[CBL-5346 - Logging Replicator reasons of state change] - -* https://issues.couchbase.com/browse/CBL-283[CBL-283 - Support Date Format other than ISO 8601 in SQL++] - -* https://issues.couchbase.com/browse/CBL-68[CBL-68 - DATE_DIFF_MILLIS(date1, date2, part)] - -* https://issues.couchbase.com/browse/CBL-67[CBL-67 - DATE_ADD_STR(date1, n, part)] - -* https://issues.couchbase.com/browse/CBL-66[CBL-66 - DATE_ADD_MILLIS(date1, n, part)] - -* https://issues.couchbase.com/browse/CBL-65[CBL-65 - MILLIS_TO_UTC(date1 [, fmt])] - -* https://issues.couchbase.com/browse/CBL-64[CBL-64 - MILLIS_TO_TZ(date1, tz [, fmt])] - -* https://issues.couchbase.com/browse/CBL-62[CBL-62 - STR_TO_TZ(date1, tz)] - -* https://issues.couchbase.com/browse/CBL-61[CBL-61 - MILLIS_TO_STR(date1 [, fmt ])] - -* https://issues.couchbase.com/browse/CBL-60[CBL-60 - DATE_DIFF_STR(date1, date2, part)] - -* https://issues.couchbase.com/browse/CBL-5241[CBL-5241 - Enhancement to Upsert performance when the number of docs increase] - -// Lite Core end - - -* https://issues.couchbase.com/browse/CBL-5265[CBL-5265 - Include Privacy Manifest in the released library] - -* https://issues.couchbase.com/browse/CBL-5209[CBL-5209 - Implement Collection's database property] - -* https://issues.couchbase.com/browse/CBL-5203[CBL-5203 - Implementation Collection's full-name property] - -* https://issues.couchbase.com/browse/CBL-5508[CBL-5508 - Update Min macOS Support Version to 12.0] - -* https://issues.couchbase.com/browse/CBL-5487[CBL-5487 - CBL ObjC Framework Warning about Double-quoted include] - -* https://issues.couchbase.com/browse/CBL-5374[CBL-5374 - Change all Swift IndexConfiguration from class to struct] - -* https://issues.couchbase.com/browse/CBL-5378[CBL-5378 - Update iOS Target Version to 12] - -* https://issues.couchbase.com/browse/CBL-5415[CBL-5415 - Remove unneccesary symbols from exp file] - -* https://issues.couchbase.com/browse/CBL-60[CBL-60 - Added missing Objective-C symbols to the exp file] - - - -=== Issues and Resolutions - -// Lite Core begin - -* https://issues.couchbase.com/browse/CBL-3846[CBL-3846 - Fixed corrupt Revision Data error when saving documents] - -* https://issues.couchbase.com/browse/CBL-4247[CBL-4247 - Fixed Replicator binary logs with collections cannot be decoded] - -* https://issues.couchbase.com/browse/CBL-4326[CBL-4326 - Fixed opening the upgraded database from 2.8 to 3.0.2 is slow] - -* https://issues.couchbase.com/browse/CBL-4334[CBL-4334 - Fixed Data getting corrupted during collection replication] - -* https://issues.couchbase.com/browse/CBL-4390[CBL-4390 - Fixed The URL Scheme the HTTP Message is incorrect when using proxy] - -* https://issues.couchbase.com/browse/CBL-4391[CBL-4391 - Fixed Stop replicator could cause 'database is locked' error when saving a document] - -* https://issues.couchbase.com/browse/CBL-4413[CBL-4413 - Fixed Compaction could cause "database is locked" error when the replicator attempts to save its checkpoint at the same time] - -* https://issues.couchbase.com/browse/CBL-4470[CBL-4470 - Fixed FLTimestamp_ToString() could return a slice with a wrong size] - -* https://issues.couchbase.com/browse/CBL-4493[CBL-4493 - Fixed Couchbase Lite C - Flutter plugin (dart language bindings) replication not resuming when internet reconnected] - -* https://issues.couchbase.com/browse/CBL-4499[CBL-4499 - Fixed Replicator may get stuck when there is an error of "Invalid delta"] - -* https://issues.couchbase.com/browse/CBL-4506[CBL-4506 - Fixed Replicator starts up slow for big database] - -* https://issues.couchbase.com/browse/CBL-4536[CBL-4536 - Fixed error when saving documents with LiteCore error 17: must be called during a transaction] - -* https://issues.couchbase.com/browse/CBL-4547[CBL-4547 - Allow DictKeys to cache shared keys from query results] - -* https://issues.couchbase.com/browse/CBL-4568[CBL-4568 - Fixed URLEndpointListener.getURLs returns an empty list on Android v>=11] - -* https://issues.couchbase.com/browse/CBL-4639[CBL-4639 - Use FTS match() in the WHERE clause of LEFT OUTER JOINS Not Returning Correct Result] - -* https://issues.couchbase.com/browse/CBL-4750[CBL-4750 - Fixed c4queryenum_next crashes with FTS] - -* https://issues.couchbase.com/browse/CBL-4801[CBL-4801 - Fixed opening an old db is slow in V3.1 the first time] - -* https://issues.couchbase.com/browse/CBL-4802[CBL-4802 - Fixed websocket implementation unable to handle continuation fragments] - -* https://issues.couchbase.com/browse/CBL-4838[CBL-4838 - Fixed Attachments/Blobs got deleted after compaction&re-sync] - -* https://issues.couchbase.com/browse/CBL-4913[CBL-4913 - Fixed regression in pull of blobs/legacy attachment handling] - -* https://issues.couchbase.com/browse/CBL-5082[CBL-5082 - Fixed crash in setting Housekeeper::_doExpiration()] - -* https://issues.couchbase.com/browse/CBL-5033[CBL-5033 - Fixed Puller revoked docs should queue with other revs] - -* https://issues.couchbase.com/browse/CBL-5044[CBL-5044 - Don't capture backtrace for OutOfRange error FLDictIterator_Next] - -* https://issues.couchbase.com/browse/CBL-5307[CBL-5307 - Correctly updating remote revision when pulling the existing revision] - -* https://issues.couchbase.com/browse/CBL-5332[CBL-5332 - Fixed crash during document expiration] - -* https://issues.couchbase.com/browse/CBL-5335[CBL-5335 - Fixed array_agg failures] - -* https://issues.couchbase.com/browse/CBL-5336[CBL-5336 - Over the bound of FLDicIterator should be banned] - -* https://issues.couchbase.com/browse/CBL-5377[CBL-5377 - Fixed MILLIS_TO_STRING is returning UTC instead of local time zone] - -* https://issues.couchbase.com/browse/CBL-5449[CBL-5449 - Fixed Attachments flag is dropped when applying delta to incoming rev] - -* https://issues.couchbase.com/browse/CBL-5515[CBL-5515 - Fixed Result alias can't be used elsewhere in query] - -* https://issues.couchbase.com/browse/CBL-5540[CBL-5540 - Fixed pthread_mutex_lock called on a destroyed mutex] - -* https://issues.couchbase.com/browse/CBL-5587[CBL-5587 - Fixed Remote rev KeepBody flag could be cleared accidentally] - -* https://issues.couchbase.com/browse/CBL-5589[CBL-5589 - Fixed N1QL Parser has exponential slowdown for redundant parentheses] - -* https://issues.couchbase.com/browse/CBL-5646[CBL-5646 - Fixed Null dereference crash in gotHTTPResponse] - -* https://issues.couchbase.com/browse/CBL-5724[CBL-5724 - Fixed Replicator syncs from beginning when using prebuilt dbs synced from SG] - -// Lite Core end - -* https://issues.couchbase.com/browse/CBL-5693[CBL-5693 - Fixed some Objective-C symbols are missing in the exp file] - -* https://issues.couchbase.com/browse/CBL-5524[CBL-5524 - Fixed required keys are missing in Privacy Manifest file] - -* https://issues.couchbase.com/browse/CBL-4442[CBL-4442 - Update Database API deprecation messages] - -* https://issues.couchbase.com/browse/CBL-4441[CBL-4441 - Fixed Collection.addDocumentChangeListener() can fatal crash] - -* https://issues.couchbase.com/browse/CBL-4440[CBL-4440 - Fixed CBLCollection could be leaked if document listener token is not removed] - -* https://issues.couchbase.com/browse/CBL-4429[CBL-4429 - Fixed crash when starting multiple live queries concurrently] - -* https://issues.couchbase.com/browse/CBL-4512[CBL-4512 - Fixed ListenerToken is not discardable in Collection's add change listener functions] - -* https://issues.couchbase.com/browse/CBL-4985[CBL-4985 - Remap Changes LiteCore Log Domain to Database Domain] - -* https://issues.couchbase.com/browse/CBL-5399[CBL-5399 - Fixed Close database might hang waiting for no active replicators or live queries] - -* https://issues.couchbase.com/browse/CBL-5418[CBL-5418 - Ensure the network streams are disconnected before CBLWebSocket is deallocated] - -* https://issues.couchbase.com/browse/CBL-4582[CBL-4582 - Fixed MutableDocument contains(key: String) returns wrong result] - -* https://issues.couchbase.com/browse/CBL-5075[CBL-5075 - Fixed Replicator background task doesn't take conflict resolution into account] - -* https://issues.couchbase.com/browse/CBL-5660[CBL-5660 - Fixed Invalidated context may be used in query observer callback] - -* https://issues.couchbase.com/browse/CBL-4336[CBL-4336 - Fixed Missing subscript function implementation in Collection class] - -* https://issues.couchbase.com/browse/CBL-6192[CBL-6192 - Fixed Client Side Proxy CONNECT request is broken] - -=== Known Issues - -None for this release - -=== Deprecations - -No new deprecations for GA release - -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] diff --git a/modules/objc/partials/release-notes/couchbase-mobile-objc-release-note.3.2.1.adoc b/modules/objc/partials/release-notes/couchbase-mobile-objc-release-note.3.2.1.adoc deleted file mode 100644 index 9327656db..000000000 --- a/modules/objc/partials/release-notes/couchbase-mobile-objc-release-note.3.2.1.adoc +++ /dev/null @@ -1,36 +0,0 @@ -[#maint-3-2-1] -== 3.2.1 -- November 2024 - -Version 3.2.1 for {param-title} delivers the following features and enhancements: - -=== Enhancements - -// Lite Core begin - -* https://jira.issues.couchbase.com/browse/CBL-5169[CBL-5169 - Support for Unnest Query and Array Index] - -* https://jira.issues.couchbase.com/browse/CBL-6303[CBL-6303 - Add ability to disable mmap usage] - -// Lite Core end - -=== Issues and Resolutions - -// Lite Core begin - -* https://jira.issues.couchbase.com/browse/CBL-6131[CBL-6131 - Fixed race creating the expiration column in a collection table] - -* https://jira.issues.couchbase.com/browse/CBL-6245[CBL-6245 - Fixed query parser regression related to brackets] - -* https://jira.issues.couchbase.com/browse/CBL-6378[CBL-6378 - Crash when calling onWebSocketGotTLSCertificate callback after the connection is closed] - -// Lite Core end - -=== Known Issues - -None for this release - -=== Deprecations - -No new deprecations for GA release - -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] diff --git a/modules/objc/partials/release-notes/couchbase-mobile-objc-release-note.3.2.2.adoc b/modules/objc/partials/release-notes/couchbase-mobile-objc-release-note.3.2.2.adoc deleted file mode 100644 index 99a13acfa..000000000 --- a/modules/objc/partials/release-notes/couchbase-mobile-objc-release-note.3.2.2.adoc +++ /dev/null @@ -1,30 +0,0 @@ -[#maint-3-2-2] -== 3.2.2 -- March 2025 - -Version 3.2.2 for {param-title} delivers the following features and enhancements: - -=== Enhancements - -* https://jira.issues.couchbase.com/browse/CBL-5185[CBL-5185 - Support for Partial Indexes in Value and Full-Text Indexes] - -* https://jira.issues.couchbase.com/browse/CBL-6451[CBL-6451 - LogSink API for Configuring Couchbase Lite Logging] - -=== Issues and Resolutions - -// Lite Core begin - -* https://jira.issues.couchbase.com/browse/CBL-6534[CBL-6534 - No Such Table Error When Upgrading from 3.1.9 to 3.2.1] - -* https://jira.issues.couchbase.com/browse/CBL-6822[CBL-6822 - Replicator may hang while stopping the housekeeper task during stop] - -// Lite Core end - -=== Known Issues - -None for this release - -=== Deprecations - -* https://jira.issues.couchbase.com/browse/CBL-6679[CBL-6679 - Deprecated: Database.log API for Configuring Couchbase Lite Logging — Use LogSink API Instead] - -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] diff --git a/modules/objc/partials/release-notes/couchbase-mobile-objc-release-note.3.2.3.adoc b/modules/objc/partials/release-notes/couchbase-mobile-objc-release-note.3.2.3.adoc deleted file mode 100644 index e9dd467fb..000000000 --- a/modules/objc/partials/release-notes/couchbase-mobile-objc-release-note.3.2.3.adoc +++ /dev/null @@ -1,24 +0,0 @@ -[#maint-3-2-3] -== 3.2.3 -- April 2025 - -Version 3.2.3 for {param-title} delivers the following features and enhancements: - -=== Enhancements - -* https://jira.issues.couchbase.com/browse/CBL-6818[CBL-6818 -- Allow document from the same collection but different collection instance to be saved or deleted] - -* https://jira.issues.couchbase.com/browse/CBL-6701[CBL-6701 -- Swift API Enhancements: Codable Integration and Combine Support for Change Notifications] - -=== Issues and Resolutions - -include::ROOT:partial$release-notes/couchbase-mobile-litecore-release-note.3.2.3.adoc[tags=fixes] - -=== Known Issues - -* https://jira.issues.couchbase.com/browse/CBL-6959[CBL-6959 -- UserAgent info in the log shows LiteCore version as 3.2.2 instead of 3.2.3] - -=== Deprecations - -None for this release - -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] diff --git a/modules/objc/partials/release-notes/couchbase-mobile-objc-release-note.3.3.0.adoc b/modules/objc/partials/release-notes/couchbase-mobile-objc-release-note.3.3.0.adoc new file mode 100644 index 000000000..d61ece8d6 --- /dev/null +++ b/modules/objc/partials/release-notes/couchbase-mobile-objc-release-note.3.3.0.adoc @@ -0,0 +1,35 @@ +[#maint-3-3-0] +== 3.3.0 -- September 2025 + +Version 3.3.0 for {param-title} delivers the following features and enhancements: + +=== Downgrade Support + +Downgrades from 3.3.x to any other version of Couchbase Lite are not supported. + +=== Enhancements + +// Lite Core begin + + +// Lite Core end + + + + +=== Issues and Resolutions + +// Lite Core begin + +// Lite Core end + + +=== Known Issues + +None for this release + +=== Deprecations + +No new deprecations for GA release + +NOTE: For an overview of the latest features offered in Couchbase Lite 3.3.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.3] diff --git a/modules/objc/partials/release-notes/couchbase-mobile-objc-release-note.4.0.0.adoc b/modules/objc/partials/release-notes/couchbase-mobile-objc-release-note.4.0.0.adoc new file mode 100644 index 000000000..efe5e3f7b --- /dev/null +++ b/modules/objc/partials/release-notes/couchbase-mobile-objc-release-note.4.0.0.adoc @@ -0,0 +1,53 @@ +[#maint-4-0-0] +== 4.0.0 -- Q1 2025 + +Version 4.0.0 for {param-title} delivers the following features and enhancements: + +== Couchbase Lite Release Notes + +=== Downgrade Support + +Downgrades from 4.0 to earlier versions of Couchbase Lite are not supported. + +=== Enhancements + +// Lite Core begin + +NOTE: TODO + +* https://issues.couchbase.com/browse/CBL-5287[CBL-5287 - Enable Prediction Function in SQL++] + +// Lite Core end + +NOTE: TODO + +* https://issues.couchbase.com/browse/CBL-5213[CBL-5213 - Implement Proxy Authenticator API for Android / Java] + +=== Issues and Resolutions + +// Lite Core begin + +NOTE: TODO + +* https://issues.couchbase.com/browse/CBL-3846[CBL-3846 - Fixed corrupt Revision Data error when saving documents] + + +// Lite Core end + +NOTE: TODO + +* https://issues.couchbase.com/browse/CBL-5225[CBL-5225 - Fixed ReplicatedDocument getters do not comply with the spec] + +=== Known Issues + +NOTE: TODO + +None for this release + +=== Deprecations + +NOTE: TODO + +No new deprecations for GA release + +NOTE: For an overview of the latest features offered in Couchbase Lite 4.0.0, see xref:ROOT:cbl-whatsnew.adoc[New in 4.0] diff --git a/modules/objc/partials/release-notes/couchbase-mobile-objc-vs-release-note.1.0.0-beta.adoc b/modules/objc/partials/release-notes/couchbase-mobile-objc-vs-release-note.1.0.0-beta.adoc index aa0ee8015..d30a18ede 100644 --- a/modules/objc/partials/release-notes/couchbase-mobile-objc-vs-release-note.1.0.0-beta.adoc +++ b/modules/objc/partials/release-notes/couchbase-mobile-objc-vs-release-note.1.0.0-beta.adoc @@ -21,4 +21,4 @@ None for this release None for this release -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] +NOTE: For an overview of the latest features offered in Couchbase Lite 4.0.0, see xref:ROOT:cbl-whatsnew.adoc[New in 4.0] diff --git a/modules/swift/examples/code_snippets.xcodeproj/project.pbxproj b/modules/swift/examples/code_snippets.xcodeproj/project.pbxproj index afa680213..f11502d63 100644 --- a/modules/swift/examples/code_snippets.xcodeproj/project.pbxproj +++ b/modules/swift/examples/code_snippets.xcodeproj/project.pbxproj @@ -16,6 +16,7 @@ 4001A1B52BB33AB60067B507 /* CouchbaseLiteVectorSearch.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4001A1B22BB33AB60067B507 /* CouchbaseLiteVectorSearch.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 4001A1B62BB33AB60067B507 /* CouchbaseLiteSwift.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4001A1B32BB33AB60067B507 /* CouchbaseLiteSwift.xcframework */; }; 4001A1B72BB33AB60067B507 /* CouchbaseLiteSwift.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4001A1B32BB33AB60067B507 /* CouchbaseLiteSwift.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 40A3E5F02E1FA67E00DF445B /* MultipeerReplicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40A3E5EF2E1FA67E00DF445B /* MultipeerReplicator.swift */; }; AE3079322DBBE9B500B4112C /* CodableCombine.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE3079312DBBE9B000B4112C /* CodableCombine.swift */; }; AE5F25412CA7039A00AAB7F4 /* Getting-Started.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE5F25402CA7039A00AAB7F4 /* Getting-Started.swift */; }; AEE304BF2BADBAB500C12A19 /* VectorSearch.swift in Sources */ = {isa = PBXBuildFile; fileRef = AEE304BE2BADBAB500C12A19 /* VectorSearch.swift */; }; @@ -45,6 +46,7 @@ 1A354D0D273B643F001A20BE /* SampleCodeTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SampleCodeTest.swift; sourceTree = ""; }; 4001A1B22BB33AB60067B507 /* CouchbaseLiteVectorSearch.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = CouchbaseLiteVectorSearch.xcframework; path = Frameworks/CouchbaseLiteVectorSearch.xcframework; sourceTree = ""; }; 4001A1B32BB33AB60067B507 /* CouchbaseLiteSwift.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = CouchbaseLiteSwift.xcframework; path = Frameworks/CouchbaseLiteSwift.xcframework; sourceTree = ""; }; + 40A3E5EF2E1FA67E00DF445B /* MultipeerReplicator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MultipeerReplicator.swift; sourceTree = ""; }; AE3079312DBBE9B000B4112C /* CodableCombine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CodableCombine.swift; sourceTree = ""; }; AE5F25402CA7039A00AAB7F4 /* Getting-Started.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Getting-Started.swift"; sourceTree = ""; }; AEE304BE2BADBAB500C12A19 /* VectorSearch.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VectorSearch.swift; sourceTree = ""; }; @@ -67,15 +69,16 @@ 1A354D00273B643F001A20BE /* code_snippets */ = { isa = PBXGroup; children = ( - AE5F25402CA7039A00AAB7F4 /* Getting-Started.swift */, 1A354D02273B643F001A20BE /* Assets.xcassets */, 1A354D03273B643F001A20BE /* LaunchScreen.storyboard */, 1A354D05273B643F001A20BE /* Main.storyboard */, 1A354D09273B643F001A20BE /* AppDelegate.swift */, + AE5F25402CA7039A00AAB7F4 /* Getting-Started.swift */, 1A354D0C273B643F001A20BE /* Info.plist */, + AE3079312DBBE9B000B4112C /* CodableCombine.swift */, 1A354D0D273B643F001A20BE /* SampleCodeTest.swift */, + 40A3E5EF2E1FA67E00DF445B /* MultipeerReplicator.swift */, AEE304BE2BADBAB500C12A19 /* VectorSearch.swift */, - AE3079312DBBE9B000B4112C /* CodableCombine.swift */, ); path = code_snippets; sourceTree = ""; @@ -182,6 +185,7 @@ files = ( AE3079322DBBE9B500B4112C /* CodableCombine.swift in Sources */, 1A354D18273B643F001A20BE /* SampleCodeTest.swift in Sources */, + 40A3E5F02E1FA67E00DF445B /* MultipeerReplicator.swift in Sources */, AEE304BF2BADBAB500C12A19 /* VectorSearch.swift in Sources */, AE5F25412CA7039A00AAB7F4 /* Getting-Started.swift in Sources */, 1A354D14273B643F001A20BE /* AppDelegate.swift in Sources */, diff --git a/modules/swift/examples/code_snippets/MultipeerReplicator.swift b/modules/swift/examples/code_snippets/MultipeerReplicator.swift new file mode 100644 index 000000000..818fbe99c --- /dev/null +++ b/modules/swift/examples/code_snippets/MultipeerReplicator.swift @@ -0,0 +1,289 @@ +// +// MultipeerReplicator.swift +// CouchbaseLite +// +// Copyright © 2025 couchbase. All rights reserved. +// + +import Foundation +import CouchbaseLiteSwift + +class MultipeerReplicatorSnippets { + var database: Database! + var collection1: Collection! + var collection2: Collection! + var collection3: Collection! + + func collectionSimple() throws -> [MultipeerCollectionConfiguration] { + // tag::multipeer-collection-simple[] + let collections = [collection1, collection2, collection3].map { + MultipeerCollectionConfiguration(collection: $0) + } + // end::multipeer-collection-simple[] + return collections + } + + func collectionConfig() throws -> [MultipeerCollectionConfiguration] { + // tag::multipeer-collection-config[] + class CustomConflictResolver: MultipeerConflictResolver { + func resolve(peerID: PeerID, conflict: Conflict) -> Document? { + return conflict.remoteDocument + } + } + + // Create a collection config with a conflict resolver + var config1 = MultipeerCollectionConfiguration(collection: collection1) + config1.conflictResolver = CustomConflictResolver() + + // Create a collection config with a document ID filter + var config2 = MultipeerCollectionConfiguration(collection: collection2) + config2.documentIDs = ["doc1", "doc2"] + + // Create a collection config with a push replication filter + var config3 = MultipeerCollectionConfiguration(collection: collection3) + config3.pushFilter = { peerID, document, flags in + return document.int(forKey: "access-level") == 2 + } + + let collections = [config1, config2, config3] + // end::multipeer-collection-config[] + return collections + } + + func createselfSignedIdentity() throws -> TLSIdentity { + // tag::multipeer-selfsigned-tlsidentity[] + let persistentLabel = "com.myapp.identity" + + // Retrieve the TLS identity from the keychain using the persistent label. + var identity = try TLSIdentity.identity(withLabel: persistentLabel) + + // If the identity exists but is expired, delete it. + if let existing = identity, existing.expiration < Date() { + try TLSIdentity.deleteIdentity(withLabel: persistentLabel) + identity = nil + } + + // If the identity doesn't exist or expired, create a new one. + if identity == nil { + // Define certificate attributes and expiration date. + let attrs: [String: String] = [certAttrCommonName: "MyApp"] + let expiration = Calendar.current.date(byAdding: .year, value: 2, to: Date())! + + // Create and store a new self-signed identity in the keychain with a persistent label. + identity = try TLSIdentity.createIdentity( + for: [.clientAuth, .serverAuth], + attributes: attrs, + expiration: expiration, + label: persistentLabel) + } + // end::multipeer-selfsigned-tlsidentity[] + return identity! + } + + func createCASignedIdentity() throws -> TLSIdentity { + // tag::multipeer-tlsidentity[] + let persistentLabel = "com.myapp.identity" + + // Retrieve the TLS identity from the keychain using the persistent label. + var identity = try TLSIdentity.identity(withLabel: persistentLabel) + + // If the identity exists but is expired, delete it. + if let existing = identity, existing.expiration < Date() { + try TLSIdentity.deleteIdentity(withLabel: persistentLabel) + identity = nil + } + + // If the identity doesn't exist or expired, create a new one. + if identity == nil { + // Define certificate attributes and expiration date. + let attrs: [String: String] = [certAttrCommonName: "MyApp"] + let expiration = Calendar.current.date(byAdding: .year, value: 2, to: Date())! + + // Get issuer's private key and certificate data (DER format) for signing the identity's certificate. + let caKey = try getIssuerPrivateKeyData() + let caCert = try getIssuerCertificateData() + + // Create and store a new identity signed with the issuer in the keychain with a persistent label. + identity = try TLSIdentity.createSignedIdentityInsecure( + for: [.clientAuth, .serverAuth], + attributes: attrs, + expiration: expiration, + caKey: caKey, + caCertificate: caCert, + label: persistentLabel) + } + // end::multipeer-tlsidentity[] + return identity! + } + + func getIssuerPrivateKeyData() throws -> Data { + return Data(base64Encoded: "your_base64_encoded_private_key")! + } + + func getIssuerCertificateData() throws -> Data { + return Data(base64Encoded: "your_base64_encoded_certicate")! + } + + func authenticatorWithCallback() throws -> MultipeerAuthenticator{ + // tag::multipeer-authenticator-callback[] + let authenticator = MultipeerCertificateAuthenticator { peerID, certs in + return true + } + // end::multipeer-authenticator-callback[] + return authenticator + } + + func authenticatorWithRootCerts() throws -> MultipeerAuthenticator { + // tag::multipeer-authenticator-rootcerts[] + // Get issuer's certificate data (DER format), which was used to sign the peer's certificate. + let caCert = try getIssuerCertificateData() + let caCertRef = SecCertificateCreateWithData(nil, caCert as CFData)! + let authenticator = MultipeerCertificateAuthenticator(rootCerts: [caCertRef]) + // end::multipeer-authenticator-rootcerts[] + return authenticator + } + + func createConfig() throws -> MultipeerReplicatorConfiguration { + let identity = try createCASignedIdentity() + let authenticator = try authenticatorWithRootCerts() + let collections = try collectionConfig() + + // tag::multipeer-config[] + let config = MultipeerReplicatorConfiguration( + peerGroupID: "com.myapp", + identity: identity, + authenticator: authenticator, + collections: collections) + // end::multipeer-config[] + return config + } + + func createMultipeerReplicator() throws -> MultipeerReplicator { + let config = try createConfig() + // tag::multipeer-replicator[] + let replicator = try MultipeerReplicator(config: config) + // end::multipeer-replicator[] + return replicator + } + + func startReplicator() throws { + let replicator = try createMultipeerReplicator() + // tag::multipeer-replicator-start[] + replicator.start() + // end::multipeer-replicator-start[] + } + + func stopReplicator() throws { + let replicator = try createMultipeerReplicator() + // tag::multipeer-replicator-stop[] + replicator.stop() + // end::multipeer-replicator-stop[] + } + + func statusListener() throws { + let replicator = try createMultipeerReplicator() + // tag::multipeer-status-listener[] + let token = replicator.addStatusListener { status in + let state = status.active ? "active" : "inactive" + let error = status.error?.localizedDescription ?? "none" + print("Multipeer Replicator: \(state), Error: \(error)") + } + // end::multipeer-status-listener[] + } + + func peerDiscoveryListener() throws { + let replicator = try createMultipeerReplicator() + // tag::multipeer-peer-discovery-listener[] + let token = replicator.addPeerDiscoveryStatusListener { status in + let online = status.online ? "online" : "offline" + print("Peer Discovery Status - Peer ID: \(status.peerID), Status: \(online)") + } + // end::multipeer-peer-discovery-listener[] + } + + func peerReplicatorStatus() throws { + let replicator = try createMultipeerReplicator() + // tag::multipeer-replicator-status-listener[] + let activities = ["stopped", "offline", "connecting", "idle", "busy"] + let token = replicator.addPeerReplicatorStatusListener { replStatus in + let direction = replStatus.outgoing ? "outgoing" : "incoming" + let activity = activities[Int(replStatus.status.activity.rawValue)] + let error = replStatus.status.error?.localizedDescription ?? "none" + print("Peer Replicator Status - Peer ID: \(replStatus.peerID), " + + "Direction: \(direction), " + + "Activity: \(activity), " + + "Error: \(error)") + } + // end::multipeer-replicator-status-listener[] + } + + func peerDocumentReplication() throws { + let replicator = try createMultipeerReplicator() + // tag::multipeer-document-replication-listener[] + let token = replicator.addPeerDocumentReplicationListener { docRepl in + let direction = docRepl.isPush ? "Push" : "Pull" + print("Peer Document Replication - Peer ID: \(docRepl.peerID), Direction: \(direction)") + docRepl.documents.forEach { doc in + let error = doc.error?.localizedDescription ?? "none" + let collection = "\(doc.scope).\(doc.collection)" + print(" Collection: \(collection)" + + " Document ID: \(doc.id)," + + " Flags: \(doc.flags)," + + " Error: \(error)") + } + } + // end::multipeer-document-replication-listener[] + } + + func peerID() throws { + let replicator = try createMultipeerReplicator() + // tag::multipeer-peer-id[] + let peerID = replicator.peerID + print("Peer ID: \(peerID)") + // end::multipeer-peer-id[] + } + + func neighborPeers() throws { + let replicator = try createMultipeerReplicator() + // tag::multipeer-neighbor-peers[] + print("Neighbor Peers:") + replicator.neighborPeers.forEach { peerID in + print(" \(peerID)") + } + // end::multipeer-neighbor-peers[] + } + + func peerInfo() throws { + let replicator = try createMultipeerReplicator() + // tag::multipeer-peer-info[] + let activities = ["stopped", "offline", "connecting", "idle", "busy"] + + let printPeerInfo: (PeerInfo) -> Void = { info in + print("Peer ID: \(info.peerID)") + print(" Status: \(info.online ? "online" : "offline")") + print(" Neighbor Peers:") + info.neighborPeers.forEach { peerID in + print(" \(peerID)") + } + + let replStatus = info.replicatorStatus + let activity = activities[Int(replStatus.activity.rawValue)] + let error = replStatus.error?.localizedDescription ?? "none" + print(" Replicator Status: \(activity), Error: \(error)") + } + + replicator.neighborPeers.forEach { peerID in + if let peerInfo = replicator.peerInfo(for: peerID) { + printPeerInfo(peerInfo) + } + } + // end::multipeer-peer-info[] + } + + func logging() throws { + // tag::multipeer-logdomain[] + // Enable verbose console logging for multipeer replicator-related domains only. + LogSinks.console = ConsoleLogSink(level: .verbose, domains: [.peerDiscovery, .multipeer]) + // end::multipeer-logdomain[] + } +} diff --git a/modules/swift/examples/code_snippets/SampleCodeTest.swift b/modules/swift/examples/code_snippets/SampleCodeTest.swift index 6f355a825..2e0e05ac7 100644 --- a/modules/swift/examples/code_snippets/SampleCodeTest.swift +++ b/modules/swift/examples/code_snippets/SampleCodeTest.swift @@ -84,13 +84,13 @@ class SampleCodeTest { #endif // MARK: Logging - + func dontTestOldLoggingApi() throws { // tag::console-logging[] Database.log.console.domains = .all // <.> Database.log.console.level = .verbose // <.> // end::console-logging[] - + // tag::file-logging[] let tempFolder = NSTemporaryDirectory().appending("cbllog") let config = LogFileConfiguration(directory: tempFolder) // <.> @@ -100,28 +100,28 @@ class SampleCodeTest { Database.log.file.config = config // <.> Database.log.file.level = .verbose // <.> // end::file-logging[] - + // tag::set-custom-logging[] let logger = LogTestLogger(.warning) Database.log.custom = logger // <.> // end::set-custom-logging[] } - + func dontTestNewLoggingApi() throws { // tag::new-console-logging[] LogSinks.console = ConsoleLogSink(level: .verbose, domains: .all) // end::new-console-logging[] - + // tag::new-file-logging[] let tempFolder = NSTemporaryDirectory().appending("cbllog") LogSinks.file = FileLogSink(level: .verbose, directory: tempFolder, usePlainText: false, maxKeptFiles: 12, maxFileSize: 524288) // end::new-file-logging[] - + // tag::set-new-custom-logging[] LogSinks.custom = CustomLogSink(level: .warning, logSink: TestLogSink()) // end::set-new-custom-logging[] } - + func dontTestLoadingPrebuilt() throws { // tag::prebuilt-database[] // Note: Getting the path to a database is platform-specific. @@ -162,7 +162,7 @@ class SampleCodeTest { // tag::date-getter[] let mutableDoc = MutableDocument(id: "xyz") mutableDoc.setValue(Date(), forKey: "createdAt") - + guard let doc = try collection.document(id: "xyz") else { return } let date = doc.date(forKey: "createdAt") // end::date-getter[] @@ -175,7 +175,7 @@ class SampleCodeTest { print(doc.toDictionary()) // end::to-dictionary[] } - + func dontTestToJSON() throws { // tag::to-json[] guard let doc = try collection.document(id: "xyz") else { return } @@ -280,14 +280,14 @@ class SampleCodeTest { try collection.createIndex(index, name: "TypeNameIndex") // end::query-index_Querybuilder[] } - + func dontTestPartialValueIndex() throws { // tag::partial-value-index[] let config = ValueIndexConfiguration(["city"], where: "type = \"hotel\"") try collection.createIndex(withName: "HotelCityIndex", config: config) // end::partial-value-index[] } - + func dontTestPartialFTSIndex() throws { // tag::partial-full-text-index[] let config = FullTextIndexConfiguration(["description"], where: "type = \"hotel\"") @@ -1066,7 +1066,7 @@ class SampleCodeTest { // tag::database-replica[] let targetDatabase = DatabaseEndpoint(database: database2) var config = ReplicatorConfiguration(target: targetDatabase) - + guard let collection1 = try database.collection(name: "collection1", scope: "scope1") else { return } config.addCollection(collection1) config.replicatorType = .push @@ -1459,7 +1459,7 @@ class SampleCodeTest { func dontTestQuerySyntaxProps() throws { // tag::query-syntax-props[] let collection = try self.database.createCollection(name: "hotel") - + let query = QueryBuilder .select(SelectResult.expression(Meta.id).as("metaId"), SelectResult.expression(Expression.property("id")), @@ -1536,7 +1536,7 @@ class SampleCodeTest { let name = doc.string(forKey: "name")! let city = doc.string(forKey: "city")! let type = doc.string(forKey: "type")! - + // ... process document properties as required print("Result properties are: \(hotelId), \(name), \(city), \(type)") } @@ -1605,15 +1605,15 @@ class SampleCodeTest { // Now you can get the document using the ID if let doc = try collection.document(id: docsId) { - + let hotelId = doc.string(forKey: "id")! - + let name = doc.string(forKey: "name")! - + let city = doc.string(forKey: "city")! - + let type = doc.string(forKey: "type")! - + // ... process document properties as required print("Result properties are: \(hotelId), \(name), \(city), \(type)") } @@ -1713,7 +1713,7 @@ class SampleCodeTest { var thisConfig = ReplicatorConfiguration(target: targetEndpoint) // <.> thisConfig.addCollection(collection) - + thisConfig.acceptOnlySelfSignedServerCertificate = true // <.> let thisAuthenticator = BasicAuthenticator(username: "valid.user", password: "valid.password.string") @@ -1897,30 +1897,30 @@ class SampleCodeTest { self.listener = URLEndpointListener.init(config: config) // <1> // end::p2p-ws-api-urlendpointlistener-constructor[] } - + func dontTestManageCollection() throws { guard let database = self.database else { return } - + // tag::scopes-manage-create-collection[] let collection = try database.createCollection(name: "myCollectionName", scope: "myScopeName") // end::scopes-manage-create-collection[] - + // tag::scopes-manage-index-collection[] let config = FullTextIndexConfiguration(["overview"]) try collection.createIndex(withName: "overviewFTSIndex", config: config) // end::scopes-manage-index-collection[] - + // tag::scopes-manage-list[] let scopes = try database.scopes() let collections = try database.collections(scope: "myScopeName") print("I have \(scopes.count) scopes and \(collections.count) collections") // end::scopes-manage-list[] - + // tag::scopes-manage-drop-collection[] try database.deleteCollection(name: "myCollectionName", scope: "myScopeName") // end::scopes-manage-drop-collection[] } - + // MARK: -- func fMyActPeer() throws { @@ -2023,7 +2023,7 @@ class SampleCodeTest { let target = DatabaseEndpoint(database: otherDB) var config = ReplicatorConfiguration(target: target) config.addCollection(collection) - + let cert = self.listener.tlsIdentity!.certs[0] let validUsername = "cbl-user-01" let validPassword = "secret" @@ -2253,7 +2253,7 @@ class SampleCodeTest { user: String?, pass: String?, handler: @escaping (PeerConnectionStatus, Error?) -> Void) throws { - + guard let validUser = user, let validPassword = pass else { fatalError("UserCredentialsNotProvided") // ... take appropriate actions @@ -2338,7 +2338,7 @@ class SampleCodeTest { // end::replicator-register-for-events[] func startListener() throws { - + var messageEndpointListener: MessageEndpointListener! // tag::listener[] @@ -2349,10 +2349,10 @@ class SampleCodeTest { print(messageEndpointListener.connections.count) } - + func initialize() throws { guard let collection = try? self.database.defaultCollection() else { return } - + // tag::sgw-act-rep-initialize[] let targetURL = URL(string: "wss://10.1.1.12:8092/travel-sample")! let targetEndpoint = URLEndpoint(url: targetURL) @@ -2508,7 +2508,7 @@ class LogTestLogger: Logger { // tag::new-custom-logging[] class TestLogSink: LogSinkProtocol { - + func writeLog(level: LogLevel, domain: LogDomain, message: String) { // handle the message, for example piping it to // a third party framework @@ -2552,7 +2552,7 @@ class ActivePeer: MessageEndpointDelegate { init() throws { let id = "" let database = try Database(name: "dbname") - + // tag::message-endpoint[] let collection = try database.createCollection(name: "collectionName") @@ -2807,7 +2807,7 @@ public class Supporting_Datatypes // Create a mutable copy let mutableDict = dict.toMutable() // end::datatype_dictionary[] - + print("street \(street) dict \(mutableDict)") } @@ -2859,7 +2859,7 @@ public class Supporting_Datatypes // Create a mutable copy let mutableArray = array.toMutable() // end::datatype_array[] - + print("phone is \(phone). mutable array is \(mutableArray)") } diff --git a/modules/swift/nav-swift.adoc b/modules/swift/nav-swift.adoc index 36bb9b8ce..d9f4e025b 100644 --- a/modules/swift/nav-swift.adoc +++ b/modules/swift/nav-swift.adoc @@ -9,7 +9,7 @@ include::partial$_set_page_context_for_swift.adoc[] * xref:swift:database.adoc[Databases] * xref:swift:prebuilt-database.adoc[Pre-built Database] - + * xref:swift:scopes-collections-manage.adoc[Scopes and Collections] * xref:swift:document.adoc[Documents] @@ -35,7 +35,8 @@ include::partial$_set_page_context_for_swift.adoc[] * Data Sync ** xref:swift:dbreplica.adoc[Intra-device Sync] ** xref:swift:replication.adoc[Remote Sync Gateway] - ** xref:swift:p2psync-websocket.adoc[Peer-to-Peer] + ** xref:swift:p2psync-multipeer.adoc[Multipeer Peer-to-Peer Replicator] + ** xref:swift:p2psync-websocket.adoc[Active-Passive Peer-to-Peer] *** xref:swift:p2psync-websocket-using-passive.adoc[Passive Peer] *** xref:swift:p2psync-websocket-using-active.adoc[Active Peer] *** xref:swift:p2psync-custom.adoc[Integrate Custom Listener] diff --git a/modules/swift/pages/compatibility.adoc b/modules/swift/pages/compatibility.adoc index 9103b5d48..fc8937114 100644 --- a/modules/swift/pages/compatibility.adoc +++ b/modules/swift/pages/compatibility.adoc @@ -24,7 +24,7 @@ Related Content -- xref:cbl-whatsnew.adoc[What's New] | xref:swift:releasenote The table below summarizes the compatible versions of Couchbase Lite with Sync Gateway. .Sync Gateway and Couchbase Lite Compatibility Matrix -[cols="3,^1,^1,^1,^1,^1,^1,^1"] +[cols="3,^1,^1,^1,^1,^1,^1,^1,^1"] |=== .2+^.>| Sync Gateway Versions ↓ @@ -37,6 +37,7 @@ The table below summarizes the compatible versions of Couchbase Lite with Sync G ^| 3.0.0 ^| 3.1.0 ^| 3.2.0 +^| 3.3.0 | 1.4 *footnote:eos-sgw[This Sync Gateway version is End of Support]* and 1.5 *footnote:eol-sgw[This Sync Gateway version is End of Life]* | image:ROOT:yes.png[] @@ -46,6 +47,7 @@ The table below summarizes the compatible versions of Couchbase Lite with Sync G | image:ROOT:no.png[] | image:ROOT:no.png[] | image:ROOT:no.png[] +| image:ROOT:no.png[] | 2.0 and 2.1 | image:ROOT:yes.png[] @@ -55,6 +57,7 @@ The table below summarizes the compatible versions of Couchbase Lite with Sync G | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] | 2.5 to 2.8 + with delta sync disabled @@ -65,6 +68,7 @@ with delta sync disabled | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] | 2.5 to 2.8 + with delta sync enabled @@ -75,6 +79,7 @@ with delta sync enabled | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] | 3.0.0 | image:ROOT:no.png[] @@ -84,6 +89,7 @@ with delta sync enabled | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] | 3.1.0 | image:ROOT:no.png[] @@ -93,6 +99,7 @@ with delta sync enabled | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] | 3.2.0 | image:ROOT:no.png[] @@ -102,6 +109,17 @@ with delta sync enabled | image:ROOT:yes.png[] | image:ROOT:yes.png[] | image:ROOT:yes.png[] +| image:ROOT:yes.png[] + +| 3.3.0 +| image:ROOT:no.png[] +| image:ROOT:yes.png[] +| image:ROOT:yes.png[] +| image:ROOT:yes.png[] +| image:ROOT:yes.png[] +| image:ROOT:yes.png[] +| image:ROOT:yes.png[] +| image:ROOT:yes.png[] |=== @@ -111,7 +129,7 @@ with delta sync enabled The table below summarizes the Operating System SDK versions supported by Couchbase Lite. .OS -- SDK Support -[cols="1,^1,^1,^1,^1,^1,^1,^1,^1,^1"] +[cols="1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1"] |=== @@ -125,6 +143,7 @@ The table below summarizes the Operating System SDK versions supported by Couchb ^.>h| 3.0 ^.>h| 3.1 ^.>h| 3.2 +^.>h| 3.3 h| Android | https://docs-archive.couchbase.com/home/index.html[archive link] @@ -135,7 +154,8 @@ h| Android | xref:2.8@couchbase-lite:android:supported-os.adoc[link] | xref:3.0@couchbase-lite:android:supported-os.adoc[link] | xref:3.1@couchbase-lite:android:supported-os.adoc[link] -| https://docs.couchbase.com/couchbase-lite/current/android/supported-os.html[link] +| xref:3.2@couchbase-lite:android:supported-os.adoc[link] +| xref:3.3@couchbase-lite:android:supported-os.adoc[link] h| C | - @@ -146,7 +166,8 @@ h| C | - | xref:3.0@couchbase-lite:c:supported-os.adoc[link] | xref:3.1@couchbase-lite:c:supported-os.adoc[link] -| https://docs.couchbase.com/couchbase-lite/current/c/supported-os.html[link] +| xref:3.2@couchbase-lite:c:supported-os.adoc[link] +| xref:3.3@couchbase-lite:c:supported-os.adoc[link] h| iOS | https://docs-archive.couchbase.com/home/index.html[archive link] @@ -157,7 +178,8 @@ h| iOS | xref:2.8@couchbase-lite:swift:supported-os.adoc[link] | xref:3.0@couchbase-lite:swift:supported-os.adoc[link] | xref:3.1@couchbase-lite:swift:supported-os.adoc[link] -| https://docs.couchbase.com/couchbase-lite/current/swift/supported-os.html[link] +| xref:3.2@couchbase-lite:swift:supported-os.adoc[link] +| xref:3.3@couchbase-lite:swift:supported-os.adoc[link] h| Java @@ -169,7 +191,8 @@ h| Java | xref:2.8@couchbase-lite:java:supported-os.adoc[link] | xref:3.0@couchbase-lite:java:supported-os.adoc[link] | xref:3.1@couchbase-lite:java:supported-os.adoc[link] -| https://docs.couchbase.com/couchbase-lite/current/java/supported-os.html[link] +| xref:3.2@couchbase-lite:java:supported-os.adoc[link] +| xref:3.3@couchbase-lite:java:supported-os.adoc[link] h| Javascript | - @@ -181,6 +204,7 @@ h| Javascript | xref:3.0@couchbase-lite:ROOT:javascript.adoc[link] | xref:3.1@couchbase-lite:ROOT:javascript.adoc[link] | xref:3.2@couchbase-lite:ROOT:javascript.adoc[link] +| xref:3.3@couchbase-lite:ROOT:javascript.adoc[link] h| .NET | https://docs-archive.couchbase.com/home/index.html[archive link] @@ -191,7 +215,8 @@ h| .NET | xref:2.8@couchbase-lite:csharp:supported-os.adoc[link] | xref:3.0@couchbase-lite:csharp:supported-os.adoc[link] | xref:3.1@couchbase-lite:csharp:supported-os.adoc[link] -| https://docs.couchbase.com/couchbase-lite/current/csharp/supported-os.html[link] +| xref:3.2@couchbase-lite:csharp:supported-os.adoc[link] +| xref:3.3@couchbase-lite:csharp:supported-os.adoc[link] |=== diff --git a/modules/swift/pages/gs-prereqs.adoc b/modules/swift/pages/gs-prereqs.adoc index 7b03e23c9..af9a4d374 100644 --- a/modules/swift/pages/gs-prereqs.adoc +++ b/modules/swift/pages/gs-prereqs.adoc @@ -49,8 +49,8 @@ See also: xref:swift:supported-os.adoc[Supported Versions] ==== -- -Support for Mac OS 10.12 -was deprecated in release 3.0 +Support for Mac OS 13 +is deprecated in release 3.3 and will be removed in a future release _Action:_ Please plan to migrate your apps to use an appropriate alternative version. diff --git a/modules/swift/pages/new-logging-api.adoc b/modules/swift/pages/new-logging-api.adoc index 6c9474b84..2b3c8ff7f 100644 --- a/modules/swift/pages/new-logging-api.adoc +++ b/modules/swift/pages/new-logging-api.adoc @@ -4,7 +4,7 @@ :page-edition: :page-aliases: :page-role: -:description: Couchbase Lite 3.2.2 introduces a new Logging API. +:description: Couchbase Lite 3.2.2 introduced a new Logging API. :keywords: edge mobile api java kotlin android apple logging file console custom [abstract] @@ -32,7 +32,7 @@ For information about the now deprecated earlier version of the Logging API, see [#logsinks] == LogSinks -Couchbase Lite 3.2.2 introduces a new Logging API. +Couchbase Lite 3.2.2 introduced a new Logging API. The new Logging API has the following benefits: * Log sinks are now thread safe, removing risk of inconsistent states during initialization. diff --git a/modules/swift/pages/p2psync-custom.adoc b/modules/swift/pages/p2psync-custom.adoc index f2b7635a0..47e6391ab 100644 --- a/modules/swift/pages/p2psync-custom.adoc +++ b/modules/swift/pages/p2psync-custom.adoc @@ -31,6 +31,13 @@ To use it in production (also see the https://www.couchbase.com/licensing-and-su This content covers how to integrate a custom __MessageEndpointListener__ solution with Couchbase Lite to handle the data transfer, which is the sending and receiving of data. Where applicable, we discuss how to integrate Couchbase Lite into the workflow. +Couchbase Lite supports different transport modes depending on the peer-to-peer synchronization approach: + +=== Custom Listener Integration +- Supports: Bring your own transport mode +- The application implements the transport layer, allowing for custom protocols including Bluetooth Low Energy +- Couchbase Lite provides the interface definition while the application handles the transport implementation + The following sections describe a typical Peer-to-Peer workflow. [#peer-discovery] diff --git a/modules/swift/pages/p2psync-multipeer.adoc b/modules/swift/pages/p2psync-multipeer.adoc new file mode 100644 index 000000000..0014ae233 --- /dev/null +++ b/modules/swift/pages/p2psync-multipeer.adoc @@ -0,0 +1,316 @@ += Multipeer P2P Replicator +ifdef::show_edition[:page-edition: Enterprise Edition] +:description: The Multipeer Replicator enables lightweight, self-organizing mesh networks for apps running on the same local Wi-Fi. +:source-language: swift + + +[abstract] +{description} +This approach requires minimal setup and automates peer discovery and connectivity management, making it simpler than xref:p2psync-websocket.adoc[active-passive P2P configurations]. + + +[#introduction] +// == Introduction +// tag::introduction-full[] +// tag::introduction[] +Couchbase Lite's Peer-to-Peer synchronization solution offers secure storage and bidirectional data synchronization between mobile and IoT devices without needing a centralized cloud-based control point. + +For small mesh topologies, Multipeer Replicator offers `autodiscovery` for Wi-Fi-based networks and secure communication via TLS and certificate-based authentication. +The dynamic mesh topology gives optimal peer connectivity and the lightweight and low-maintenance configuration requires less management and less code than using active-passive peer-to-peer sync. + +// end::introduction[] +// end::introduction-full[] + + +== Overview + +To maintain optimal connectivity, efficient data transport, and balanced workloads, the Multipeer Replicator forms a dynamic mesh network among peers in the same group. +The mesh network provides resilience through multiple communication pathways - if one connection fails, data can flow through alternative routes. +It avoids redundant direct connections, evenly distributes connections across peers, and optimizes communication paths through intelligent routing. + +The mesh network continuously adapts as peers join or leave, automatically healing itself by establishing new connections and rerouting data flow to maintain network integrity. + +This self-organizing approach ensures reliable data synchronization even in challenging network conditions, where individual peer connections may be intermittent or unreliable. + +Multipeer Replicator supports Wi-Fi (IP-based transport) as of CBL 3.3. + + +// Mesh Diagram + +// [mesh] +// .... +// graph { +// layout="circo"; +// id1[ label="iOS Device #1" shape="square" ] +// id2[ label="iOS Device #2" shape="square" ] +// id3[ label="iOS Device #3" shape="square" ] +// id4[ label="iOS Device #4" shape="square" ] +// id5[ label="iOS Device #5" shape="square" ] +// id6[ label="iOS Device #6" shape="square" ] +// id1 -- id2 +// id1 -- id3 +// id1 -- id4 +// id1 -- id5 +// id1 -- id6 +// id2 -- id3 +// id2 -- id4 +// id2 -- id5 +// id2 -- id6 +// id3 -- id4 +// id3 -- id5 +// id3 -- id6 +// id4 -- id5 +// id4 -- id6 +// id5 -- id6 +// } +// .... + + + +== Prerequisites + +=== Transport and Peer Discovery Protocol + +Multipeer Replicator supports Wi-Fi transport, using `DNS-SD` (also known as *Bonjour*) for peer discovery. +You must connect Peers to the same Wi-Fi network to discover and establish connections with one another. + +=== Configuration Requirements + +To use `DNS-SD` for peer discovery, iOS apps must declare the *Bonjour* service type and request local network access permissions. +Add the following keys to your app's `Info.plist`: + +==== NSBonjourServices +Declare the service type used by MultipeerReplicator: + +[source,xml] +---- +NSBonjourServices + + _couchbaseP2P._tcp + +---- + +==== NSLocalNetworkUsageDescription +Add a usage description for local network access: + +[source,xml] +---- +NSLocalNetworkUsageDescription +Used for discovering and connecting to peers for peer-to-peer sync. +---- + +TIP: You can also configure these settings through Xcode's Info configuration UI under "*Bonjour Services*" and "*Privacy – Local Network Usage Description*." + + +=== Supported Platforms + +We recommend using a recent release of iOS, see xref:swift:supported-os.adoc[Supported Platforms] for details. + + +== Configuration + +=== Collection Configurations + +You can specify one or more collections available for replication when creating a `MultipeerReplicatorConfiguration`. +For each collection, you'll create `MultipeerCollectionConfiguration` with the collection object and optionally configure a custom conflict resolver or any replication filters you want to use for the collection. + + +.Specify collections without any configurations +[source,swift] +---- +include::swift:example$code_snippets/MultipeerReplicator.swift[tags="multipeer-collection-simple", indent=0] +---- + +.Specify collections with some configuration +[source,swift] +---- +include::swift:example$code_snippets/MultipeerReplicator.swift[tags="multipeer-collection-config", indent=0] +---- + +=== Peer Identity + +Each peer in the Multipeer replication is uniquely identified and authenticated by using a peer's certificate. + +Multipeer Replicator which uses TLS communication by default requires to specify a `TLSIdentity` object for specifying the identity. + +You can use either a self-signed certificate for the identity or have an authority or issuer sign the identity's certificate. +The choice depends on your specific security requirements and deployment environment. + +As each peer could be either a client or a server to the other peer in the Multipeer replication environment, you must create the identity's certificate with the extension key usages for both client and server authentication to allow either direction to authenticate the certificate. + +==== CA-Signed Identity + +When using a certificate authority (CA) signed identity, the issuer's certificate authenticates the connecting peer. + +.Get and Create an identity signed by an issuer +[source,swift] +---- +include::swift:example$code_snippets/MultipeerReplicator.swift[tags="multipeer-tlsidentity", indent=0] +---- + +==== Self-Signed Identity + +For environments where certificate authority management is not feasible, you can implement peer identity using self-signed certificates. +This approach is commonly used in closed network environments where devices need to authenticate with each other without external certificate authorities. + +.Creating a self-signed identity for peer authentication +[source,swift] +---- +include::swift:example$code_snippets/MultipeerReplicator.swift[tags="multipeer-selfsigned-tlsidentity", indent=0] +---- + +When using self-signed certificates, implement your own certificate validation logic in the authenticator callback to make sure only trusted peers can join your mesh network. + +=== Peer Authenticator + +MultpeerReplicator only supports certificate based authentication. +You can specify the authenticator in two ways: + +* certificate authentication callback +* root certificates. + +When specifying the certificate authentication callback, the callback calls the remote peer's identity certificate. + +When specifying the root certificates, the Multipeer replicator automatically authenticates the remote peer's identity certificate by verifying whether one of the specified root certificates signed the certificate. + + +.Authenticator with authentication callback +[source,swift] +---- +include::swift:example$code_snippets/MultipeerReplicator.swift[tags="multipeer-authenticator-callback", indent=0] +---- + +.Authenticator with root certificates +[source,swift] +---- +include::swift:example$code_snippets/MultipeerReplicator.swift[tags="multipeer-authenticator-rootcerts", indent=0] +---- + +=== Create MultipeerReplicatorConfiguration + +The `MultipeerReplicatorConfiguration` can be created with a `peerGroupID` which is an identity identifies the Peer-to-peer network used by the app, collection configurations, peer identity, and authenticator. + + +.Creating MultipeerReplicatorConfiguration +[source,swift] +---- +include::swift:example$code_snippets/MultipeerReplicator.swift[tags="multipeer-config", indent=0] +---- + +TIP: Performance may vary in mesh networks depending on your specific environment and number of peers. +We recommend running tests with your network configuration to assess any effects on packet loss or latency. + + +== Life Cycle + +=== Create MultipeerReplicator with Configuration + +.Creating MultipeerReplicator +[source,swift] +---- +include::swift:example$code_snippets/MultipeerReplicator.swift[tags="multipeer-replicator", indent=0] +---- + +=== Start + +.Starting MultipeerReplicator +[source,swift] +---- +include::swift:example$code_snippets/MultipeerReplicator.swift[tags="multipeer-replicator-start", indent=0] +---- + +=== Stop + +.Stopping MultipeerReplicator +[source,swift] +---- +include::swift:example$code_snippets/MultipeerReplicator.swift[tags="multipeer-replicator-stop", indent=0] +---- + +=== Events + +In general, the connection should just work, and most of these optional listen events give status you may only want to use during development and testing. +Event types include the following: + +==== Multipeer Replicator Status + +.Multipeer Replicator Status Listener +[source,swift] +---- +include::swift:example$code_snippets/MultipeerReplicator.swift[tags="multipeer-status-listener", indent=0] +---- + +==== Peer Discovery Status + +.Peer Discovery Status Listener +[source,swift] +---- +include::swift:example$code_snippets/MultipeerReplicator.swift[tags="multipeer-peer-discovery-listener", indent=0] +---- + +==== Peer's Replicator Status + +.Peer's Replicator Status Listener +[source,swift] +---- +include::swift:example$code_snippets/MultipeerReplicator.swift[tags="multipeer-replicator-status-listener", indent=0] +---- + +==== Peer's Document Replication + +.Peer's Document Replication Listener +[source,swift] +---- +include::swift:example$code_snippets/MultipeerReplicator.swift[tags="multipeer-document-replication-listener", indent=0] +---- + + +== Peer Info + +=== Peer Identifier + +A unique `peerID`, which is a digest of the peer's identity certificate, identifies each peer. +You can get your `peerID` from the `peerID` property of the `MultipeerReplicator`. + + +.Getting peer ID +[source,swift] +---- +include::swift:example$code_snippets/MultipeerReplicator.swift[tags="multipeer-peer-id", indent=0] +---- + +=== Neighbor Peers + +You can get a list of current online peers' Identifiers from the `MultipeerReplicator` from the `neighborPeers` property. + +.Getting neighbor peers +[source,swift] +---- +include::swift:example$code_snippets/MultipeerReplicator.swift[tags="multipeer-neighbor-peers", indent=0] +---- + +=== Peer Info + +.Getting peer info +[source,swift] +---- +include::swift:example$code_snippets/MultipeerReplicator.swift[tags="multipeer-peer-info", indent=0] +---- + + +== Logging + +`LogDomain` sets up the logging of: + +. Peer discovery log messages +. Multipeer replication and mesh network management log messages + +[source,swift] +---- +include::swift:example$code_snippets/MultipeerReplicator.swift[tags="multipeer-logdomain", indent=0] +---- + + +== API Reference + +You can find https://docs.couchbase.com/mobile/{major}.{minor}.{maintenance-swift}{empty}/couchbase-lite-swift[Swift API References] here. diff --git a/modules/swift/pages/p2psync-websocket-using-active.adoc b/modules/swift/pages/p2psync-websocket-using-active.adoc index b0d114838..c72f372d3 100644 --- a/modules/swift/pages/p2psync-websocket-using-active.adoc +++ b/modules/swift/pages/p2psync-websocket-using-active.adoc @@ -34,6 +34,23 @@ Use them as inspiration and adapt these examples to best practice when developin This content provides sample code and configuration examples covering the implementation of xref:refer-glossary.adoc#peer-to-peer-sync[Peer-to-Peer Sync] over WebSockets. Specifically it covers the implementation of an xref:refer-glossary.adoc#active-peer[Active Peer]. + +[TIP] +.Multipeer P2P Replicator +==== +xref:p2psync-multipeer.adoc[Multipeer P2P Replicator] is available for Android, offering: + +* Auto-discovery over local Wi-Fi (via `DNS-SD`) +* Lightweight and low-maintenance configuration +* Dynamic mesh topology for optimal peer connectivity +* Secure communication via TLS and certificate-based authentication + +For many use cases, this will be quicker to develop for than Active-Passive peer-to-peer sync. +==== + + + + This _active peer_ (also referred to as a client and-or a replicator) will initiate the connection with a xref:refer-glossary.adoc#passive-peer[Passive Peer] (also referred to as a server and-or listener) and participate in the replication of database changes to bring both databases into sync. Subsequent sections provide additional details and examples for the main configuration options. diff --git a/modules/swift/pages/p2psync-websocket-using-passive.adoc b/modules/swift/pages/p2psync-websocket-using-passive.adoc index bf55f7a5a..9db67ce09 100644 --- a/modules/swift/pages/p2psync-websocket-using-passive.adoc +++ b/modules/swift/pages/p2psync-websocket-using-passive.adoc @@ -40,6 +40,22 @@ Use them as inspiration and adapt these examples to best practice when developin This content provides code and configuration examples covering the implementation of xref:refer-glossary.adoc#peer-to-peer-sync[Peer-to-Peer Sync] over WebSockets. Specifically, it covers the implementation of a xref:refer-glossary.adoc#passive-peer[Passive Peer]. + +[TIP] +.Multipeer P2P Replicator +==== +xref:p2psync-multipeer.adoc[Multipeer P2P Replicator] is available for Android, offering: + +* Auto-discovery over local Wi-Fi (via `DNS-SD`) +* Lightweight and low-maintenance configuration +* Dynamic mesh topology for optimal peer connectivity +* Secure communication via TLS and certificate-based authentication + +For many use cases, this will be quicker to develop for than Active-Passive peer-to-peer sync. +==== + + + Couchbase's Passive Peer (also referred to as the server, or Listener) will accept a connection from an xref:refer-glossary.adoc#active-peer[Active Peer] (also referred to as the client or replicator) and replicate database changes to synchronize both databases. Subsequent sections provide additional details and examples for the main configuration options. diff --git a/modules/swift/pages/p2psync-websocket.adoc b/modules/swift/pages/p2psync-websocket.adoc index a88bd2877..79a1d779c 100644 --- a/modules/swift/pages/p2psync-websocket.adoc +++ b/modules/swift/pages/p2psync-websocket.adoc @@ -1,10 +1,8 @@ - -= Data Sync Peer-to-Peer += Active-Passive Peer-to-Peer Sync :page-aliases: learn/swift-p2psync-websocket.adoc ifdef::show_edition[:page-edition: Enterprise Edition] :page-role: -:description: Couchbase Lite database Peer-to-Peer Synchronization concepts using websockets - +:description: Where MultiPeer Sync is not available, Couchbase Lite's Active-Passive Peer-to-Peer Synchronization enables edge devices to synchronize securely without consuming centralized cloud-server resources. :source-language: swift @@ -17,6 +15,20 @@ Description -- _{description}_ + Related Content -- https://docs.couchbase.com/mobile/{major}.{minor}.{maintenance-swift}{empty}/couchbase-lite-swift[API Reference] | xref:swift:p2psync-websocket-using-passive.adoc[Passive Peer] | xref:swift:p2psync-websocket-using-active.adoc[Active Peer] -- +[TIP] +.Multipeer P2P Replicator +==== +xref:p2psync-multipeer.adoc[Multipeer P2P Replicator] is available for Swift, offering: + +* Auto-discovery over local Wi-Fi (via `DNS-SD`) +* Lightweight and low-maintenance configuration +* Dynamic mesh topology for optimal peer connectivity +* Secure communication via TLS and certificate-based authentication + +For many use cases, this will be quicker to develop for than Active-Passive peer-to-peer sync. +==== + + [#introduction] == Introduction @@ -66,6 +78,11 @@ Therefore, to use Peer-to-Peer synchronization in your application, you must con Here you can see configuration involves a xref:swift:p2psync-websocket-using-passive.adoc[Passive Peer] and an xref:swift:p2psync-websocket-using-active.adoc[Active Peer] and a user-friendly Listener configuration in <>. +Couchbase Lite supports different transport modes depending on the peer-to-peer synchronization approach: + +=== Active-Passive Peer-to-Peer +- Supports: Wi-Fi (IP-based transport modes only) + You can also learn how to implement Peer-to-Peer synchronization by referring to our tutorial -- see: xref:tutorials:cbl-p2p-sync-websockets:swift/cbl-p2p-sync-websockets.adoc[Getting Started with Peer-to-Peer Synchronization]. [#features] diff --git a/modules/swift/pages/quickstart.adoc b/modules/swift/pages/quickstart.adoc index 48bea6ce3..b86857e71 100644 --- a/modules/swift/pages/quickstart.adoc +++ b/modules/swift/pages/quickstart.adoc @@ -1,52 +1,35 @@ :page-aliases: swift.adoc -:page-layout: landing-page-core-concept -:page-role: tiles, -toc +:page-layout: landing-page-capella :description: Start your Couchbase for Mobile and Edge adventure, get up and running with Couchbase Lite :source-language: swift -:source-language: swift - - -= Couchbase Lite on Swift -// ++++ -//
-// ++++ -// // DO NOT EDIT -// // include::ROOT:partial$block-related-howto-p2psync-ws.adoc[] -// // include::ROOT:partial$_show_page_header_block.adoc[] -// // DO NOT EDIT -// [.column] -// ====== {empty} -// [.content] -// Some random text goes here -// [.column] -// ====== {empty} -// [.media-left] -// image::https://docs.couchbase.com/home/_images/get-the-agility-of-sql-and-the-flexibility-of-json.svg[,200] -// ++++ -//
-// ++++ -// == {empty} -// ++++ -//
-// ++++ -++++ -
-++++ +[.centered.card-container] +== Couchbase Lite on Swift -[.column] -== {empty} -[.content] Couchbase Lite is an embedded, NoSQL JSON Document Style database for your mobile apps. You can use Couchbase Lite as a standalone embedded database within your mobile apps, or with Sync Gateway and Couchbase Server to provide a complete cloud to edge synchronized solution + +[.card-box] +=== icon:rocket[] Swift Resources / Get Started? + +Get set up with an account and deploy a free tier operational cluster. + +* xref:swift:gs-install.adoc[Install] +* xref:swift:gs-build.adoc[Build] +* https://docs.couchbase.com/mobile/{major}.{minor}.{maintenance-ios}{empty}/couchbase-lite-swift[Browse API References ...] + + + +TODO + [.column] == {empty} [.media-left] @@ -63,9 +46,6 @@ image::ROOT:manage-and-store-data-locally.svg[,250] === {empty} [.content] .Get Started -* xref:swift:gs-install.adoc[Install] -* xref:swift:gs-build.adoc[Build] -* https://docs.couchbase.com/mobile/{major}.{minor}.{maintenance-ios}{empty}/couchbase-lite-swift[Browse API References ...] [.column] === {empty} diff --git a/modules/swift/pages/releasenotes.adoc b/modules/swift/pages/releasenotes.adoc index 16cb74232..ca510bbeb 100644 --- a/modules/swift/pages/releasenotes.adoc +++ b/modules/swift/pages/releasenotes.adoc @@ -8,14 +8,6 @@ ifdef::prerelease[:page-status: {prerelease}] :param-title: Swift [#maint-latest] -include::partial$release-notes/couchbase-mobile-swift-release-note.3.2.4.adoc[] +include::partial$release-notes/couchbase-mobile-swift-release-note.4.0.0.adoc[] -include::partial$release-notes/couchbase-mobile-swift-release-note.3.2.3.adoc[] - -include::partial$release-notes/couchbase-mobile-swift-release-note.3.2.2.adoc[] - -include::partial$release-notes/couchbase-mobile-swift-release-note.3.2.1.adoc[] - -include::partial$release-notes/couchbase-mobile-swift-release-note.3.2.0.adoc[] - -include::partial$release-notes/couchbase-mobile-swift-release-note.3.2.0-beta.adoc[] +include::partial$release-notes/couchbase-mobile-swift-vs-release-notes.1.0.0-beta.adoc[] diff --git a/modules/swift/pages/supported-os.adoc b/modules/swift/pages/supported-os.adoc index bd158f645..4c183805a 100644 --- a/modules/swift/pages/supported-os.adoc +++ b/modules/swift/pages/supported-os.adoc @@ -28,10 +28,10 @@ The following table identifies the xref:swift:supported-os.adoc#supported-os-ver |Platform |Minimum OS version |iOS -|12.0+ +|15.0+ |macOS -| 12 (Monterey), 13 (Ventura), 14 (Sonoma) +| 13 (Ventura), 14 (Sonoma), 15 (Sequoia) |=== NOTE: Couchbase Lite for Swift provides native support for both Mac Catalyst and M1. @@ -44,16 +44,19 @@ NOTE: Couchbase Lite for Swift provides native support for both Mac Catalyst and |=== h|Operating System|Version|Deprecation Release -|iOS -|iOS 12 -|3.2.0 - |macOS -|12 (Monterey) -|3.2.0 +|13 (Ventura) +|3.3.0 |=== + +//// +|iOS +|iOS 13 & 14 +|3.3.0 +//// + [#removed-versions] == Removed Versions @@ -65,7 +68,7 @@ h|Operating System|Version|Deprecation Release ^.>|Removed ^.>|Deprecation Release -.2+| iOS +.4+| iOS | iOS 10 | 3.1.1 @@ -75,7 +78,19 @@ h|Operating System|Version|Deprecation Release | 3.2.0 | 3.1.1 -.3+| macOS +| iOS 12 +| 3.3.0 +| 3.3.0 + +| iOS 13 & 14 +| 3.2.0 +| 3.3.0 + +.4+| macOS + +| macOS 12 +| 3.3.0 +| 3.2.0 | macOS 11 | 3.2.0 diff --git a/modules/swift/partials/release-notes/couchbase-mobile-swift-release-note.3.2.0-beta.adoc b/modules/swift/partials/release-notes/couchbase-mobile-swift-release-note.3.2.0-beta.adoc deleted file mode 100644 index 0b6c3336c..000000000 --- a/modules/swift/partials/release-notes/couchbase-mobile-swift-release-note.3.2.0-beta.adoc +++ /dev/null @@ -1,172 +0,0 @@ -[#maint-3-2-0] -== 3.2.0 -- August 2024 - -Version 3.2.0 Beta 1 for {param-title} delivers the following features and enhancements: - -=== Enhancements - -* https://issues.couchbase.com/browse/CBL-5209[CBL-5209 - Implement Collection's database property] - -* https://issues.couchbase.com/browse/CBL-5203[CBL-5203 - Implementation of Collection's full-name property] - -* https://issues.couchbase.com/browse/CBL-5378[CBL-5378 - Update iOS Target Version to 12] - -* https://issues.couchbase.com/browse/CBL-5374[CBL-5374 - Change all Swift IndexConfiguration from class to struct] - -* https://issues.couchbase.com/browse/CBL-5487[CBL-5487 - CBL ObjC Framework Warning about Double-quoted include] - -* https://issues.couchbase.com/browse/CBL-5457[CBL-5457 - Some Objective-C symbols are missing in the exp file] - -* https://issues.couchbase.com/browse/CBL-5415[CBL-5415 - Symbol Not Found error when building with XCode 15.2] - -* https://issues.couchbase.com/browse/CBL-5265[CBL-5265 - Include Privacy Manifest in the released library] - -* https://issues.couchbase.com/browse/CBL-4648[CBL-4648 - Use Swift Private Module Map File for private ObjC Headers] - -// LiteCore - -* https://issues.couchbase.com/browse/CBL-5241[CBL-5241 - Upsert performance is degraded when the number of docs is increased] - -* https://issues.couchbase.com/browse/CBL-5379[CBL-5379 - Update iOS Target Version to 12] - -* https://issues.couchbase.com/browse/CBL-5287[CBL-5287 - Enable Prediction Function in SQL++ Parser] - -* https://issues.couchbase.com/browse/CBL-283[CBL-283 - Date Format other than ISO 8601] - -* https://issues.couchbase.com/browse/CBL-68[CBL-68 - DATE_DIFF_MILLIS(date1, date2, part)] - -* https://issues.couchbase.com/browse/CBL-67[CBL-67 - DATE_ADD_STR(date1, n, part)] - -* https://issues.couchbase.com/browse/CBL-66[CBL-66 - DATE_ADD_MILLIS(date1, n, part)] - -* https://issues.couchbase.com/browse/CBL-65[CBL-65 - MILLIS_TO_UTC(date1 [, fmt])] - -* https://issues.couchbase.com/browse/CBL-64[CBL-64 - MILLIS_TO_TZ(date1, tz [, fmt])] - -* https://issues.couchbase.com/browse/CBL-62[CBL-62 - STR_TO_TZ(date1, tz)] - -* https://issues.couchbase.com/browse/CBL-61[CBL-61 - MILLIS_TO_STR(date1 [, fmt ])] - -* https://issues.couchbase.com/browse/CBL-60[CBL-60 - DATE_DIFF_STR(date1, date2, part)] - -=== Issues and Resolutions - -* https://issues.couchbase.com/browse/CBL-4985[CBL-4985 - Remap Changes LiteCore Log Domain to Database Domain] - -* https://issues.couchbase.com/browse/CBL-5399[CBL-5399 - Close database might hang waiting for no active replicators or live queries] - -* https://issues.couchbase.com/browse/CBL-5418[CBL-5418 - Ensure the network streams are disconnected before CBLWebSocket is dealloc] - -* https://issues.couchbase.com/browse/CBL-4512[CBL-4512 - ListenerToken is not discardable in Collection's add change listener functions] - -* https://issues.couchbase.com/browse/CBL-4582[CBL-4582 - MutableDocument contains(key: String) returns wrong result] - -* https://issues.couchbase.com/browse/CBL-4336[CBL-4336 - Missing subscript function implementation in Collection class (Port)] - -* https://issues.couchbase.com/browse/CBL-4442[CBL-4442 - Update Database API deprecation messages] - -* https://issues.couchbase.com/browse/CBL-4441[CBL-4441 - Fixed `Collection.addDocumentChangeListener()` can fatal crash] - -* https://issues.couchbase.com/browse/CBL-4440[CBL-4440 - Fixed `CBLCollection` could be leaked if document listener token is not removed] - -* https://issues.couchbase.com/browse/CBL-4429[CBL-4429 - Fixed Crash when starting multiple live queries concurrently] - -// Litecore enhancements - -* https://issues.couchbase.com/browse/CBL-5336[CBL-5336 - Over the bound of FLDicIterator should be banned] - -* https://issues.couchbase.com/browse/CBL-5335[CBL-5335 - array_agg seem to fail under some circumstances] - -* https://issues.couchbase.com/browse/CBL-5332[CBL-5332 - Crash during document expiration] - -* https://issues.couchbase.com/browse/CBL-5307[CBL-5307 - Updating remote revision when pulling the existing revision] - -* https://issues.couchbase.com/browse/CBL-5044[CBL-5044 - Don't capture backtrace for OutOfRange error FLDictIterator_Next] - -* https://issues.couchbase.com/browse/CBL-5033[CBL-5033 - Puller revoked docs should queue with other revs] - -* https://issues.couchbase.com/browse/CBL-5449[CBL-5449 - Port - Attachments flag is dropped when applying delta to incoming rev] - -* https://issues.couchbase.com/browse/CBL-4536[CBL-4536 - Error when saving documents with LiteCore error 17: must be called during a transaction] - -* https://issues.couchbase.com/browse/CBL-4506[CBL-4506 - Investigate Replicator starts up slow for big database] - -* https://issues.couchbase.com/browse/CBL-4499[CBL-4499 - Replicator may get stuck when there is an error of "Invalid delta"] - -* https://issues.couchbase.com/browse/CBL-4493[CBL-4493 - Couchbase Lite C - Flutter plugin (dart language bindings) replication not resuming when internet reconnected] - -* https://issues.couchbase.com/browse/CBL-4802[CBL-4802 - Websocket implementation unable to handle continuation fragments] - -* https://issues.couchbase.com/browse/CBL-4801[CBL-4801 - Open an old db is slow in V3.1 first time] - -* https://issues.couchbase.com/browse/CBL-4390[CBL-4390 - The URL Scheme the HTTP Message is incorrect when using proxy] - -* https://issues.couchbase.com/browse/CBL-4247[CBL-4247 - Replicator binary logs with collections cannot be decoded] - -* https://issues.couchbase.com/browse/CBL-4245[CBL-4245 - Update sockcpp to cbl-3663] - -* https://issues.couchbase.com/browse/CBL-4600[CBL-4600 - Doc update c4repl_start] - -* https://issues.couchbase.com/browse/CBL-4568[CBL-4568 - URLEndpointListener.getURLs returns an empty list on Android v>=11] - -* https://issues.couchbase.com/browse/CBL-4334[CBL-4334 - Data getting corrupted during collection replication] - -* https://issues.couchbase.com/browse/CBL-4326[CBL-4326 - Opening the upgraded database from 2.8 to 3.0.2 is slow] - -* https://issues.couchbase.com/browse/CBL-4413[CBL-4413 - Compaction could cause "database is locked" error when the replicator attempts to save its checkpoint at the same time] - -* https://issues.couchbase.com/browse/CBL-4391[CBL-4391 - Stop replicator could cause 'database is locked' error when saving a document] - -* https://issues.couchbase.com/browse/CBL-4913[CBL-4913 - Regression in pull of blobs/legacy attachment handling] - -* https://issues.couchbase.com/browse/CBL-4547[CBL-4547 - Allow DictKeys to cache shared keys from query results] - -* https://issues.couchbase.com/browse/CBL-4750[CBL-4750 - c4queryenum_next crashes with FTS] - -* https://issues.couchbase.com/browse/CBL-4639[CBL-4639 - Use FTS match() in the WHERE clause of LEFT OUTER JOINS Not Returning Correct Result] - -* https://issues.couchbase.com/browse/CBL-4838[CBL-4838 - Attachments/Blobs got deleted after compaction&re-sync] - -* https://issues.couchbase.com/browse/CBL-4470[CBL-4470 - FLTimestamp_ToString() could return a slice with a wrong size] - -* https://issues.couchbase.com/browse/CBL-4424[Uninitialized struct] - -* https://issues.couchbase.com/browse/CBL-3836[CBL-3836 - Corrupt Revision Data error when saving documents] - -=== Known Issues - -None for this release - -=== Deprecations - -* https://issues.couchbase.com/browse/CBL-5491[CBL-5491 - Default's `MAX_ATTEMPT_WAIT_TIME` and `USE_PLAIN_TEXT` are deprecated] - -* https://issues.couchbase.com/browse/CBL-4316[CBL-4316 - Replicator's `getPendingDocumentIds()` and `isDocumentPending(String id)` are deprecated] - -* https://issues.couchbase.com/browse/CBL-4315[CBL-4315 - ReplicatorConfiguration's filters and conflict resolver properties are deprecated] - -* https://issues.couchbase.com/browse/CBL-4314[CBL-4314 - ReplicatorConfiguration APIs with Database object are deprecated ] - -* https://issues.couchbase.com/browse/CBL-4313[CBL-4313 - MessageEndpointListenerConfiguration APIs using Database object are deprecated] - -* https://issues.couchbase.com/browse/CBL-4312[CBL-4312 - URLEndpointListenerConfiguration APIs using Database object are deprecated] - -* https://issues.couchbase.com/browse/CBL-4311[CBL-4311 - QueryBuilder : `isNullOrMissing()` and `notNullOrMissing()` are deprecated] - -* https://issues.couchbase.com/browse/CBL-4310[CBL-4310 - QueryBuilder : FullTextFunction's `rank(String index)` and `match(String index, String query)` are deprecated] - -* https://issues.couchbase.com/browse/CBL-4309[CBL-4309 - QueryBuilder : DataSource's `database()` is deprecated] - -* https://issues.couchbase.com/browse/CBL-4307[CBL-4307 - DocumentChange's database property is deprecated] - -* https://issues.couchbase.com/browse/CBL-4306[CBL-4306 - DatabaseChange and DatabaseChangeListener are deprecated] - -* https://issues.couchbase.com/browse/CBL-4305[CBL-4305 - Database's removeChangeListener() is deprecated] - -* https://issues.couchbase.com/browse/CBL-4304[CBL-4304 - Database's Document APIs are deprecated] - -* https://issues.couchbase.com/browse/CBL-5331[CBL-5331 - Deprecate Replicator's `removeChangeListener`] - -* https://issues.couchbase.com/browse/CBL-5330[CBL-5330 - Deprecate Replicator's `removeChangeListener`] - -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0 Beta 1, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] diff --git a/modules/swift/partials/release-notes/couchbase-mobile-swift-release-note.3.2.0.adoc b/modules/swift/partials/release-notes/couchbase-mobile-swift-release-note.3.2.0.adoc deleted file mode 100644 index c00932160..000000000 --- a/modules/swift/partials/release-notes/couchbase-mobile-swift-release-note.3.2.0.adoc +++ /dev/null @@ -1,179 +0,0 @@ -[#maint-3-2-0] -== 3.2.0 -- August 2024 - -Version 3.2.0 for {param-title} delivers the following features and enhancements: - -=== Downgrade Support - -Downgrades from 3.2.x to any other version of Couchbase Lite are not supported. - -=== Enhancements - -// Lite Core begin - -* https://issues.couchbase.com/browse/CBL-5287[CBL-5287 - Enable Prediction Function in SQL++] - -* https://issues.couchbase.com/browse/CBL-5634[CBL-5634 - NoRev enhancement with Replacement Rev in pull replication] - -* https://issues.couchbase.com/browse/CBL-5687[CBL-5687 - Update replication protocol doc per ReplacementRev changes] - -* https://issues.couchbase.com/browse/CBL-4412[CBL-4412 - Enhance checkpoint resolution algorithm when local and remote checkpoint are mismatched] - -* https://issues.couchbase.com/browse/CBL-5346[CBL-5346 - Logging Replicator reasons of state change] - -* https://issues.couchbase.com/browse/CBL-283[CBL-283 - Support Date Format other than ISO 8601 in SQL++] - -* https://issues.couchbase.com/browse/CBL-68[CBL-68 - DATE_DIFF_MILLIS(date1, date2, part)] - -* https://issues.couchbase.com/browse/CBL-67[CBL-67 - DATE_ADD_STR(date1, n, part)] - -* https://issues.couchbase.com/browse/CBL-66[CBL-66 - DATE_ADD_MILLIS(date1, n, part)] - -* https://issues.couchbase.com/browse/CBL-65[CBL-65 - MILLIS_TO_UTC(date1 [, fmt])] - -* https://issues.couchbase.com/browse/CBL-64[CBL-64 - MILLIS_TO_TZ(date1, tz [, fmt])] - -* https://issues.couchbase.com/browse/CBL-62[CBL-62 - STR_TO_TZ(date1, tz)] - -* https://issues.couchbase.com/browse/CBL-61[CBL-61 - MILLIS_TO_STR(date1 [, fmt ])] - -* https://issues.couchbase.com/browse/CBL-60[CBL-60 - DATE_DIFF_STR(date1, date2, part)] - -* https://issues.couchbase.com/browse/CBL-5241[CBL-5241 - Enhancement to Upsert performance when the number of docs increase] - -// Lite Core end - - -* https://issues.couchbase.com/browse/CBL-5265[CBL-5265 - Include Privacy Manifest in the released library] - -* https://issues.couchbase.com/browse/CBL-5209[CBL-5209 - Implement Collection's database property] - -* https://issues.couchbase.com/browse/CBL-5203[CBL-5203 - Implementation Collection's full-name property] - -* https://issues.couchbase.com/browse/CBL-5508[CBL-5508 - Update Min macOS Support Version to 12.0] - -* https://issues.couchbase.com/browse/CBL-5487[CBL-5487 - CBL ObjC Framework Warning about Double-quoted include] - -* https://issues.couchbase.com/browse/CBL-5374[CBL-5374 - Change all Swift IndexConfiguration from class to struct] - -* https://issues.couchbase.com/browse/CBL-5378[CBL-5378 - Update iOS Target Version to 12] - -* https://issues.couchbase.com/browse/CBL-5415[CBL-5415 - Remove unneccesary symbols from exp file] - -* https://issues.couchbase.com/browse/CBL-60[CBL-60 - Added missing Objective-C symbols to the exp file] - -=== Issues and Resolutions - -// Lite Core begin - -* https://issues.couchbase.com/browse/CBL-3846[CBL-3846 - Fixed corrupt Revision Data error when saving documents] - -* https://issues.couchbase.com/browse/CBL-4247[CBL-4247 - Fixed Replicator binary logs with collections cannot be decoded] - -* https://issues.couchbase.com/browse/CBL-4326[CBL-4326 - Fixed opening the upgraded database from 2.8 to 3.0.2 is slow] - -* https://issues.couchbase.com/browse/CBL-4334[CBL-4334 - Fixed Data getting corrupted during collection replication] - -* https://issues.couchbase.com/browse/CBL-4390[CBL-4390 - Fixed The URL Scheme the HTTP Message is incorrect when using proxy] - -* https://issues.couchbase.com/browse/CBL-4391[CBL-4391 - Fixed Stop replicator could cause 'database is locked' error when saving a document] - -* https://issues.couchbase.com/browse/CBL-4413[CBL-4413 - Fixed Compaction could cause "database is locked" error when the replicator attempts to save its checkpoint at the same time] - -* https://issues.couchbase.com/browse/CBL-4470[CBL-4470 - Fixed FLTimestamp_ToString() could return a slice with a wrong size] - -* https://issues.couchbase.com/browse/CBL-4493[CBL-4493 - Fixed Couchbase Lite C - Flutter plugin (dart language bindings) replication not resuming when internet reconnected] - -* https://issues.couchbase.com/browse/CBL-4499[CBL-4499 - Fixed Replicator may get stuck when there is an error of "Invalid delta"] - -* https://issues.couchbase.com/browse/CBL-4506[CBL-4506 - Fixed Replicator starts up slow for big database] - -* https://issues.couchbase.com/browse/CBL-4536[CBL-4536 - Fixed error when saving documents with LiteCore error 17: must be called during a transaction] - -* https://issues.couchbase.com/browse/CBL-4547[CBL-4547 - Allow DictKeys to cache shared keys from query results] - -* https://issues.couchbase.com/browse/CBL-4568[CBL-4568 - Fixed URLEndpointListener.getURLs returns an empty list on Android v>=11] - -* https://issues.couchbase.com/browse/CBL-4639[CBL-4639 - Use FTS match() in the WHERE clause of LEFT OUTER JOINS Not Returning Correct Result] - -* https://issues.couchbase.com/browse/CBL-4750[CBL-4750 - Fixed c4queryenum_next crashes with FTS] - -* https://issues.couchbase.com/browse/CBL-4801[CBL-4801 - Fixed opening an old db is slow in V3.1 the first time] - -* https://issues.couchbase.com/browse/CBL-4802[CBL-4802 - Fixed websocket implementation unable to handle continuation fragments] - -* https://issues.couchbase.com/browse/CBL-4838[CBL-4838 - Fixed Attachments/Blobs got deleted after compaction&re-sync] - -* https://issues.couchbase.com/browse/CBL-4913[CBL-4913 - Fixed regression in pull of blobs/legacy attachment handling] - -* https://issues.couchbase.com/browse/CBL-5082[CBL-5082 - Fixed crash in setting Housekeeper::_doExpiration()] - -* https://issues.couchbase.com/browse/CBL-5033[CBL-5033 - Fixed Puller revoked docs should queue with other revs] - -* https://issues.couchbase.com/browse/CBL-5044[CBL-5044 - Don't capture backtrace for OutOfRange error FLDictIterator_Next] - -* https://issues.couchbase.com/browse/CBL-5307[CBL-5307 - Correctly updating remote revision when pulling the existing revision] - -* https://issues.couchbase.com/browse/CBL-5332[CBL-5332 - Fixed crash during document expiration] - -* https://issues.couchbase.com/browse/CBL-5335[CBL-5335 - Fixed array_agg failures] - -* https://issues.couchbase.com/browse/CBL-5336[CBL-5336 - Over the bound of FLDicIterator should be banned] - -* https://issues.couchbase.com/browse/CBL-5377[CBL-5377 - Fixed MILLIS_TO_STRING is returning UTC instead of local time zone] - -* https://issues.couchbase.com/browse/CBL-5449[CBL-5449 - Fixed Attachments flag is dropped when applying delta to incoming rev] - -* https://issues.couchbase.com/browse/CBL-5515[CBL-5515 - Fixed Result alias can't be used elsewhere in query] - -* https://issues.couchbase.com/browse/CBL-5540[CBL-5540 - Fixed pthread_mutex_lock called on a destroyed mutex] - -* https://issues.couchbase.com/browse/CBL-5587[CBL-5587 - Fixed Remote rev KeepBody flag could be cleared accidentally] - -* https://issues.couchbase.com/browse/CBL-5589[CBL-5589 - Fixed N1QL Parser has exponential slowdown for redundant parentheses] - -* https://issues.couchbase.com/browse/CBL-5646[CBL-5646 - Fixed Null dereference crash in gotHTTPResponse] - -* https://issues.couchbase.com/browse/CBL-5724[CBL-5724 - Fixed Replicator syncs from beginning when using prebuilt dbs synced from SG] - -// Lite Core end - -* https://issues.couchbase.com/browse/CBL-5693[CBL-5693 - Fixed some Objective-C symbols are missing in the exp file] - -* https://issues.couchbase.com/browse/CBL-5524[CBL-5524 - Fixed required keys are missing in Privacy Manifest file] - -* https://issues.couchbase.com/browse/CBL-4442[CBL-4442 - Update Database API deprecation messages] - -* https://issues.couchbase.com/browse/CBL-4441[CBL-4441 - Fixed Collection.addDocumentChangeListener() can fatal crash] - -* https://issues.couchbase.com/browse/CBL-4440[CBL-4440 - Fixed CBLCollection could be leaked if document listener token is not removed] - -* https://issues.couchbase.com/browse/CBL-4429[CBL-4429 - Fixed crash when starting multiple live queries concurrently] - -* https://issues.couchbase.com/browse/CBL-4512[CBL-4512 - Fixed ListenerToken is not discardable in Collection's add change listener functions] - -* https://issues.couchbase.com/browse/CBL-4985[CBL-4985 - Remap Changes LiteCore Log Domain to Database Domain] - -* https://issues.couchbase.com/browse/CBL-5399[CBL-5399 - Fixed Close database might hang waiting for no active replicators or live queries] - -* https://issues.couchbase.com/browse/CBL-5418[CBL-5418 - Ensure the network streams are disconnected before CBLWebSocket is deallocated] - -* https://issues.couchbase.com/browse/CBL-4582[CBL-4582 - Fixed MutableDocument contains(key: String) returns wrong result] - -* https://issues.couchbase.com/browse/CBL-5075[CBL-5075 - Fixed Replicator background task doesn't take conflict resolution into account] - -* https://issues.couchbase.com/browse/CBL-5660[CBL-5660 - Fixed Invalidated context may be used in query observer callback] - -* https://issues.couchbase.com/browse/CBL-4336[CBL-4336 - Fixed Missing subscript function implementation in Collection class] - -* https://issues.couchbase.com/browse/CBL-6192[CBL-6192 - Fixed Client Side Proxy CONNECT request is broken] - -=== Known Issues - -None for this release - -=== Deprecations - -No new deprecations for GA release - -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] diff --git a/modules/swift/partials/release-notes/couchbase-mobile-swift-release-note.3.2.1.adoc b/modules/swift/partials/release-notes/couchbase-mobile-swift-release-note.3.2.1.adoc deleted file mode 100644 index 9327656db..000000000 --- a/modules/swift/partials/release-notes/couchbase-mobile-swift-release-note.3.2.1.adoc +++ /dev/null @@ -1,36 +0,0 @@ -[#maint-3-2-1] -== 3.2.1 -- November 2024 - -Version 3.2.1 for {param-title} delivers the following features and enhancements: - -=== Enhancements - -// Lite Core begin - -* https://jira.issues.couchbase.com/browse/CBL-5169[CBL-5169 - Support for Unnest Query and Array Index] - -* https://jira.issues.couchbase.com/browse/CBL-6303[CBL-6303 - Add ability to disable mmap usage] - -// Lite Core end - -=== Issues and Resolutions - -// Lite Core begin - -* https://jira.issues.couchbase.com/browse/CBL-6131[CBL-6131 - Fixed race creating the expiration column in a collection table] - -* https://jira.issues.couchbase.com/browse/CBL-6245[CBL-6245 - Fixed query parser regression related to brackets] - -* https://jira.issues.couchbase.com/browse/CBL-6378[CBL-6378 - Crash when calling onWebSocketGotTLSCertificate callback after the connection is closed] - -// Lite Core end - -=== Known Issues - -None for this release - -=== Deprecations - -No new deprecations for GA release - -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] diff --git a/modules/swift/partials/release-notes/couchbase-mobile-swift-release-note.3.2.2.adoc b/modules/swift/partials/release-notes/couchbase-mobile-swift-release-note.3.2.2.adoc deleted file mode 100644 index 99a13acfa..000000000 --- a/modules/swift/partials/release-notes/couchbase-mobile-swift-release-note.3.2.2.adoc +++ /dev/null @@ -1,30 +0,0 @@ -[#maint-3-2-2] -== 3.2.2 -- March 2025 - -Version 3.2.2 for {param-title} delivers the following features and enhancements: - -=== Enhancements - -* https://jira.issues.couchbase.com/browse/CBL-5185[CBL-5185 - Support for Partial Indexes in Value and Full-Text Indexes] - -* https://jira.issues.couchbase.com/browse/CBL-6451[CBL-6451 - LogSink API for Configuring Couchbase Lite Logging] - -=== Issues and Resolutions - -// Lite Core begin - -* https://jira.issues.couchbase.com/browse/CBL-6534[CBL-6534 - No Such Table Error When Upgrading from 3.1.9 to 3.2.1] - -* https://jira.issues.couchbase.com/browse/CBL-6822[CBL-6822 - Replicator may hang while stopping the housekeeper task during stop] - -// Lite Core end - -=== Known Issues - -None for this release - -=== Deprecations - -* https://jira.issues.couchbase.com/browse/CBL-6679[CBL-6679 - Deprecated: Database.log API for Configuring Couchbase Lite Logging — Use LogSink API Instead] - -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] diff --git a/modules/swift/partials/release-notes/couchbase-mobile-swift-release-note.3.2.3.adoc b/modules/swift/partials/release-notes/couchbase-mobile-swift-release-note.3.2.3.adoc deleted file mode 100644 index e9dd467fb..000000000 --- a/modules/swift/partials/release-notes/couchbase-mobile-swift-release-note.3.2.3.adoc +++ /dev/null @@ -1,24 +0,0 @@ -[#maint-3-2-3] -== 3.2.3 -- April 2025 - -Version 3.2.3 for {param-title} delivers the following features and enhancements: - -=== Enhancements - -* https://jira.issues.couchbase.com/browse/CBL-6818[CBL-6818 -- Allow document from the same collection but different collection instance to be saved or deleted] - -* https://jira.issues.couchbase.com/browse/CBL-6701[CBL-6701 -- Swift API Enhancements: Codable Integration and Combine Support for Change Notifications] - -=== Issues and Resolutions - -include::ROOT:partial$release-notes/couchbase-mobile-litecore-release-note.3.2.3.adoc[tags=fixes] - -=== Known Issues - -* https://jira.issues.couchbase.com/browse/CBL-6959[CBL-6959 -- UserAgent info in the log shows LiteCore version as 3.2.2 instead of 3.2.3] - -=== Deprecations - -None for this release - -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] diff --git a/modules/swift/partials/release-notes/couchbase-mobile-swift-release-note.3.3.0.adoc b/modules/swift/partials/release-notes/couchbase-mobile-swift-release-note.3.3.0.adoc new file mode 100644 index 000000000..2f4df27bb --- /dev/null +++ b/modules/swift/partials/release-notes/couchbase-mobile-swift-release-note.3.3.0.adoc @@ -0,0 +1,43 @@ +[#maint-3-2-0] +== 3.3.0 -- September 2025 + +Version 3.3.0 for {param-title} delivers the following features and enhancements: + +=== Enhancements + +// Lite Core begin + +* https://jira.issues.couchbase.com/browse/CBL-6733[CBL-6733 -- Multipeer Replicator for Peer-to-Peer Sync over Wi-Fi] +* https://jira.issues.couchbase.com/browse/CBL-7194[CBL-7194 -- Upgrade mbedTLS to 3.6.3] +* https://jira.issues.couchbase.com/browse/CBL-7195[CBL-7195 -- Upgrade SQLite to 3.50.3] +* https://jira.issues.couchbase.com/browse/CBL-7206[CBL-7206 -- Update Minimum Supported iOS to 15.0 and macOS to 13.0] +* https://jira.issues.couchbase.com/browse/CBL-7234[CBL-7234 -- Add API for creating `ReplicatorConfiguration` with collection configs and endpoint] +* + +// Lite Core end + +=== Issues and Resolutions + +==== Fixed Issues + +* https://jira.issues.couchbase.com/browse/CBL-6791[CBL-6791 -- Starting a Live Query in the Background May Crash the App] +* https://jira.issues.couchbase.com/browse/CBL-6799[CBL-6799 -- Potential crash in `URLEndpointListener`] +* https://jira.issues.couchbase.com/browse/CBL-7146[CBL-7146 -- UserAgent shows incorrect info] +* https://jira.issues.couchbase.com/browse/CBL-7167[CBL-7167 -- Getting non existing TLS Identity using label should not throw an error] +* https://jira.issues.couchbase.com/browse/CBL-7179[CBL-7179 -- Swift Codable skips nil values during encoding] +* https://jira.issues.couchbase.com/browse/CBL-7181[CBL-7181 -- Assertion Failure in `URLEndpointListener`] +* https://jira.issues.couchbase.com/browse/CBL-7189[CBL-7189 -- Assertion failure caused by Pull Filter during replication] + + +=== Known Issues + +None for this release + +=== Deprecations + +* https://jira.issues.couchbase.com/browse/CBL-7008[CBL-7008 -- Deprecate: Create Identity API with Server Flag] +* https://jira.issues.couchbase.com/browse/CBL-7236[CBL-7236 -- Deprecate: `ReplicatorConfiguration` constructor with a target endpoint only] +* https://jira.issues.couchbase.com/browse/CBL-7238[CBL-7238 -- Deprecate: `ReplicatorConfiguration` API for managing collection configurations] +* https://jira.issues.couchbase.com/browse/CBL-7240[CBL-7240 -- Deprecate: `CollectionConfiguration` constructors without collection] + +NOTE: For an overview of the latest features offered in Couchbase Lite 3.3.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.3] diff --git a/modules/swift/partials/release-notes/couchbase-mobile-swift-release-note.4.0.0.adoc b/modules/swift/partials/release-notes/couchbase-mobile-swift-release-note.4.0.0.adoc new file mode 100644 index 000000000..efe5e3f7b --- /dev/null +++ b/modules/swift/partials/release-notes/couchbase-mobile-swift-release-note.4.0.0.adoc @@ -0,0 +1,53 @@ +[#maint-4-0-0] +== 4.0.0 -- Q1 2025 + +Version 4.0.0 for {param-title} delivers the following features and enhancements: + +== Couchbase Lite Release Notes + +=== Downgrade Support + +Downgrades from 4.0 to earlier versions of Couchbase Lite are not supported. + +=== Enhancements + +// Lite Core begin + +NOTE: TODO + +* https://issues.couchbase.com/browse/CBL-5287[CBL-5287 - Enable Prediction Function in SQL++] + +// Lite Core end + +NOTE: TODO + +* https://issues.couchbase.com/browse/CBL-5213[CBL-5213 - Implement Proxy Authenticator API for Android / Java] + +=== Issues and Resolutions + +// Lite Core begin + +NOTE: TODO + +* https://issues.couchbase.com/browse/CBL-3846[CBL-3846 - Fixed corrupt Revision Data error when saving documents] + + +// Lite Core end + +NOTE: TODO + +* https://issues.couchbase.com/browse/CBL-5225[CBL-5225 - Fixed ReplicatedDocument getters do not comply with the spec] + +=== Known Issues + +NOTE: TODO + +None for this release + +=== Deprecations + +NOTE: TODO + +No new deprecations for GA release + +NOTE: For an overview of the latest features offered in Couchbase Lite 4.0.0, see xref:ROOT:cbl-whatsnew.adoc[New in 4.0] diff --git a/modules/swift/partials/release-notes/couchbase-mobile-swift-vs-release-note.1.0.0-beta.adoc b/modules/swift/partials/release-notes/couchbase-mobile-swift-vs-release-note.1.0.0-beta.adoc deleted file mode 100644 index aa0ee8015..000000000 --- a/modules/swift/partials/release-notes/couchbase-mobile-swift-vs-release-note.1.0.0-beta.adoc +++ /dev/null @@ -1,24 +0,0 @@ -[#vs-maint-1-0-0-beta-1] -== 1.0.0 -- August 2024 - -Version 1.0.0 for {param-title} delivers the following features and enhancements: - -=== Enhancements - -None for this release - -=== Issues and Resolutions - -None for this release - -=== Known Issues - -* https://issues.couchbase.com/browse/CBL-5551[CBL-5551 - Index trained regardless of warning when using PQ with high subquantizer] - -* https://issues.couchbase.com/browse/CBL-5536[CBL-5536 - Log messages about untrained indexes should be warnings] - -=== Deprecations - -None for this release - -NOTE: For an overview of the latest features offered in Couchbase Lite 3.2.0, see xref:ROOT:cbl-whatsnew.adoc[New in 3.2] diff --git a/preview/HEAD.yml b/preview/HEAD.yml index ce1d950ac..0b1366df6 100644 --- a/preview/HEAD.yml +++ b/preview/HEAD.yml @@ -1,3 +1,3 @@ sources: docs-sync-gateway: - branches: release/3.2 + branches: release/3.3