[tor-commits] [tor/master] Describe "check-includes" in the CodingStandards.md file

nickm at torproject.org nickm at torproject.org
Tue Jul 10 15:09:32 UTC 2018


commit 4793d913503f9349ca4b57d77a47bd1bbceecfe5
Author: Nick Mathewson <nickm at torproject.org>
Date:   Tue Jul 10 11:09:25 2018 -0400

    Describe "check-includes" in the CodingStandards.md file
---
 doc/HACKING/CodingStandards.md | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/doc/HACKING/CodingStandards.md b/doc/HACKING/CodingStandards.md
index 6e6ef044d..4f229348e 100644
--- a/doc/HACKING/CodingStandards.md
+++ b/doc/HACKING/CodingStandards.md
@@ -214,6 +214,24 @@ We don't call `memcmp()` directly.  Use `fast_memeq()`, `fast_memneq()`,
 Also see a longer list of functions to avoid in:
 https://people.torproject.org/~nickm/tor-auto/internal/this-not-that.html
 
+What code can use what other code?
+----------------------------------
+
+We're trying to simplify Tor's structure over time.  In the long run, we want
+Tor to be structured as a set of modules with *no circular dependencies*.
+
+This property is currently provided by the modules in src/lib, but not
+throughout the rest of Tor.  In general, higher-level libraries may use
+lower-level libraries, but never the reverse.
+
+To prevent new circular dependencies from landing, we have a tool that
+you can invoke with `make check-includes`, and which is run
+automatically as part of `make check`.  This tool will verify that, for
+every source directory with a `.may_include` file, no local headers are
+included except those specifically permitted by the `.may_include` file.
+When editing one of these files, please make sure that you are not
+introducing any cycles into Tor's dependency graph.
+
 Floating point math is hard
 ---------------------------
 



More information about the tor-commits mailing list