##// END OF EJS Templates
rust: add `dirstate_tree` module...
rust: add `dirstate_tree` module Mercurial needs to represent the filesystem hierarchy on which it operates, for example in the dirstate. Its current on-disk representation is an unsorted, flat structure that gets transformed in the current Rust code into a `HashMap`. This loses the hierarchical information of the dirstate, leading to some unfortunate performance and algorithmic compromises. This module adds an implementation of a radix tree that is specialized for representing the dirstate: its unit is the path component. I have made no efforts to optimize either its memory footprint or its insertion speed: they're pretty bad for now. Following will be a few patches that modify the dirstate.status logic to use that new hierarchical information, fixing issue 6335 in the same swing. Differential Revision: https://phab.mercurial-scm.org/D9085

File last commit:

r46102:b0d6309f default
r46136:b51167d7 default
Show More
Cargo.toml
42 lines | 968 B | text/plain | TOMLLexer
[package]
name = "hg-core"
version = "0.1.0"
authors = ["Georges Racinet <gracinet@anybox.fr>"]
description = "Mercurial pure Rust core library, with no assumption on Python bindings (FFI)"
edition = "2018"
[lib]
name = "hg"
[dependencies]
byteorder = "1.3.4"
hex = "0.4.2"
lazy_static = "1.4.0"
memchr = "2.3.3"
rand = "0.7.3"
rand_pcg = "0.2.1"
rand_distr = "0.2.2"
rayon = "1.3.0"
regex = "1.3.9"
twox-hash = "1.5.0"
same-file = "1.0.6"
crossbeam = "0.7.3"
micro-timer = "0.3.0"
log = "0.4.8"
memmap = "0.7.0"
zstd = "0.5.3"
rust-crypto = "0.2.36"
# We don't use the `miniz-oxide` backend because its minimum Rust version is
# `1.36`. However, this PR (https://github.com/Frommi/miniz_oxide/pull/84/files)
# introduces a flag `no_extern_crate_alloc` to bring the requirement back down
# to `1.34`.
[dependencies.flate2]
version = "1.0.16"
features = ["zlib"]
default-features = false
[dev-dependencies]
clap = "*"
pretty_assertions = "0.6.1"
tempfile = "3.1.0"