Skip to content

Commit 831b3ff

Browse files
authored
Merge pull request #4 from mark-i-m/glossary
Add glossary
2 parents 064d22d + 4e03569 commit 831b3ff

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

src/src/SUMMARY.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,4 @@
1616
- [MIR borrowck](./chap-140-mir-borrowck.md)
1717
- [MIR optimizations](./chap-150-mir-optimizations.md)
1818
- [trans: generating LLVM IR](./chap-160-trans.md)
19-
19+
- [Glossary](./glossary.md)

src/src/glossary.md

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
Glossary
2+
--------
3+
4+
The compiler uses a number of...idiosyncratic abbreviations and things. This glossary attempts to list them and give you a few pointers for understanding them better.
5+
6+
Term | Meaning
7+
------------------------|--------
8+
AST | the abstract syntax tree produced by the syntax crate; reflects user syntax very closely.
9+
codegen unit | when we produce LLVM IR, we group the Rust code into a number of codegen units. Each of these units is processed by LLVM independently from one another, enabling parallelism. They are also the unit of incremental re-use.
10+
cx | we tend to use "cx" as an abbrevation for context. See also `tcx`, `infcx`, etc.
11+
DefId | an index identifying a definition (see `librustc/hir/def_id.rs`). Uniquely identifies a `DefPath`.
12+
HIR | the High-level IR, created by lowering and desugaring the AST. See `librustc/hir`.
13+
HirId | identifies a particular node in the HIR by combining a def-id with an "intra-definition offset".
14+
'gcx | the lifetime of the global arena (see `librustc/ty`).
15+
generics | the set of generic type parameters defined on a type or item
16+
ICE | internal compiler error. When the compiler crashes.
17+
infcx | the inference context (see `librustc/infer`)
18+
MIR | the Mid-level IR that is created after type-checking for use by borrowck and trans. Defined in the `src/librustc/mir/` module, but much of the code that manipulates it is found in `src/librustc_mir`.
19+
obligation | something that must be proven by the trait system; see `librustc/traits`.
20+
local crate | the crate currently being compiled.
21+
node-id or NodeId | an index identifying a particular node in the AST or HIR; gradually being phased out and replaced with `HirId`.
22+
query | perhaps some sub-computation during compilation; see `librustc/maps`.
23+
provider | the function that executes a query; see `librustc/maps`.
24+
sess | the compiler session, which stores global data used throughout compilation
25+
side tables | because the AST and HIR are immutable once created, we often carry extra information about them in the form of hashtables, indexed by the id of a particular node.
26+
span | a location in the user's source code, used for error reporting primarily. These are like a file-name/line-number/column tuple on steroids: they carry a start/end point, and also track macro expansions and compiler desugaring. All while being packed into a few bytes (really, it's an index into a table). See the Span datatype for more.
27+
substs | the substitutions for a given generic type or item (e.g., the `i32`, `u32` in `HashMap<i32, u32>`)
28+
tcx | the "typing context", main data structure of the compiler (see `librustc/ty`).
29+
trans | the code to translate MIR into LLVM IR.
30+
trait reference | a trait and values for its type parameters (see `librustc/ty`).
31+
ty | the internal representation of a type (see `librustc/ty`).

0 commit comments

Comments
 (0)