Milestones
List view
The Clang adapter, which is the permanent answer for C++ rather than a step toward a frontend of this project's own. Done when: an analysis written for C reports a real defect in a C++ project nobody wrote for this compiler, through IR the C frontend never touched.
No due dateThe rest of the preprocessor, and the C that the subset left out. Done when: a real single-file C program from outside this repository compiles and runs.
No due date•2/2 issues closedSafety levels 4 and 5. Done when: a value shared between threads without synchronization is reported, and --safety strict fails on a program the analysis cannot fully prove rather than passing quietly.
No due date•1/1 issues closedSafety level 3: owned and borrowed values, moves, transfer, and the owner and borrow annotations. Done when: a value used after being moved is an error, and the same analysis is what reports a double free.
No due date•0/1 issues closedSafety level 2: regions, parameter and return lifetimes, escape analysis. Done when: returning the address of a local is an error, and a pointer that escapes through a parameter is one too.
No due date•1/2 issues closedSafety level 1, and the first thing this compiler says about a C program. Done when: the use-after-free example is an error, level 0 reports nothing, and a case the analysis cannot prove is a warning that --deny-unknown turns into an error.
No due date•141/144 issues closedThe framework that walks the Safety IR's graph: lattices, transfer functions, fixpoint. Done when: a trivial analysis reaches a fixpoint over a program with a loop, and its result is testable against IR built by hand.
No due date•8/8 issues closedThe LLVM backend, reading the Safety IR and nothing above it. Done when: the MVP program compiles to a native executable that exits with 3, and -o puts it where it was asked to.
No due date•10/10 issues closedThe central architectural boundary: values, places, operations, and a control-flow graph that is block-structured from the start. Done when: the MVP program lowers to Safety IR, the interpreter runs it and produces 3, and a test can build IR by hand and run something over it with no frontend present.
No due date•14/15 issues closedThe hand-written frontend, from source text to a typed AST. Done when: the MVP program parses and type-checks, --emit ast prints it, and a file that fails to parse does not stop the next file from being read.
No due date•108/109 issues closed