sapling/lib
Jun Wu 991a9343b9 indexedlog: log: partially implement main APIs
Summary:
Partially implement open, append, flush, lookup APIs. This shows how things
work in general, like how locking works. What's in-memory and what's on-disk
etc.

Reviewed By: DurhamG

Differential Revision: D8156514

fbshipit-source-id: 2de23dcde2f63895f3f3e4f67057aa9520fdfa34
2018-06-11 19:36:15 -07:00
..
argparse Upgrade to 18.5b1 2018-05-30 02:23:58 -07:00
cdatapack hg: disable check-code tests for C code 2018-06-05 19:21:43 -07:00
clib hg: disable check-code tests for C code 2018-06-05 19:21:43 -07:00
commitcloudsubscriber commitcloud add '--use-bgssh' option for hg cloud sync 2018-06-08 10:32:34 -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
indexedlog indexedlog: log: partially implement main APIs 2018-06-11 19:36:15 -07:00
linelog hg: disable check-code tests for C code 2018-06-05 19:21:43 -07:00
lz4-pyframe lz4: add rust lz4 bindings 2018-05-16 09:13:18 -07:00
minibench minibench: simple test filtering support 2018-04-17 18:54:39 -07:00
mpatch mpatch: add rust bindings 2018-05-14 16:06:32 -07:00
mpatch-sys mpatch: add rust bindings 2018-05-14 16:06:32 -07:00
pathencoding pathencoding: utility for converting between bytes and paths 2018-04-13 21:51:35 -07:00
pathmatcher gitignore: avoid quadratic behavior 2018-04-13 21:51:48 -07:00
radixbuf rust/tp2: update rust-crates-io 2018-06-01 09:32:56 -07:00
revisionstore refactor rust datastore to a consistent naming scene 2018-06-04 17:39:47 -07:00
third-party xdiff: backport upstream changes 2018-04-13 21:51:48 -07:00
treestate treestate: optimize calculate_aggregated_state_recursive 2018-06-11 14:32:42 -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 zstdelta: add a simple command-line utility for debugging 2018-05-25 16:28:59 -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).