Document the de facto conventions for library dependencies in explorer (#3092)

Unlike in the toolchain, we have not been preferring LLVM facilities
over standard ones. Update the documentation to describe this and
provide some rationale.
This commit is contained in:
Richard Smith
2023-08-11 19:22:58 +00:00
committed by GitHub
parent c5667c0e10
commit 90cca11ea3
+9 -2
View File
@@ -165,13 +165,20 @@ these.
### Foundational libraries and data types
- Generally prefer LLVM libraries and data structures to standard C++ ones.
- In the toolchain, prefer LLVM libraries and data structures to standard C++
ones.
- These are optimized significantly for performance, especially when used
without exception handling or safety requirements, and when used in
patterns that tend to occur while building compilers.
- They also minimize the vocabulary type friction when using actual LLVM
and Clang APIs.
- Do not add third-party library dependencies to any code that might
- In explorer, prefer standard C++ facilities, but use LLVM facilities when
there is no standard equivalent.
- This approach is aimed to make the explorer codebase more approachable
to new contributors.
- In explorer, performance is not a high priority, and friction with LLVM
and Clang APIs is much less of a concern.
- Do not add other third-party library dependencies to any code that might
conceivably be used as part of the compiler or runtime.
- Compilers and runtime libraries have unique constraints on their
licensing. For simplicity, we want all transitive dependencies of these