The current goal of this project is to implement (most of) C, with some deviations which can be opted-out of, plus some new features.
- Atomics
- Complex numbers
- The standard library
- Nn
->
operator. Pointers to structs can be accessed with.
. struct
has an implicit typedef- Zero initialization by default
- Wide types and SIMD operators
- Reflection strings for
enum
decltype
- C++ style auto
- File-system based module/build system
- Namespaces
- Function overloading
- Memory checking a-la address sanitizer
else
afterwhile
- x64 on Windows and macOS
- ARM on macOS
- LLVM IR
- SPIR-V
- On Windows: MSVC (tested with Visual Studio 2017)
- On Mac/Linux: Clang
scc is a C compiler that plays it loose with the spec.
I don't know. As long as I keep a non-zero pace and manage not to die before it's done then time is on my side.
My main sources of documentation have been
- The C11 spec .
- The [Intel Software Development Manual] (https://software.intel.com/en-us/articles/intel-sdm)
- Retargetable C Compiler, mostly for implementing the front end. For code generation I have used the following:
- Code generation is 100% based on DCCG, which I found out thank's to Fabian Giesen's papers I like
- On extreme circumstances I might peek at Fabian Bellard's tcc implementation. However, this is considered cheating and is left as an absolute last measure.
- On a couple of occasions I have turned to Agner Fog, but the code generator is still very simple and almost no effort has been spent on actually outputting decent code.