Skip to content
v4.0.0

Breaking:

* Switch default gRPC server from Java to Rust
* Remove sorted list of nodes from graph output

Bug fixes:

* Fix pyo3 extension build on recent Maturin versions
* compute-directory-frontier: Use correct timestamp to decide if node is frontier

Ergonomics:

* Add CLI to regenerate graph files for the current version
* Add CLI to download the graph (and decompress .zst files)

Performance optimizations:

* Start BFS from (sorted) origins instead of random nodes
* http_rpc_server.VisitEdgesView: Do not fetch edge labels
* provenance: Switch from glibc malloc to jemalloc
* contents-in-directories: Do not traverse nodes not reachable from a frontier directory
* Make dependency on swh-storage optional

Rust rewrite:

* Look for rust swh-graph-grpc-serve execuctable in user's PATH and 'rust_executable_dir' config
* EXTRACT_NODES, MAPS, COMPOSE_ORDERS, TRANSPOSE: Switch to Rust implementation
* Rewrite ListOriginContributors in Rust
* Rewrite ListFilesByName in Rust
* Rewrite MPHTranslate in Rust
* Add support for computing node ids from SWHIDs
* Update list of temporary files to clean after compression is done
* java: Add support for reading is_skipped.bits and node2type.bin
  (produced by the Rust compression pipeline)

Other improvements:

* CountPaths: Add support for 2024-05-16 graph
* provenance: Add support for '--node-filter all'
* Document how to get the URL of an origin node
* Document dependency on protoc
* grpc-server: Add --masked-nodes option
* pytest_plugin: Move server config to its own fixture
* model: adapt to the renaming of model.TargetType to model.SnapshotTargetType