Cthulhu
0.2.10
Cthulhu compiler collection
|
▼Common library | Collection of common types and functions shared by all other components |
▼Arena memory allocation | Global and arena memory management the arena_* functions provide strong garuntees for memory allocation and deallocation with pre and post checks to catch possible incorrect usage. for weaker garuntees, the Failable arena allocation functions can be used |
Failable arena allocation | Failable arena allocation these allocation functions are used when the allocation is not critical and can fail. they also perform less validation on the input parameters than the Arena memory allocation functions |
Stacktrace library | Backtrace library |
▼Base library | Basic features required by all other modules |
Simple bitset | Simple bitset |
Verbose logging | Verbose logging |
Assertions and panic handling | |
▼Configuration | Configuration system |
Construction | Configuration construction API |
Reflection | Reflection API for configuration |
Reading | Reading API for configuration |
Writing | Writing API for configuration |
▼Header only core | Abstractions over compiler specific features and build configuration |
Static analysis decorators | Decorators for static analysis tools |
Compiler specific macros | Compiler detection macros and compiler specific functionality |
▼Common macros | Common macros used throughout the project |
ANSI Colour macros | ANSI escape string colour macros |
Exit codes | Exit codes that match with GNU standard codes |
Source location information | Source location information for panics and other debugging information |
Version macros | Version macros and types |
Windows wrapper | Windows wrapper header, use this instead of including windows directly |
Endianess and byte swapping | |
Filesystem abstraction | Virtual and physical filesystem interface |
▼Flex/Bison interop utils | Flex/Bison interop utils for easier integration |
Helpers for flex and bison driver frontends | |
▼IO stream interface | Unified interface over streaming io |
io implementation details | Internal io implementation details |
Compiler message notification | Compiler message logging and error registration |
▼Platform abstraction layer | Intermediary layer for OS specific calls |
Dynamic Loading | |
Filesystem handling | |
Threading | |
Source location tracking | AST source position tracking |
▼Standard library | Commonly used collections and functions |
Unordered map | Hash map |
Unordered set | Hash set |
String manipulation and processing | String manipulation and processing |
Typed vector | Generic vector of typed values |
Type information | Type information |
Generic vector | Generic vector |
▼Compiler runtime | Runtime functions for drivers, interfaces, and plugins |
Compiler runtime mediator | Core of the compiler, manages languages, plugins, and targets |
Tree form validation | Validation for tree form IR |
Compiler events | Generic errors shared between frontends |
Global memory allocation | Default global memory allocator this is an intermediate layer to help with transitioning to pure arena allocation its recommended to avoid this for new code and to remove it from existing code |
SSA form IR | SSA form IR |
Tree intermediate form | Tree intermediate form generated by language drivers |
Driver utility functions | Utility functions for the runtime |
Target output helper library | Target output helper library |
Module loader | Module enumeration and shared library loading |
▼Support libraries for languages, plugins, and frontends | Support libraries |
Command line argument parsing | Command line argument parsing TODO: reduce the amount of allocations by allowing config to accept string views TODO: nicely support error propagation out of the parser |
Driver helper | Driver helper |
▼User facing text formatting library | Format common types into a human readable text format |
Backtrace pretty printing | Pretty printing of backtraces |
Terminal colours | Terminal colours for formatting |
Format compiler messages for printing | Format compiler messages for printing |
Format version information | Format version information |
JSON parsing | Simple JSON parsing |
setup | Command line parsing and setup |