diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 894a14de..bc9bf41d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -63,6 +63,9 @@ jobs: - run: cargo publish working-directory: ./lib/spargebra continue-on-error: true + - run: cargo publish + working-directory: ./lib/sparql-smith + continue-on-error: true - run: cargo publish working-directory: ./lib continue-on-error: true diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e9779de..5242b2b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,28 @@ +## [0.3.11] - 2022-12-18 + +## Added +- SPARQL: Implementation of the `LATERAL` operator following [SPARQL SEP-0006](https://github.com/w3c/sparql-12/blob/main/SEP/SEP-0006/sep-0006.md). + Support is behind the `sep-0006` feature in `spargebra` and enabled by default in Oxigraph. +- SPARQL: Implementation of the `ADJUST` function following [SPARQL SEP-0002](https://github.com/w3c/sparql-12/blob/main/SEP/SEP-0002/sep-0002.md). + Support is behind the `sep-0002` feature in `spargebra` and enabled by default in Oxigraph. +- Rust: There is a new stand-alone crate `oxsdatatypes` implementing Rust structs for the common XML schema datatypes. + It was part of the Oxigraph crate and it might be useful for other SPARQL or XPath implementations. +- Rust: The `oxigraph` crate can now be compiled for `wasm32-wasi` with the basic in-memory backend but without RocksDB. + +## Changed +- SPARQL: The property path evaluator was sometime emitting duplicates when evaluating disjunctive patterns (`a|b`). It is now fixed. +- SPARQL: If written explicitly in the SPARQL query, the regular expressions are now compiled once and not for each row. +- SPARQL: Property path evaluation with both start and end variables bound has been optimized. +- SPARQL: Casts to `xsd:decimal` from `xsd:float` and `xsd:double` now properly fails on overflow instead of overflowing the internal 128-bits representation. + This follows [XPath casting rules](https://www.w3.org/TR/xpath-functions/#casting-to-decimal). +- Rust: The minimal supported Rust version is set at 1.60 and enforced using the CI. +- Python: Local builds will now target the specific Python version instead of [abi3](https://docs.python.org/3/c-api/stable.html). + abi3 wheels are still released on Pypi alongside new Python-version specific builds for Linux+GNU. +- SPARQL: Fixes a panic when the estimated upper bound of the results size was overflowing a `usize`. +- Python: Uses `typing.IO` in Python stubs instead of narrower interfaces. +- Upgrades RocksDB to 7.9.2, `quick-xml` to 0.27 and `pyo3` to 0.18. + + ## [0.3.10] - 2022-12-21 ## Added diff --git a/Cargo.lock b/Cargo.lock index 98a786ca..8b303a42 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -967,7 +967,7 @@ dependencies = [ [[package]] name = "oxigraph" -version = "0.3.10" +version = "0.3.11" dependencies = [ "criterion", "digest", @@ -998,7 +998,7 @@ dependencies = [ [[package]] name = "oxigraph_js" -version = "0.3.10" +version = "0.3.11" dependencies = [ "console_error_panic_hook", "js-sys", @@ -1008,7 +1008,7 @@ dependencies = [ [[package]] name = "oxigraph_server" -version = "0.3.10" +version = "0.3.11" dependencies = [ "anyhow", "assert_cmd", @@ -1030,7 +1030,7 @@ dependencies = [ [[package]] name = "oxigraph_testsuite" -version = "0.3.10" +version = "0.3.11" dependencies = [ "anyhow", "clap 4.0.32", @@ -1054,7 +1054,7 @@ checksum = "bb175ec8981211357b7b379869c2f8d555881c55ea62311428ec0de46d89bd5c" [[package]] name = "oxrdf" -version = "0.1.1" +version = "0.1.2" dependencies = [ "lasso", "oxilangtag", @@ -1065,7 +1065,7 @@ dependencies = [ [[package]] name = "oxrocksdb-sys" -version = "0.3.10" +version = "0.3.11" dependencies = [ "bindgen", "cc", @@ -1307,7 +1307,7 @@ dependencies = [ [[package]] name = "pyoxigraph" -version = "0.3.10" +version = "0.3.11" dependencies = [ "oxigraph", "pyo3", @@ -1657,7 +1657,7 @@ checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" [[package]] name = "sparesults" -version = "0.1.3" +version = "0.1.4" dependencies = [ "json-event-parser", "oxrdf", @@ -1666,7 +1666,7 @@ dependencies = [ [[package]] name = "spargebra" -version = "0.2.3" +version = "0.2.4" dependencies = [ "oxilangtag", "oxiri", diff --git a/js/Cargo.toml b/js/Cargo.toml index 0d6cd243..eb764d62 100644 --- a/js/Cargo.toml +++ b/js/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "oxigraph_js" -version = "0.3.10" +version = "0.3.11" authors = ["Tpt "] license = "MIT OR Apache-2.0" readme = "README.md" @@ -14,7 +14,7 @@ crate-type = ["cdylib"] name = "oxigraph" [dependencies] -oxigraph = { version = "0.3.10", path="../lib" } +oxigraph = { version = "0.3.11", path="../lib" } wasm-bindgen = "0.2" js-sys = "0.3" console_error_panic_hook = "0.1" diff --git a/lib/Cargo.toml b/lib/Cargo.toml index 0c75bfc3..a1488f32 100644 --- a/lib/Cargo.toml +++ b/lib/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "oxigraph" -version = "0.3.10" +version = "0.3.11" authors = ["Tpt "] license = "MIT OR Apache-2.0" readme = "README.md" @@ -37,14 +37,14 @@ hex = "0.4" siphasher = "0.3" lazy_static = "1" sysinfo = "0.27" -oxrdf = { version = "0.1.1", path="oxrdf", features = ["rdf-star", "oxsdatatypes"] } +oxrdf = { version = "0.1.2", path="oxrdf", features = ["rdf-star", "oxsdatatypes"] } oxsdatatypes = { version = "0.1.0", path="oxsdatatypes" } -spargebra = { version = "0.2.3", path="spargebra", features = ["rdf-star", "sep-0002", "sep-0006"] } -sparesults = { version = "0.1.3", path="sparesults", features = ["rdf-star"] } +spargebra = { version = "0.2.4", path="spargebra", features = ["rdf-star", "sep-0002", "sep-0006"] } +sparesults = { version = "0.1.4", path="sparesults", features = ["rdf-star"] } [target.'cfg(not(target_family = "wasm"))'.dependencies] libc = "0.2" -oxrocksdb-sys = { version = "0.3.10", path="../oxrocksdb-sys" } +oxrocksdb-sys = { version = "0.3.11", path="../oxrocksdb-sys" } oxhttp = { version = "0.1", optional = true } [target.'cfg(all(target_family = "wasm", target_os = "unknown"))'.dependencies] diff --git a/lib/oxrdf/Cargo.toml b/lib/oxrdf/Cargo.toml index d8c876b9..770d39ff 100644 --- a/lib/oxrdf/Cargo.toml +++ b/lib/oxrdf/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "oxrdf" -version = "0.1.1" +version = "0.1.2" authors = ["Tpt "] license = "MIT OR Apache-2.0" readme = "README.md" diff --git a/lib/oxsdatatypes/README.md b/lib/oxsdatatypes/README.md index b89bc272..213a53f1 100644 --- a/lib/oxsdatatypes/README.md +++ b/lib/oxsdatatypes/README.md @@ -8,7 +8,7 @@ oxsdatatypes [![Gitter](https://badges.gitter.im/oxigraph/community.svg)](https://gitter.im/oxigraph/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) oxsdatatypes is an implementation of some [XML Schema Definition Language Datatypes](https://www.w3.org/TR/xmlschema11-2/). -Its main aim is to ease the implementation of SPARQL or XPath. +Its main aim is to ease the implementation of SPARQL and XPath. Usage example: diff --git a/lib/sparesults/Cargo.toml b/lib/sparesults/Cargo.toml index 54cb9d0f..a8ae98dc 100644 --- a/lib/sparesults/Cargo.toml +++ b/lib/sparesults/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sparesults" -version = "0.1.3" +version = "0.1.4" authors = ["Tpt "] license = "MIT OR Apache-2.0" readme = "README.md" @@ -19,7 +19,7 @@ rdf-star = ["oxrdf/rdf-star"] [dependencies] json-event-parser = "0.1" -oxrdf = { version = "0.1.1", path="../oxrdf" } +oxrdf = { version = "0.1.2", path="../oxrdf" } quick-xml = "0.27" [package.metadata.docs.rs] diff --git a/lib/spargebra/Cargo.toml b/lib/spargebra/Cargo.toml index 9e1b12b9..f1be1281 100644 --- a/lib/spargebra/Cargo.toml +++ b/lib/spargebra/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "spargebra" -version = "0.2.3" +version = "0.2.4" authors = ["Tpt "] license = "MIT OR Apache-2.0" readme = "README.md" @@ -24,7 +24,7 @@ peg = "0.8" rand = "0.8" oxiri = "0.2" oxilangtag = "0.1" -oxrdf = { version = "0.1.1", path="../oxrdf" } +oxrdf = { version = "0.1.2", path="../oxrdf" } [package.metadata.docs.rs] all-features = true diff --git a/oxrocksdb-sys/Cargo.toml b/oxrocksdb-sys/Cargo.toml index b6ca4bb5..2224a701 100644 --- a/oxrocksdb-sys/Cargo.toml +++ b/oxrocksdb-sys/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "oxrocksdb-sys" -version = "0.3.10" +version = "0.3.11" authors = ["Tpt "] license = "GPL-2.0 OR Apache-2.0" repository = "https://github.com/oxigraph/oxigraph/tree/main/oxrocksdb-sys" diff --git a/python/Cargo.toml b/python/Cargo.toml index a744351b..c9397922 100644 --- a/python/Cargo.toml +++ b/python/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pyoxigraph" -version = "0.3.10" +version = "0.3.11" authors = ["Tpt"] license = "MIT OR Apache-2.0" readme = "README.md" @@ -19,5 +19,5 @@ doctest = false abi3 = ["pyo3/abi3-py37"] [dependencies] -oxigraph = { version = "0.3.10", path="../lib", features = ["http_client"] } +oxigraph = { version = "0.3.11", path="../lib", features = ["http_client"] } pyo3 = { version = "0.18", features = ["extension-module"] } diff --git a/server/Cargo.toml b/server/Cargo.toml index 8c3ab202..76eb9022 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "oxigraph_server" -version = "0.3.10" +version = "0.3.11" authors = ["Tpt "] license = "MIT OR Apache-2.0" readme = "README.md" @@ -17,8 +17,8 @@ anyhow = "1" oxhttp = { version = "0.1", features = ["rayon"] } clap = { version = "=4.0", features = ["derive"] } clap_lex = "=0.3.0" -oxigraph = { version = "0.3.10", path = "../lib", features = ["http_client"] } -sparesults = { version = "0.1.3", path = "../lib/sparesults", features = ["rdf-star"] } +oxigraph = { version = "0.3.11", path = "../lib", features = ["http_client"] } +sparesults = { version = "0.1.4", path = "../lib/sparesults", features = ["rdf-star"] } rand = "0.8" url = "2" oxiri = "0.2" diff --git a/testsuite/Cargo.toml b/testsuite/Cargo.toml index 2d644a12..165bcdaf 100644 --- a/testsuite/Cargo.toml +++ b/testsuite/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "oxigraph_testsuite" -version = "0.3.10" +version = "0.3.11" authors = ["Tpt "] license = "MIT OR Apache-2.0" readme = "../README.md" @@ -15,7 +15,7 @@ publish = false anyhow = "1" clap = { version = "4", features = ["derive"] } time = { version = "0.3", features = ["formatting"] } -oxigraph = { version = "0.3.10", path="../lib" } +oxigraph = { version = "0.3.11", path="../lib" } text-diff = "0.4" [dev-dependencies]