Welcome to Tor codebase’s documentation!¶
- In this directory
- Getting started in Tor development
- Coding conventions for Tor
- License issues
- How we use Git branches
- How we log changes
- Whitespace and C conformance
- Functions to use; functions not to use
- What code can use what other code?
- Floating point math is hard
- Other C conventions
- Functions not to write
- Calling and naming conventions
- What To Optimize
- Log conventions
- Assertions In Tor
- Allocator conventions
- Doxygen comment conventions
- Writing tests for Tor: an incomplete guide
- Useful tools
- Travis/Appveyor CI
- Jenkins
- Valgrind
- Coverity
- clang Static Analyzer
- clang Runtime Sanitizers
- Running lcov for unit test coverage
- Running the unit tests
- Running gcov for unit test coverage
- Running integration tests
- Profiling Tor
- Profiling Tor with oprofile
- Profiling Tor with perf
- Profiling Tor with gperftools aka Google-performance-tools
- Generating and analyzing a callgraph
- Getting emacs to edit Tor source properly
- Doxygen
- Style and best-pratices checking
- Maintaining Tor
- How to review a patch
- Putting out a new release
- Modules in Tor
- Tracing
- Hacking on Rust in Tor
- Identifying which modules to rewrite
- Writing your Rust module
- Submitting a patch
- Rust Coding Standards
- Using
simpleperf
to collect CPU profiling on Android