diff --git a/ReactCommon/butter/butter.h b/ReactCommon/butter/butter.h index 5f3d71454a38ba..d3051b53ff310e 100644 --- a/ReactCommon/butter/butter.h +++ b/ReactCommon/butter/butter.h @@ -11,7 +11,7 @@ namespace facebook { namespace butter { /* - * `Butter` is a trivial collection of basic tools borrowed from other low-level + * `Butter` is a minimal collection of basic tools borrowed from other low-level * general purpose libraries (like Folly, Abseil or Boost). The main goals of * Butter: * - Make the codebase more portable; @@ -19,17 +19,26 @@ namespace butter { * Butter); * - Make relying on modern C++ patterns and tools in code simple and easy. * - Make executing experiments with different dependencies easier. + * - Limit reliance on third-party libraries eventually. * + * Target C++ Version + * ------------------ + * Currently, Butter targets C++17. + * + * The Scope + * --------- * What should be part of Butter and what should not? Should I add some piece of * functionality in the Butter? Here is a quick checklist. * + * As of now, Butter is relatively permissive per the guidance below: + * * If one of the following is true, yes, go for it: * - If some feature is already in some future C++ standard (possibly in draft * stage) and it's already implemented in some 3rd party library. * - If some standardized feature of C++ is implemented in the standard not in - * the most efficient way (because the standard enforces some tricky constraints - * (like always-valid iterators) which nobody uses and should use), but you have - * a library that does it right providing exact same interface. + * the most efficient way (because the standard enforces some tricky + * constraints, like always-valid iterators, which nobody uses and should use), + * but you have a library that does it right providing exact same interface. * * If one of the following is true, please do *NOT* do it (at least as part of * the library): @@ -41,6 +50,11 @@ namespace butter { * faster than the standard one, so You want to use that in the code base. That * container does not have compatible API though (because it's a clear trade-off * with efficiency, of course). + * + * Note that eventually Butter will restrict the API collection to reduce + * reliance on non-standard C++ builtin libraries. That way, the API footprint + * stays small and is limited to just the essential APIs. This restriction is + * currently a work in progress. */ /*