sapling/lib
Durham Goode 79a60403f7 histpack: sort history entries before writing them
Summary:
The histpack format requires that entries in each file section be
written in topological order, so that future readers can compute ancestors by
just linearly scanning. Let's make the rust mutable history pack support this.

Technically the rust historypack reader does not require this for now, but the python
one does, so we need to enforce it.

Reviewed By: kulshrax

Differential Revision: D10441286

fbshipit-source-id: dfdb57182909270b760bd79a100873aa3903a2a5
2018-10-23 17:16:01 -07:00
..
argparse argparse: sync from scm/telemetry/ 2018-10-22 08:29:51 -07:00
bookmarkstore rustlib: move Node to a separate "types" crate 2018-10-03 18:19:27 -07:00
cdatapack hg: disable check-code tests for C code 2018-06-05 19:21:43 -07:00
clib Started Eden for Windows and integrated hg store with it. 2018-08-21 17:51:26 -07:00
commitcloudsubscriber commit cloud sync: fast path for pull 2018-09-10 15:05:25 -07:00
configparser rust-crates-io: add crossbeam to tp2 2018-10-08 21:32:00 -07:00
encoding hg: add some convenient panicking conversion to encoding 2018-08-30 04:42:11 -07:00
hg_watchman_client watchman rust client for hg: allow fallible deserialization for paths and add tests 2018-05-29 13:09:18 -07:00
hgpython hgpython: rename hgenv to be buildenv 2018-10-12 14:55:09 -07:00
indexedlog indexedlog: mark block as non-code 2018-10-03 18:19:27 -07:00
linelog hg: disable check-code tests for C code 2018-06-05 19:21:43 -07:00
lz4-pyframe Back out "Reuse pylz4 encoding between hg and Mononoke into a separate library" 2018-08-08 12:20:54 -07:00
minibench minibench: simple test filtering support 2018-04-17 18:54:39 -07:00
mpatch hg: datapack: avoid stack overflow for empty files with no deltas 2018-10-16 10:47:57 -07:00
mpatch-sys mpatch: add rust bindings 2018-05-14 16:06:32 -07:00
pathmatcher ignore: support global gitignore configs 2018-08-02 20:22:47 -07:00
radixbuf rust/tp2: update rust-crates-io 2018-06-01 09:32:56 -07:00
revisionstore histpack: sort history entries before writing them 2018-10-23 17:16:01 -07:00
third-party xdiff: backport upstream changes 2018-04-13 21:51:48 -07:00
treestate treestate: fix documentation about FilteredKeyCache 2018-07-31 16:35:50 -07:00
types rustlib: move Node to a separate "types" crate 2018-10-03 18:19:27 -07:00
vlqencoding vlqencoding: replace criterion with minibench 2018-04-17 18:54:39 -07:00
watchman_client watchman rust client for hg: allow fallible deserialization for paths and add tests 2018-05-29 13:09:18 -07:00
zstdelta zstd-sys: update the package version 2018-10-09 07:26:31 -07:00
Cargo.toml packaging: back out D10213071 to fix continuous build 2018-10-08 08:54:08 -07:00
README.md READMEs: tweaks based on feedback 2018-01-12 12:35:52 -08:00

lib

Any native code (C/C++/Rust) that Mercurial (either core or extensions) depends on should go here. Python code, or native code that depends on Python code (e.g. #include <Python.h> or use cpython) is disallowed.

As we start to convert more of Mercurial into Rust, and write new paths entrirely in native code, we'll want to limit our dependency on Python, which is why this barrier exists.

See also hgext/extlib/README.md, mercurial/cext/README.mb.

How do I choose between lib and extlib (and cext)?

If your code is native and doesn't depend on Python (awesome!), it goes here.

Otherwise, put it in hgext/extlib (if it's only used by extensions) or mercurial/cext (if it's used by extensions or core).