sapling/eden/scm/lib
David Tolnay d1d8fb939a Switch from failure::Fail trait to std::error::Error for errors
Summary:
This diff replaces eden's dependencies on failure::Error with anyhow::Error.

Failure's error type requires all errors to have an implementation of failure's own failure::Fail trait in order for cause chains and backtraces to work. The necessary methods for this functionality have made their way into the standard library error trait, so modern error libraries build directly on std::error::Error rather than something like failure::Fail. Once we are no longer tied to failure 0.1's Fail trait, different parts of the codebase will be free to use any std::error::Error-based libraries they like while still working nicely together.

Reviewed By: xavierd

Differential Revision: D18576093

fbshipit-source-id: e2d862b659450f2969520d9b74877913fabb2e5d
2019-11-22 08:53:31 -08:00
..
asyncrevisionstore/src Switch from failure::Fail trait to std::error::Error for errors 2019-11-22 08:53:31 -08:00
auth Switch from failure::Fail trait to std::error::Error for errors 2019-11-22 08:53:31 -08:00
backingstore Switch from failure::Fail trait to std::error::Error for errors 2019-11-22 08:53:31 -08:00
blackbox Switch from failure::Fail trait to std::error::Error for errors 2019-11-22 08:53:31 -08:00
bookmarkstore Switch from failure::Fail trait to std::error::Error for errors 2019-11-22 08:53:31 -08:00
cdatapack Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
clib Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
clidispatch Switch from failure::Fail trait to std::error::Error for errors 2019-11-22 08:53:31 -08:00
cliparser Switch from failure::Fail trait to std::error::Error for errors 2019-11-22 08:53:31 -08:00
commitcloudsubscriber Switch from failure::Fail trait to std::error::Error for errors 2019-11-22 08:53:31 -08:00
commitstore/bench-serialize Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
configparser Switch from failure::Fail trait to std::error::Error for errors 2019-11-22 08:53:31 -08:00
cpython-ext Switch from failure::Fail trait to std::error::Error for errors 2019-11-22 08:53:31 -08:00
cpython-failure Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
dag Switch from failure::Fail trait to std::error::Error for errors 2019-11-22 08:53:31 -08:00
drawdag Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
edenapi Switch from failure::Fail trait to std::error::Error for errors 2019-11-22 08:53:31 -08:00
encoding Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
hg_watchman_client Switch from failure::Fail trait to std::error::Error for errors 2019-11-22 08:53:31 -08:00
hgcommands Switch from failure::Fail trait to std::error::Error for errors 2019-11-22 08:53:31 -08:00
hgtime Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
indexedlog Switch from failure::Fail trait to std::error::Error for errors 2019-11-22 08:53:31 -08:00
linelog Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
lz4-pyframe Switch from failure::Fail trait to std::error::Error for errors 2019-11-22 08:53:31 -08:00
manifest Switch from failure::Fail trait to std::error::Error for errors 2019-11-22 08:53:31 -08:00
metalog Switch from failure::Fail trait to std::error::Error for errors 2019-11-22 08:53:31 -08:00
mincode Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
minibench Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
mpatch Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
mpatch-sys Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
mutationstore Switch from failure::Fail trait to std::error::Error for errors 2019-11-22 08:53:31 -08:00
nodemap Switch from failure::Fail trait to std::error::Error for errors 2019-11-22 08:53:31 -08:00
pathmatcher pathmatcher: hint globset to use prefix strategy instead of regexp strategy 2019-11-14 14:27:39 -08:00
procinfo Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
radixbuf Switch from failure::Fail trait to std::error::Error for errors 2019-11-22 08:53:31 -08:00
revisionstore Switch from failure::Fail trait to std::error::Error for errors 2019-11-22 08:53:31 -08:00
stackdesc Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
third-party Merge fb-mercurial sources into the eden repository 2019-11-13 20:20:32 -08:00
tracing-collector Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
treestate Switch from failure::Fail trait to std::error::Error for errors 2019-11-22 08:53:31 -08:00
types Switch from failure::Fail trait to std::error::Error for errors 2019-11-22 08:53:31 -08:00
util Switch from failure::Fail trait to std::error::Error for errors 2019-11-22 08:53:31 -08:00
vlqencoding Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
watchman_client Switch from failure::Fail trait to std::error::Error for errors 2019-11-22 08:53:31 -08:00
workingcopy Switch from failure::Fail trait to std::error::Error for errors 2019-11-22 08:53:31 -08:00
xdiff Merge fb-mercurial sources into the eden repository 2019-11-13 20:20:32 -08:00
xdiff-sys Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
zstdelta Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
zstore Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
CMakeLists.txt Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
README.md Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -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).