sapling/lib
2018-01-09 15:20:46 -08:00
..
cdatapack cdatapack: move to lib/ 2018-01-08 17:55:53 -08:00
clib cfastmanifest: move to hgext/extlib/ 2018-01-09 10:36:54 -08:00
linelog linelog: format the code using clang-format 2018-01-08 16:22:30 -08:00
radixbuf fb-hgext: integrate rust libraries and extensions with setup.py 2018-01-08 15:26:24 -08:00
third-party/sha1dc sha1: add sha1detectcoll library to setup.py 2018-01-08 12:54:57 -08:00
vlqencoding fb-hgext: integrate rust libraries and extensions with setup.py 2018-01-08 15:26:24 -08:00
README.md lib: add READMEs to lib, extlib, cext 2018-01-09 15:20:46 -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. #import <Python.h>) is disallowed.

As we start to convert more of Mercurial into Rust, we'll want to limit the scope of our dependency on Python and allow end-to-end Rust code, 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).