sapling/lib
Xavier Deguillard f2cae00958 indexedlog: remove RefCell usage
Summary:
The RefCell makes the IndexedLog not Sync, let's replace the RefCell with
atomic operation to make it Sync.

The `index lookup (disk, verified)` benchmark does not changed much with
this change.

Reviewed By: quark-zju

Differential Revision: D17298580

fbshipit-source-id: 41cb8fea7e06676f3e2cbca3475ac863b0d8454d
2019-09-11 10:24:57 -07:00
..
asyncrevisionstore/src revisionstore: rename IterableStore to ToKeys 2019-09-11 10:24:57 -07:00
blackbox commitcloud: add blackbox logging of cloud changes 2019-08-23 05:03:38 -07:00
bookmarkstore rust: update to 2018 edition 2019-06-03 07:22:36 -07:00
cdatapack fix a warning about an ignored const keyword 2019-08-05 12:10:41 -07:00
clib Started Eden for Windows and integrated hg store with it. 2018-08-21 17:51:26 -07:00
clidispatch dispatch: change 'no repository found' message 2019-09-10 18:29:50 -07:00
cliparser clidispatch: support explicitly named arguments in define_flags! 2019-08-28 19:26:28 -07:00
commitcloudsubscriber Delete lines of the form "use [a-z_]+;" 2019-09-10 15:06:37 -07:00
commitstore/bench-serialize commitstore/bench-serialize: add benchmark for mincode 2019-09-06 13:13:49 -07:00
configparser Delete lines of the form "use [a-z_]+;" 2019-09-10 15:06:37 -07:00
cpython-ext hgcommands: pass args and io to Python 2019-08-28 19:26:25 -07:00
cpython-failure lib: drop extension-module-2-7 cpython feature 2019-08-08 22:54:07 -07:00
dag Delete lines of the form "use [a-z_]+;" 2019-09-10 15:06:37 -07:00
drawdag drawdag: implement a Rust drawdag library 2019-05-03 13:35:40 -07:00
edenapi Delete lines of the form "use [a-z_]+;" 2019-09-10 15:06:37 -07:00
encoding Delete lines of the form "use [a-z_]+;" 2019-09-10 15:06:37 -07:00
hg_watchman_client Delete lines of the form "use [a-z_]+;" 2019-09-10 15:06:37 -07:00
hgcommands Delete lines of the form "use [a-z_]+;" 2019-09-10 15:06:37 -07:00
indexedlog indexedlog: remove RefCell usage 2019-09-11 10:24:57 -07:00
linelog linelog: update README 2018-11-08 12:34:36 -08:00
lz4-pyframe revisionstore: use Bytes instead of Box<[u8]> in Delta and DataEntry 2019-01-22 14:03:17 -08:00
manifest treemanifest: remove delta storing of manifest entries when autocreate 2019-09-03 15:08:34 -07:00
mincode Delete lines of the form "use [a-z_]+;" 2019-09-10 15:06:37 -07:00
minibench minibench: add a way to provide adhoc messages for measurement 2019-08-09 16:17:50 -07:00
mpatch rust: update to 2018 edition 2019-06-03 07:22:36 -07:00
mpatch-sys rust: update to 2018 edition 2019-06-03 07:22:36 -07:00
mutationstore rust: update to 2018 edition 2019-06-03 07:22:36 -07:00
nodemap Apply rustfmt to all rust files 2019-07-10 20:18:48 -07:00
pathmatcher pathmatcher: add Matcher trait 2019-07-22 13:03:00 -07:00
procinfo procinfo: upgrade winapi to 0.3 2019-07-16 17:10:59 -07:00
radixbuf rust: update to 2018 edition 2019-06-03 07:22:36 -07:00
revisionstore revisionstore: rename IterableStore to ToKeys 2019-09-11 10:24:57 -07:00
stackdesc stackdesc: a thin library to annotate the current thread execution 2019-08-01 19:53:56 -07:00
third-party mincode: initial boilerplate 2019-09-06 13:13:47 -07:00
treestate Delete lines of the form "use [a-z_]+;" 2019-09-10 15:06:37 -07:00
types Delete lines of the form "use [a-z_]+;" 2019-09-10 15:06:37 -07:00
util util: add a function to get absolute path without resolving symlinks 2019-08-21 17:59:50 -07:00
vlqencoding Apply rustfmt to all rust files 2019-07-10 20:18:48 -07:00
watchman_client Delete lines of the form "use [a-z_]+;" 2019-09-10 15:06:37 -07:00
zstdelta Update to Rust 1.38.0-beta.3 2019-08-30 02:01:28 -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).