sapling/eden/scm/lib
Jun Wu d352133d6d hgcommits: use concrete error types
Summary: Migrate to concrete types so it can be typechecked.

Reviewed By: DurhamG

Differential Revision: D23095469

fbshipit-source-id: 27c6da30ca8a1329df544cd2ded7d9734593e48a
2020-08-21 13:00:45 -07:00
..
auth auth: allow specifying a CA certificate bundle 2020-07-16 19:48:36 -07:00
backingstore configs: make backingstore load hg configs through the approved path 2020-08-16 16:56:00 -07:00
blackbox
bookmarkstore
cdatapack
clib
clidispatch configs: add rust support for loading dynamic and repo configs 2020-08-16 16:56:00 -07:00
cliparser debug: introduce error classification and metadata propagation 2020-07-15 10:03:10 -07:00
commitcloudsubscriber silence some Rust warnings 2020-08-05 00:16:33 -07:00
commitstore/bench-serialize
configparser configs: handle timestamp anomalies in dynamicconfigs 2020-08-21 13:00:45 -07:00
cpython-ext taggederror: Introduce taggederror-util for more ergonomic error tagging for eden error types. 2020-08-06 19:37:25 -07:00
dag gitdag: crate to build segmented dag from git history 2020-08-21 13:00:45 -07:00
dev-logger
drawdag Use types from the oxidized_by_ref crate instead of the oxidized crate for to_oxidized 2020-05-28 22:19:13 -07:00
edenapi edenapi: Introduce serde annotations for wire protocol compatibility and compact wire representation 2020-08-18 13:44:35 -07:00
edenfs-client eden/scm: move third-party facebook crates dependencies to a separate folder 2020-07-02 03:35:02 -07:00
encoding
fsinfo fsinfo: fix cargo test 2020-08-14 13:38:41 -07:00
hgcommands configs: move Rust dynamicconfig generation into configparser::hg 2020-08-16 16:55:59 -07:00
hgcommits hgcommits: use concrete error types 2020-08-21 13:00:45 -07:00
hgtime
http_client http_client: disable ssl revocation checking on Windows 2020-08-13 23:17:28 -07:00
indexedlog
linelog
lz4-pyframe lz4-pyframe: use concrete error types 2020-08-06 12:31:56 -07:00
manifest
manifest-tree
metalog metalog: implement compaction api 2020-06-26 09:58:58 -07:00
mincode
minibench
minibytes
mpatch
mpatch-sys
mutationstore mutationstore: add a native path to calculate 'obsolete()' 2020-08-21 13:00:45 -07:00
nodemap
pathmatcher Replace whitelist/blacklist term 2020-06-15 15:01:19 -07:00
procinfo
radixbuf radixbuf: use concrete error types 2020-08-06 12:31:57 -07:00
renderdag renderdag: move to dag 2020-08-21 13:00:45 -07:00
revisionstore Enable fb features for cargo test diff runs 2020-08-18 14:01:01 -07:00
revlogindex nameset: use real dag snapshot instead of a pointer in hints 2020-08-21 13:00:45 -07:00
taggederror taggederror: Introduce taggederror-util for more ergonomic error tagging for eden error types. 2020-08-06 19:37:25 -07:00
taggederror-util taggederror: Introduce taggederror-util for more ergonomic error tagging for eden error types. 2020-08-06 19:37:25 -07:00
third-party xdiff: renamed third-party xdiff functions 2020-07-14 03:46:04 -07:00
thrift-types configs: move dynamicconfig into configparser 2020-08-16 16:55:59 -07:00
tracing-collector
treestate
types edenapi: Split DataEntry into FileEntry and TreeEntry 2020-08-13 10:01:40 -07:00
util bgprogress: Stdio is only used on Unix 2020-08-21 13:00:45 -07:00
version version: a Rust crate providing version information 2020-05-18 09:00:40 -07:00
vfs fsinfo: recognize EdenFS mounts on Windows 2020-08-12 15:47:49 -07:00
vlqencoding
workingcopy
xdiff xdiff: renamed third-party xdiff functions 2020-07-09 01:20:32 -07:00
xdiff-sys Update libra to latest revision 2020-07-16 21:10:44 -07:00
zstdelta
zstore
CMakeLists.txt cmake: do not compile configparser 2020-08-06 09:00:20 -07:00
README.md

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).