The goals of this compiler are:
- Provide better error messages for new programmers
- Make debugging C programs easier
Learning C is hard. Students have to navigate pointers, segmentation faults, and bit manipulation, all while working without garbage collection, usually for the first time. This interpreter aims to address this problem by giving better error messages and more runtime diagnostic tools.
- Better debug information
- Stack traces on segmentation fault
- Harder errors: the following all cause a segmentation fault
- use-after-free
- buffer overflow
- double free
- out of memory
- stack overflow
- calling string functions with a string that isn't null-terminated
Lots of stuff left to do still.
- Const
- Enums
- Designated initializers
- full support for
#if
- Better macro debug messages
- Better parsing error messages
- Hardening against invalid input
- Unified error system
- Leak detection: manual memory management is hard sometimes
- Processes and threads: students often learn multithreading paradigms in C
- Program arguments && Standard input - good functionality to have
unistd.h
: because sometimes professors be like thattime.h
: because sometimes you gotta do that- Variable/type information at runtime: allows student to use TCI as a debugger
- Full kernel replayability: go backwards in time when using TCI as debugger
- Working file system explorer
- Runtime file explorer
- Terminal emulator (without shell)
- Service worker for caching stuff locally
- Github Issue/Bug-fix-request button
- User interface for runtime/compiler options
- Implicit types on functions will never be supported
- Implicit function declarations will never be supported
- TCI uses an error renderer plagiarised from
codespan-reporting
to make error messages. - TCI uses a parser plagiarized from
lang-c
to handle parsing the C language