Releases: typedb/typedb-driver
TypeDB Driver 2.28.1
Documentation: https://typedb.com/docs/drivers/overview
Distribution
Rust driver
Available from https://crates.io/crates/typedb-driver
Documentation: https://typedb.com/docs/drivers/rust/overview
cargo add [email protected]
Java driver
Available through https://repo.typedb.com
Documentation: https://typedb.com/docs/drivers/java/overview
<repositories>
<repository>
<id>repo.typedb.com</id>
<url>https://repo.typedb.com/public/public-release/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupid>com.vaticle.typedb</groupid>
<artifactid>typedb-driver</artifactid>
<version>2.28.1</version>
</dependency>
</dependencies>
Python driver
PyPI package: https://pypi.org/project/typedb-driver
Documentation: https://typedb.com/docs/drivers/python/overview
Available through https://pypi.org
pip install typedb-driver==2.28.1
NodeJS driver
NPM package: https://www.npmjs.com/package/typedb-driver
Documentation: https://typedb.com/docs/drivers/nodejs/overview
npm install [email protected]
C# driver
NuGet package: https://www.nuget.org/packages/TypeDB.Driver
Documentation: https://typedb.com/docs/drivers/csharp/overview
<ItemGroup>
<PackageReference Include="TypeDB.Driver" Version="2.28.1" />
<PackageReference Include="TypeDB.Driver.Pinvoke.osx-x64" Version="2.28.1" />
<PackageReference Include="TypeDB.Driver.Pinvoke.linux-x64" Version="2.28.1" />
<PackageReference Include="TypeDB.Driver.Pinvoke.win-x64" Version="2.28.1" />
<PackageReference Include="TypeDB.Driver.Pinvoke.osx-arm64" Version="2.28.1" />
<PackageReference Include="TypeDB.Driver.Pinvoke.linux-arm64" Version="2.28.1" />
</ItemGroup>
C++ driver
Compiled distributions comprising headers and shared libraries available at: https://cloudsmith.io/~typedb/repos/public-release/packages/?q=name:^typedb-driver-cpp+version:2.28.1
Documentation: https://typedb.com/docs/drivers/cpp/overview
C driver
Compiled distributions comprising headers and shared libraries available at: https://cloudsmith.io/~typedb/repos/public-release/packages/?q=name:^typedb-driver-clib+version:2.28.1
New Features
- Copy jni library from input stream rather than file
We now copy the jni library by reading from it as an input stream rather than as a file copy. This approach works when the JNI jars are nested, such as in Spring Boot projects.
Code Refactors
- Fix misleading cloud encryption error message
The old version of the cloud encryption error message confused the user in case, for example, their endpoint is not encrypted, but the connection is. There are also other potential causes of thereceived corrupt message
status message, that we can't understand on a deeper level, so it's more correct to have a less specific error message here.
Other Improvements
-
Each API reference is combined in a single partial for easier preview and usage
For each driver, we move all AsciiDoc
include
directives to a dedicated partial calledapi-reference.adoc
in the drivers repo.
This way, all the content can be previewed from the typedb-driver repo and included in the docs web content with a single include directive.
TypeDB Driver 2.28.0
Documentation: https://typedb.com/docs/drivers/overview
Distribution
Rust driver
Available from https://crates.io/crates/typedb-driver
Documentation: https://typedb.com/docs/drivers/rust/overview
cargo add [email protected]
Java driver
Available through https://repo.typedb.com
Documentation: https://typedb.com/docs/drivers/java/overview
<repositories>
<repository>
<id>repo.typedb.com</id>
<url>https://repo.typedb.com/public/public-release/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupid>com.vaticle.typedb</groupid>
<artifactid>typedb-driver</artifactid>
<version>2.28.0</version>
</dependency>
</dependencies>
Python driver
PyPI package: https://pypi.org/project/typedb-driver
Documentation: https://typedb.com/docs/drivers/python/overview
Available through https://pypi.org
pip install typedb-driver==2.28.0
NodeJS driver
NPM package: https://www.npmjs.com/package/typedb-driver
Documentation: https://typedb.com/docs/drivers/nodejs/overview
npm install [email protected]
C# driver
NuGet package: https://www.nuget.org/packages/TypeDB.Driver
Documentation: https://typedb.com/docs/drivers/csharp/overview
<ItemGroup>
<PackageReference Include="TypeDB.Driver" Version="2.28.0" />
<PackageReference Include="TypeDB.Driver.Pinvoke.osx-x64" Version="2.28.0" />
<PackageReference Include="TypeDB.Driver.Pinvoke.linux-x64" Version="2.28.0" />
<PackageReference Include="TypeDB.Driver.Pinvoke.win-x64" Version="2.28.0" />
<PackageReference Include="TypeDB.Driver.Pinvoke.osx-arm64" Version="2.28.0" />
<PackageReference Include="TypeDB.Driver.Pinvoke.linux-arm64" Version="2.28.0" />
</ItemGroup>
C++ driver
Compiled distributions comprising headers and shared libraries available at: https://cloudsmith.io/~typedb/repos/public-release/packages/?q=name:^typedb-driver-cpp+version:2.28.0
Documentation: https://typedb.com/docs/drivers/cpp/overview
C driver
Compiled distributions comprising headers and shared libraries available at: https://cloudsmith.io/~typedb/repos/public-release/packages/?q=name:^typedb-driver-clib+version:2.28.0
New Features
-
Implement a method to convert a JSON object to a JSON string
The
toString()
method is callable for JSON class objects. It returns a string. -
Address translation
We allow the user to provide a translation map from the advertised server addresses (now treated as generic server names) to the actual addresses the driver shall use to connect to the cloud instances. We require the user to provide the full mapping.
Example usage:
Python:
with TypeDB.cloud_driver({ "0.deployment-UUID.cloud.typedb.com:1729": "localhost:11729", "1.deployment-UUID.cloud.typedb.com:1729": "localhost:21729", "2.deployment-UUID.cloud.typedb.com:1729": "localhost:31729" }, credential) as driver: pass
Rust:
Connection::new_cloud_with_translation( [ ("0.deployment-UUID.cloud.typedb.com:1729", "localhost:11729"), ("1.deployment-UUID.cloud.typedb.com:1729", "localhost:21729"), ("2.deployment-UUID.cloud.typedb.com:1729", "localhost:31729"), ].into(), credential )
-
Introduce packaging, distribution and documentation for the C# driver
We introduce packaging, distribution and documentation C# driver for TypeDB (the original driver PR). It is built using the cross-platform .NET 6 framework.
Usage:
The driver is distributed as a series of Nuget packages. To use the driver, import the latest versions of the driver (TypeDB.Driver) and its Pinvoke runtime (TypeDB.Driver.Pinvoke) suitable for your platform.
CS project:
Here is an example from a.csproj
for MacOS x86-64:<PackageReference Include="TypeDB.Driver" Version={VERSION} /> <PackageReference Include="TypeDB.Driver.Pinvoke.osx-x64" Version={VERSION} />
If you aim to build a platform-independent package, reference all the needed runtimes (it will affect the size of your application by downloading a respective set of platform-specific dynamic libraries):
<PackageReference Include="TypeDB.Driver.Pinvoke.osx-x64" Version={VERSION} /> <PackageReference Include="TypeDB.Driver.Pinvoke.linux-x64" Version={VERSION} /> <PackageReference Include="TypeDB.Driver.Pinvoke.win-x64" Version={VERSION} /> <PackageReference Include="TypeDB.Driver.Pinvoke.osx-arm64" Version={VERSION} /> ...
Bazel:
- Import both the
TypeDB.Driver
andTypeDB.Driver.Pinvoke
nuget packages as dependencies to your build rule. - For development, you can also use a csharp bazel rule, passing targets
//csharp:driver-csharp
(the driver itself),//csharp/Api:api
(exposed Api namespace),//csharp/Common:common
(exposed Common namespace) as dependencies.
A simple usage example (see
csharp/Test/Integration/Examples
for more):using TypeDB.Driver.Api; using TypeDB.Driver.Common; public class TypeDBExample { public void SetupTypeDB() { string dbName = "access-management-db"; string serverAddr = "127.0.0.1:1729"; try { using (ITypeDBDriver driver = Drivers.CoreDriver(serverAddr)) { driver.Databases.Create(dbName); IDatabase database = driver.Databases.Get(dbName); using (ITypeDBSession session = driver.Session(dbName, SessionType.Schema)) { using (ITypeDBTransaction transaction = session.Transaction(TransactionType.Write)) { transaction.Query.Define("define person sub entity;").Resolve(); string longQuery = "define name sub attribute, value string; person owns name;"; transaction.Query.Define(longQuery).Resolve(); transaction.Commit(); } } database.Delete(); } } catch (TypeDBDriverException e) { Console.WriteLine($"Caught TypeDB Driver Exception: {e}"); } } }
- Import both the
-
Introduce C# driver without documentation and deployment
We introduce the C# driver for TypeDB. It is built using the cross-platform .NET 6 framework.
Usage: Deployment and usage examples will be provided in a separate pull request. Current state of the code lets you compiling the driver + writing and running behaviour and integration tests for it.
The driver is expected to be a Nuget package, which could be added as a dependency to a project and referenced via "using" statements inside the users' code for all platforms.Architecture: The C# driver is a thin wrapper around the TypeDB Rust driver, introducing classes for a more intuitive interface. Mostly each C# object holds a reference to the corresponding native Rust object, using an FFI (SWIG for C#) for the native object wrappers generation and resource management.
Any error encountered will throw a
TypeDBDriverException
. Note that methods which return anIEnumerable
or a Promise and encounter a server-side error will only throw when the return objects are evaluated (e.g. iterate over or call aLinq
method for anIEnumerable
and callResolve()
for aPromise
).A simple usage example:
// Inside a try-catch block using (ITypeDBDriver driver = TypeDB.CoreDriver(TypeDB.DEFAULT_ADDRESS)) { string dbName = "mydb"; driver.Databases.Create(dbName); IDatabase mydb = driver.Databases.Get(dbName); System.Console.WriteLine(mydb.Name); using (ITypeDBSession schemaSession = driver.Session(dbName, SessionType.SCHEMA)) { using (ITypeDBTransaction writeTransaction = schemaSession.Transaction(TransactionType.WRITE)) { string defineQuery = "...some define query..."; writeTransaction.Query.Define(defineQuery).Resolve(); writeTransaction.Commit(); } } mydb.Delete(); }
Bugs Fixed
Code Refactors
-
Implement new steps for getting answers from templated get
We implement a new steps in every driver for a new step: 'get answers of templated typeql get', which is a modification of the existing 'templated typeql get; throws exception'
-
Remove copyright year from apache license headers
To simplify maintanance, we remove the copyright year from the Apache license headers. These aren't (to our best knowledge) actually legally required, since copyright is granted automatically from the moment a work is created (US law).
Other Improvements
- Fixes to C++ structure based on feedback from website
Various improvements to the document generation tools to make the C++ and C driver docs on the website more...
TypeDB Driver 2.28.0-rc0
Documentation: https://typedb.com/docs/drivers/overview
Distribution
Rust driver
Available from https://crates.io/crates/typedb-driver
Documentation: https://typedb.com/docs/drivers/rust/overview
cargo add [email protected]
Java driver
Available through https://repo.typedb.com
Documentation: https://typedb.com/docs/drivers/java/overview
<repositories>
<repository>
<id>repo.typedb.com</id>
<url>https://repo.typedb.com/public/public-release/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupid>com.vaticle.typedb</groupid>
<artifactid>typedb-driver</artifactid>
<version>2.28.0-rc0</version>
</dependency>
</dependencies>
Python driver
PyPI package: https://pypi.org/project/typedb-driver
Documentation: https://typedb.com/docs/drivers/python/overview
Available through https://pypi.org
pip install typedb-driver==2.28.0rc0
NodeJS driver
NPM package: https://www.npmjs.com/package/typedb-driver
Documentation: https://typedb.com/docs/drivers/nodejs/overview
npm install [email protected]
C# driver
NuGet package: https://www.nuget.org/packages/TypeDB.Driver
Documentation: https://typedb.com/docs/drivers/csharp/overview
<ItemGroup>
<PackageReference Include="TypeDB.Driver" Version="2.28.0-rc0" />
<PackageReference Include="TypeDB.Driver.Pinvoke.osx-x64" Version="2.28.0-rc0" />
<PackageReference Include="TypeDB.Driver.Pinvoke.linux-x64" Version="2.28.0-rc0" />
<PackageReference Include="TypeDB.Driver.Pinvoke.win-x64" Version="2.28.0-rc0" />
<PackageReference Include="TypeDB.Driver.Pinvoke.osx-arm64" Version="2.28.0-rc0" />
<PackageReference Include="TypeDB.Driver.Pinvoke.linux-arm64" Version="2.28.0-rc0" />
</ItemGroup>
C++ driver
Compiled distributions comprising headers and shared libraries available at: https://cloudsmith.io/~typedb/repos/public-release/packages/?q=name:^typedb-driver-cpp+version:2.28.0-rc0
Documentation: https://typedb.com/docs/drivers/cpp/overview
C driver
Compiled distributions comprising headers and shared libraries available at: https://cloudsmith.io/~typedb/repos/public-release/packages/?q=name:^typedb-driver-clib+version:2.28.0-rc0
New Features
-
Address translation
We allow the user to provide a translation map from the advertised server addresses (now treated as generic server names) to the actual addresses the driver shall use to connect to the cloud instances. We require the user to provide the full mapping.
Example usage:
Python:
with TypeDB.cloud_driver({ "0.deployment-UUID.cloud.typedb.com:1729": "localhost:11729", "1.deployment-UUID.cloud.typedb.com:1729": "localhost:21729", "2.deployment-UUID.cloud.typedb.com:1729": "localhost:31729" }, credential) as driver: pass
Rust:
Connection::new_cloud_with_translation( [ ("0.deployment-UUID.cloud.typedb.com:1729", "localhost:11729"), ("1.deployment-UUID.cloud.typedb.com:1729", "localhost:21729"), ("2.deployment-UUID.cloud.typedb.com:1729", "localhost:31729"), ].into(), credential )
-
Introduce packaging, distribution and documentation for the C# driver
We introduce packaging, distribution and documentation C# driver for TypeDB (the original driver PR). It is built using the cross-platform .NET 6 framework.
Usage:
The driver is distributed as a series of Nuget packages. To use the driver, import the latest versions of the driver (TypeDB.Driver) and its Pinvoke runtime (TypeDB.Driver.Pinvoke) suitable for your platform.
CS project:
Here is an example from a.csproj
for MacOS x86-64:<PackageReference Include="TypeDB.Driver" Version={VERSION} /> <PackageReference Include="TypeDB.Driver.Pinvoke.osx-x64" Version={VERSION} />
If you aim to build a platform-independent package, reference all the needed runtimes (it will affect the size of your application by downloading a respective set of platform-specific dynamic libraries):
<PackageReference Include="TypeDB.Driver.Pinvoke.osx-x64" Version={VERSION} /> <PackageReference Include="TypeDB.Driver.Pinvoke.linux-x64" Version={VERSION} /> <PackageReference Include="TypeDB.Driver.Pinvoke.win-x64" Version={VERSION} /> <PackageReference Include="TypeDB.Driver.Pinvoke.osx-arm64" Version={VERSION} /> ...
Bazel:
- Import both the
TypeDB.Driver
andTypeDB.Driver.Pinvoke
nuget packages as dependencies to your build rule. - For development, you can also use a csharp bazel rule, passing targets
//csharp:driver-csharp
(the driver itself),//csharp/Api:api
(exposed Api namespace),//csharp/Common:common
(exposed Common namespace) as dependencies.
A simple usage example (see
csharp/Test/Integration/Examples
for more):using TypeDB.Driver.Api; using TypeDB.Driver.Common; public class TypeDBExample { public void SetupTypeDB() { string dbName = "access-management-db"; string serverAddr = "127.0.0.1:1729"; try { using (ITypeDBDriver driver = Drivers.CoreDriver(serverAddr)) { driver.Databases.Create(dbName); IDatabase database = driver.Databases.Get(dbName); using (ITypeDBSession session = driver.Session(dbName, SessionType.Schema)) { using (ITypeDBTransaction transaction = session.Transaction(TransactionType.Write)) { transaction.Query.Define("define person sub entity;").Resolve(); string longQuery = "define name sub attribute, value string; person owns name;"; transaction.Query.Define(longQuery).Resolve(); transaction.Commit(); } } database.Delete(); } } catch (TypeDBDriverException e) { Console.WriteLine($"Caught TypeDB Driver Exception: {e}"); } } }
- Import both the
-
Introduce C# driver without documentation and deployment
We introduce the C# driver for TypeDB. It is built using the cross-platform .NET 6 framework.
Usage: Deployment and usage examples will be provided in a separate pull request. Current state of the code lets you compiling the driver + writing and running behaviour and integration tests for it.
The driver is expected to be a Nuget package, which could be added as a dependency to a project and referenced via "using" statements inside the users' code for all platforms.Architecture: The C# driver is a thin wrapper around the TypeDB Rust driver, introducing classes for a more intuitive interface. Mostly each C# object holds a reference to the corresponding native Rust object, using an FFI (SWIG for C#) for the native object wrappers generation and resource management.
Any error encountered will throw a
TypeDBDriverException
. Note that methods which return anIEnumerable
or a Promise and encounter a server-side error will only throw when the return objects are evaluated (e.g. iterate over or call aLinq
method for anIEnumerable
and callResolve()
for aPromise
).A simple usage example:
// Inside a try-catch block using (ITypeDBDriver driver = TypeDB.CoreDriver(TypeDB.DEFAULT_ADDRESS)) { string dbName = "mydb"; driver.Databases.Create(dbName); IDatabase mydb = driver.Databases.Get(dbName); System.Console.WriteLine(mydb.Name); using (ITypeDBSession schemaSession = driver.Session(dbName, SessionType.SCHEMA)) { using (ITypeDBTransaction writeTransaction = schemaSession.Transaction(TransactionType.WRITE)) { string defineQuery = "...some define query..."; writeTransaction.Query.Define(defineQuery).Resolve(); writeTransaction.Commit(); } } mydb.Delete(); }
Bugs Fixed
-
Update Git patch during Windows Circle CI initial job setup
We update the Windows Circle CI git patch file to be compatible with the WORKSPACE file which has been recently updated. We also add a check of whether the git patch was successfully applied to catch such mistakes early in the future.
-
Fix deadsnakes ppa in Circle CI sync-dependencies release job
Add
-y
to theadd-apt-repository
command in the Circle CI sync-dependencies release job.
Code Refactors
-
Implement new steps for getting answers from templated get
We implement a new steps in every driver for a new step: 'get answers of templat...
TypeDB Driver 2.27.0
Documentation: https://typedb.com/docs/drivers/overview
Distribution
Rust driver
Available from https://crates.io/crates/typedb-driver
Documentation: https://typedb.com/docs/drivers/rust/overview
cargo add [email protected]
Java driver
Available through https://repo.typedb.com
Documentation: https://typedb.com/docs/drivers/java/overview
<repositories>
<repository>
<id>repo.typedb.com</id>
<url>https://repo.typedb.com/public/public-release/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupid>com.vaticle.typedb</groupid>
<artifactid>typedb-driver</artifactid>
<version>2.27.0</version>
</dependency>
</dependencies>
Python driver
PyPI package: https://pypi.org/project/typedb-driver
Documentation: https://typedb.com/docs/drivers/python/overview
Available through https://pypi.org
pip install typedb-driver==2.27.0
NodeJS driver
NPM package: https://www.npmjs.com/package/typedb-driver
Documentation: https://typedb.com/docs/drivers/nodejs/overview
npm install [email protected]
C++ driver
Compiled distributions comprising headers and shared libraries available at: https://cloudsmith.io/~typedb/repos/public-release/packages/?q=name:^typedb-driver-cpp+version:2.27.0
C driver
Compiled distributions comprising headers and shared libraries available at: https://cloudsmith.io/~typedb/repos/public-release/packages/?q=name:^typedb-driver-clib+version:2.27.0
Documentation: https://typedb.com/docs/drivers/cpp/overview
New Features
Bugs Fixed
Code Refactors
Other Improvements
-
Enable deploy-snapshot jobs on development
-
Add -y to apt udpate, and replaced apt-get with apt
-
Documentation for C driver
Adds documentation for the C driver.
TypeDB Driver 2.27.0-rc0
Documentation: https://typedb.com/docs/drivers/overview
Distribution
Rust driver
Available from https://crates.io/crates/typedb-driver
Documentation: https://typedb.com/docs/drivers/rust/overview
cargo add [email protected]
Java driver
Available through https://repo.typedb.com
Documentation: https://typedb.com/docs/drivers/java/overview
<repositories>
<repository>
<id>repo.typedb.com</id>
<url>https://repo.typedb.com/public/public-release/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupid>com.vaticle.typedb</groupid>
<artifactid>typedb-driver</artifactid>
<version>2.27.0-rc0</version>
</dependency>
</dependencies>
Python driver
PyPI package: https://pypi.org/project/typedb-driver
Documentation: https://typedb.com/docs/drivers/python/overview
Available through https://pypi.org
pip install typedb-driver==2.27.0rc0
NodeJS driver
NPM package: https://www.npmjs.com/package/typedb-driver
Documentation: https://typedb.com/docs/drivers/nodejs/overview
npm install [email protected]
C++ driver
Compiled distributions comprising headers and shared libraries available at: https://cloudsmith.io/~typedb/repos/public-release/packages/?q=name:^typedb-driver-cpp+version:2.27.0-rc0
C driver
Compiled distributions comprising headers and shared libraries available at: https://cloudsmith.io/~typedb/repos/public-release/packages/?q=name:^typedb-driver-clib+version:2.27.0-rc0
Documentation: https://typedb.com/docs/drivers/cpp/overview
New Features
Bugs Fixed
Code Refactors
Other Improvements
-
Enable deploy-snapshot jobs on development
-
Add -y to apt udpate, and replaced apt-get with apt
-
Documentation for C driver
Adds documentation for the C driver.
TypeDB Driver 2.26.6
Documentation: https://typedb.com/docs/drivers/overview
Distribution
Rust driver
Available from https://crates.io/crates/typedb-driver
Documentation: https://typedb.com/docs/drivers/rust/overview
cargo add [email protected]
Java driver
Available through https://repo.typedb.com
Documentation: https://typedb.com/docs/drivers/java/overview
<repositories>
<repository>
<id>repo.typedb.com</id>
<url>https://repo.typedb.com/public/public-release/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupid>com.vaticle.typedb</groupid>
<artifactid>typedb-driver</artifactid>
<version>2.26.6</version>
</dependency>
</dependencies>
Python driver
PyPI package: https://pypi.org/project/typedb-driver
Documentation: https://typedb.com/docs/drivers/python/overview
Available through https://pypi.org
pip install typedb-driver==2.26.6
NodeJS driver
NPM package: https://www.npmjs.com/package/typedb-driver
Documentation: https://typedb.com/docs/drivers/nodejs/overview
npm install [email protected]
C++ driver
Compiled distributions comprising headers and shared libraries available at: https://cloudsmith.io/~typedb/repos/public-release/packages/?q=name:^typedb-driver-cpp+version:2.26.6
C driver
Compiled distributions comprising headers and shared libraries available at: https://cloudsmith.io/~typedb/repos/public-release/packages/?q=name:^typedb-driver-clib+version:2.26.6
Documentation: https://typedb.com/docs/drivers/cpp/overview
New Features
-
Update to allow Unicode TypeQL variable names
We update TypeQL and tests to ensure that support for Unicode TypeQL variable names (typedb/typeql#310) is included.
Bugs Fixed
-
Fix Factory CI job names
We fix prerequisites of the sync-dependencies job and bring the C++ behaviour test job names in concordance with the rest.
-
Fix native calls in python driver rules api
Fixes a bug which caused the delete, is_deleted and set_label methods on a Rule to fail.
Code Refactors
-
Consolidate Factory CI behaviour test jobs per driver language
We merge individual
test-{lang}-behaviour-{domain}
jobs in FactoryCI into a singletest-{lang}-behaviour
job in order to reduce CI bootup and shutdown overhead per test.We also fix mac-x86_64 Python and maven deployment tests by explicitly enforcing the use of Rosetta.
-
Transition from standalone typedb-common to typeql/common
We update Bazel dependencies and target paths following the merging of typedb-common into vaticle/typeql (see typedb/typeql#313).
-
Refactor C++ docs to reflect other docs
Refactors generated C++ documentation so the Iterator and Future classes are documented in the answer folder. -
Move deployment jobs from Factory CI to CIrcleCI
We move all snapshot deployment jobs from Factory CI to CIrcleCI to ensure that assembly and deployment succeed in the same environment release deployment is performed in. We also consolidate platform independent jobs into
deploy-release/snapshot-any
to further reduce the amount of CI jobs. -
Update driver Java tests to retrieve TypeDB runners as maven library
We update Java tests to use the typedb-runner and typedb-cloud-runner libraries, which are now available from Maven instead of via the Git dependency on typedb-common.
Other Improvements
-
Add README to Node.js NPM package distribution
-
Fix CircleCI sync-dependencies apt installation steps
-
Only run CircleCI snapshot builds and tests in master
-
Switch to ghr v0.16.2 (support release w/o artifacts)
-
Fix maven snapshot deployment test pom version
-
Update unpropagated dependencies
-
Only deploy releases to cloudsmith
We implement the following changes to the release process:
- stop uploading build artifacts to the github releases page;
- update the release notes documentation links;
- add C and C++ artifact download link templates to the release notes template.
-
Fix Factory merge artifact
We remove stray line in automation.yml that appeared due to an ill-resolved merge.
-
Fix CircleCI sync dependencies configuration mismatch
The sync-dependencies step in CircleCI used an obsolete setup step which no longer exists. This PR fixes that issue.
-
Sync dependencies in CI
We add a sync-dependencies job to be run in CI after successful snapshot and release deployments. The job sends a request to vaticle-bot to update all downstream dependencies.
The snapshot dependencies sync job is run in Factory CI after all behaviour and integration tests pass. The CircleCI tests only verify deployment, which is not extensive enough verification to trigger downstream propagation, and not strictly necessary for sync as that is only affected by git dependencies.
The release dependencies sync job, in contrast, runs in CircleCI and only runs after all deployments have succeeded and been verified, so that all downstream deployments can be safely updated.
Importantly, due to the way sync-dependencies is implemented, we revert
dependencies/vaticle/repositories.bzl
from having a dedicated typedb-protocol version line for the purposes of workspace-status, back to inlined version with the sync-marker. This means that the sync-marker is performing double duty as a workspace status marker.Note: this PR does not update the
dependencies
repo dependency. It will be updated automatically by the bot during its first pass. -
Remove use of 'sudo' in CI
-
Refactor npm installation and job limitation to prevent CircleCI OOM
-
Fix npm installation and Java bootup configurations
-
Disable diagnostics reporting in CI
-
Increase CircleCI executor size for OOM
-
Fix NPM deploy jobs
-
Migrate artifact hosting to cloudsmith
Updates artifact deployment & consumption rules to use cloudsmith (repo.typedb.com) instead of the self-hosted sonatype repository (repo.vaticle.com).
-
Move doc generation tools to bazel distribution repository
Moves bazel rules used for generating documentation into the vaticle/bazel-distribution repository -
Move dependencies/maven/artifacts.bzl:vaticle_artifacts to dependencies/vaticle/artifacts.bzl:maven_artifacts
-
Move remotejdk bazelrc option into build/run/test to avoid affecting bazel queries
-
Apply release pipeline fixes
TypeDB Driver 2.26.6-rc1
Documentation: https://typedb.com/docs/drivers/overview
Distribution
Rust driver
Available from https://crates.io/crates/typedb-driver
Documentation: https://typedb.com/docs/drivers/rust/overview
cargo add [email protected]
Java driver
Available through https://repo.typedb.com
Documentation: https://typedb.com/docs/drivers/java/overview
<repositories>
<repository>
<id>repo.typedb.com</id>
<url>https://repo.typedb.com/public/public-release/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupid>com.vaticle.typedb</groupid>
<artifactid>typedb-driver</artifactid>
<version>2.26.6-rc1</version>
</dependency>
</dependencies>
Python driver
PyPI package: https://pypi.org/project/typedb-driver
Documentation: https://typedb.com/docs/drivers/python/overview
Available through https://pypi.org
pip install typedb-driver==2.26.6rc1
NodeJS driver
NPM package: https://www.npmjs.com/package/typedb-driver
Documentation: https://typedb.com/docs/drivers/nodejs/overview
npm install [email protected]
C++ driver
Compiled distributions comprising headers and shared libraries available at: https://cloudsmith.io/~typedb/repos/public-release/packages/?q=name:^typedb-driver-cpp+version:2.26.6-rc1
C driver
Compiled distributions comprising headers and shared libraries available at: https://cloudsmith.io/~typedb/repos/public-release/packages/?q=name:^typedb-driver-clib+version:2.26.6-rc1
Documentation: https://typedb.com/docs/drivers/cpp/overview
New Features
-
Update to allow Unicode TypeQL variable names
We update TypeQL and tests to ensure that support for Unicode TypeQL variable names (typedb/typeql#310) is included.
Bugs Fixed
Code Refactors
-
Transition from standalone typedb-common to typeql/common
We update Bazel dependencies and target paths following the merging of typedb-common into vaticle/typeql (see typedb/typeql#313).
-
Refactor C++ docs to reflect other docs
Refactors generated C++ documentation so the Iterator and Future classes are documented in the answer folder. -
Move deployment jobs from Factory CI to CIrcleCI
We move all snapshot deployment jobs from Factory CI to CIrcleCI to ensure that assembly and deployment succeed in the same environment release deployment is performed in. We also consolidate platform independent jobs into
deploy-release/snapshot-any
to further reduce the amount of CI jobs. -
Update driver Java tests to retrieve TypeDB runners as maven library
We update Java tests to use the typedb-runner and typedb-cloud-runner libraries, which are now available from Maven instead of via the Git dependency on typedb-common.
Other Improvements
-
Only deploy releases to cloudsmith
We implement the following changes to the release process:
- stop uploading build artifacts to the github releases page;
- update the release notes documentation links;
- add C and C++ artifact download link templates to the release notes template.
-
Sync dependencies in CI
We add a sync-dependencies job to be run in CI after successful snapshot and release deployments. The job sends a request to vaticle-bot to update all downstream dependencies.
The snapshot dependencies sync job is run in Factory CI after all behaviour and integration tests pass. The CircleCI tests only verify deployment, which is not extensive enough verification to trigger downstream propagation, and not strictly necessary for sync as that is only affected by git dependencies.
The release dependencies sync job, in contrast, runs in CircleCI and only runs after all deployments have succeeded and been verified, so that all downstream deployments can be safely updated.
Importantly, due to the way sync-dependencies is implemented, we revert
dependencies/vaticle/repositories.bzl
from having a dedicated typedb-protocol version line for the purposes of workspace-status, back to inlined version with the sync-marker. This means that the sync-marker is performing double duty as a workspace status marker.Note: this PR does not update the
dependencies
repo dependency. It will be updated automatically by the bot during its first pass. -
Refactor npm installation and job limitation to prevent CircleCI OOM
-
Fix npm installation and Java bootup configurations
-
Disable diagnostics reporting in CI
-
Increase CircleCI executor size for OOM
-
Fix NPM deploy jobs
-
Migrate artifact hosting to cloudsmith
Updates artifact deployment & consumption rules to use cloudsmith (repo.typedb.com) instead of the self-hosted sonatype repository (repo.vaticle.com).
-
Move doc generation tools to bazel distribution repository
Moves bazel rules used for generating documentation into the vaticle/bazel-distribution repository -
Move dependencies/maven/artifacts.bzl:vaticle_artifacts to dependencies/vaticle/artifacts.bzl:maven_artifacts
-
Move remotejdk bazelrc option into build/run/test to avoid affecting bazel queries
-
Apply release pipeline fixes
TypeDB Driver 2.26.5
Documentation: https://typedb.com/docs/clients/overview
Distribution
Rust driver
Available from https://crates.io/crates/typedb-driver
Documentation: https://typedb.com/docs/clients/rust-driver
cargo add [email protected]
Java driver
Available through https://repo.vaticle.com
Documentation: https://typedb.com/docs/clients/java-driver
<repositories>
<repository>
<id>repo.vaticle.com</id>
<url>https://repo.vaticle.com/repository/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupid>com.vaticle.typedb</groupid>
<artifactid>typedb-driver</artifactid>
<version>2.26.5</version>
</dependency>
</dependencies>
Python driver
PyPI package: https://pypi.org/project/typedb-driver
Documentation: https://typedb.com/docs/clients/python-driver
Available through https://pypi.org
pip install typedb-driver==2.26.5
NodeJS driver
NPM package: https://www.npmjs.com/package/typedb-driver
Documentation: https://typedb.com/docs/clients/nodejs-driver
npm install typedb-driver@
C++ driver
Compiled distributions comprising headers and shared libraries available at: https://github.com/vaticle/typedb-driver/releases/tag/2.26.5
C driver
Compiled distributions comprising headers and shared libraries available at: https://github.com/vaticle/typedb-driver/releases/tag/2.26.5
New Features
-
Check server URL contains port
Fail with a sensible error message when attempting to connect to a TypeDB instance using an address without explicit port.
Bugs Fixed
Code Refactors
-
Increase size of Windows executor in CircleCI to XL
We increase the size of the Windows executor in CircleCI deployment job from medium to xlarge. This change necessitated upgrade from windows orb v2.0.0 to v5.0, and reduced CI time from ~40 minutes to ~20 minutes.
-
Release from Amazon Linux to support GLIBC 2.26
We migrate release jobs in CircleCI from Ubuntu-18.04 to Amazon Linux 2 docker image (RedHat-based), in order to downgrade the GLIBC dependency from 2.27 to 2.26. This approach will enable many users who use Amazon Linux 2 to be sure that they can use TypeDB drivers to connect to TypeDB.
-
Merge CircleCI jobs per platform
We reduce the number of CircleCI jobs by combining all jobs running on the same executor (ie. per platform) into one. This reduces overhead associated with spinning up a new executor for each job and streamlines the release process.
CircleCI now loosely has one deploy job platform, and one test job per platform in both snapshot and release pipelines.
Jobs that do not require native compilation, are unchanged.
Other Improvements
-
Merge 2.26.3 release changes to development
We merge changes made to CI pipelines for the 2.26.3 release back to development.
TypeDB Driver 2.26.3
Documentation: https://typedb.com/docs/clients/overview
Distribution
Rust driver
Available from https://crates.io/crates/typedb-driver
Documentation: https://typedb.com/docs/clients/rust-driver
cargo add [email protected]
Java driver
Available through https://repo.vaticle.com
Documentation: https://typedb.com/docs/clients/java-driver
<repositories>
<repository>
<id>repo.vaticle.com</id>
<url>https://repo.vaticle.com/repository/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupid>com.vaticle.typedb</groupid>
<artifactid>typedb-driver</artifactid>
<version>2.26.3</version>
</dependency>
</dependencies>
Python driver
PyPI package: https://pypi.org/project/typedb-driver
Documentation: https://typedb.com/docs/clients/python-driver
Available through https://pypi.org
pip install typedb-driver==2.26.3
NodeJS driver
NPM package: https://www.npmjs.com/package/typedb-driver
Documentation: https://typedb.com/docs/clients/nodejs-driver
npm install typedb-driver@
C++ driver
Compiled distributions comprising headers and shared libraries available at: https://github.com/vaticle/typedb-driver/releases/tag/2.26.3
C driver
Compiled distributions comprising headers and shared libraries available at: https://github.com/vaticle/typedb-driver/releases/tag/2.26.3
New Features
Bugs Fixed
-
Fix fetch sub-query aggregation null pointer
We fix a bug where a Fetch query with a Get-Aggregate subquery that returned an empty (ie. undefined) answer throw a null pointer exception.
For example this used to incorrectly throw an exception if 'Alice' doesn't have any salaries in the database, since a 'sum' is undefined for 0 entries.
match $x isa person, has name $n; $n == "Alice"; fetch $n as "name"; total-salary: { match $x has salary $s; get $s; sum $s; };
We now correctly return the following JSON structure
[ { "name": {"value": "Alice", "type": {"label": "name", "root": "attribute", "value_type": "string"}}, "total-salary": null } ]
-
Update to tonic 1.28
We fix a bug in the installation of the latest typedb-driver Rust by upgrading
tonic
to version 1.28.
Code Refactors
-
Release with Ubuntu 18.04 in to lower GLIBC requirement to 2.27.0
We downgrade from Ubuntu 20.04 to 18.04 in CircleCI assembly and deployment jobs, using a Docker image. This lowers the minimum supported glibc version from 2.31 to 2.27.
-
Rename typedb.hpp to typedb_driver.hpp
Other Improvements
-
C++ driver documentation and add missing APIs
Documents the C++ code & adds ascii docs generated via doxygen. Adds a few methods to the classes which were missing. -
Update python credential documentation
-
Update C and CPP entry in README.md
-
Update C++ readme with new 'cloud' terminology
TypeDB Driver 2.26.1
Documentation: https://typedb.com/docs/clients/overview
Distribution
Rust driver
Available from https://crates.io/crates/typedb-driver
Documentation: https://typedb.com/docs/clients/rust-driver
cargo add [email protected]
Java driver
Available through https://repo.vaticle.com
Documentation: https://typedb.com/docs/clients/java-driver
<repositories>
<repository>
<id>repo.vaticle.com</id>
<url>https://repo.vaticle.com/repository/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupid>com.vaticle.typedb</groupid>
<artifactid>typedb-driver</artifactid>
<version>2.26.1</version>
</dependency>
</dependencies>
Python driver
PyPI package: https://pypi.org/project/typedb-driver
Documentation: https://typedb.com/docs/clients/python-driver
Available through https://pypi.org
pip install typedb-driver==2.26.1
NodeJS driver
NPM package: https://www.npmjs.com/package/typedb-driver
Documentation: https://typedb.com/docs/clients/nodejs-driver
npm install typedb-driver@
C++ driver
Compiled distributions comprising headers and shared libraries available at: https://github.com/vaticle/typedb-driver/releases/tag/2.26.1
C driver
Compiled distributions comprising headers and shared libraries available at: https://github.com/vaticle/typedb-driver/releases/tag/2.26.1
API Changes
- The TypeDB Cloud/Enterprise driver entry point has been renamed. Use
TypeDB.cloudDriver()
instead ofTypeDB.enterpriseDriver()
to connect to TypeDB Cloud/Enterprise.
New Features
-
Introduce C++ driver
Introduce the C++ driver for TypeDB. It is built against the C++17 standard and distributed as an archive containing the headers (under/include
& a shared library under/lib
).Usage: As usual, add the headers paths to your include path in the compile step & the library to your link step. For windows, the 'import-lib'
typedb-driver-cpp-<platform>.if.lib
is included to link against.Architecture: The C++ driver is a thin wrapper around the TypeDB rust driver, introducing classes for a more intuitive interface. Each C++ object holds a unique pointer to the corresponding native rust object and is the unique owner of that rust object. To ensure this, we enforce move-semantics on the C++ objects. The rust object is freed when the C++ object owning it is destructed. Any error encountered will throw a
TypeDB::DriverException
. Note that methods which returnIterable
orFuture
which encounter a server-side error will only throw when they are evaluated (usingbegin
orget
respectively).Example:
// All files are included from typedb.hpp #include <typedb.hpp> int main() { TypeDB::Driver driver = TypeDB::Driver::coreDriver("127.0.0.1:1729"); std::string dbName = "move-example"; TypeDB::Driver driver = TypeDB::Driver::coreDriver("127.0.0.1:1729"); driver.databases.create(dbName); TypeDB::Database db = driver.databases.get(dbName); // Database db1 = db; // Copying is disabled: Produces a compiler error. TypeDB::Database db1 = std::move(db); // Moves ownership from db to db1 try { std::cout << db.name() << std::endl; // db is no longer valid } catch (TypeDB::DriverException e) { // C++ Internal Error: The object does not have a valid native handle. It may have been: uninitialised, moved or disposed std::cerr << "Caught exception: " << e.message() << std::endl; } std::cout << "db.name(): " << db1.name() << std::endl; // Ok: Prints 'move-objects' return 0; }
Bugs Fixed
-
Java JNI library loading: fallback when platform not specified
Previously, the JNI library would be selected based on if the containing JAR contains the expected platform string. When TypeDB Driver Java is repackaged by the end user, the JNI library is relocated and is likely missing the platform specification in its path. Now, if only one native library candidate is found in classpath, we attempt to use that rather than fail.
Code Refactors
-
Replace all instances of 'enterprise' with 'cloud'
We replace the term 'enterprise' with 'cloud', to reflect the new consistent terminology used throughout Vaticle.
-
C++ driver UX improvements
Add a few missing APIs, and easier-to-use function variants.
Other Improvements
-
Fix circleci assembly tests for C++ driver
Fix assembly test paths broken in previous commit -
Release pipeline for C++ driver
Introduce build targets & jobs for the release pipeline of the C++ driver