Skip to content

A satisfactory compiler #79

@ajaxvp

Description

@ajaxvp

My main goal before building this project out to ISO standardization is to develop something satisfactory for the everyday C programmer to use. Based off of the progress I have made so far (as of July 15th, 2025), here is the list for what "satisfactory" looks like:

  • Support for all forms of ternary expressions
  • Support for float and double types (in expressions, statements, declarations, and all other locations)
  • Support for the long double type (in expressions, statements, declarations, and all other locations)
  • Support for all standard constant expressions
  • Support for initializers on objects with static storage duration
  • Support for the const and volatile type qualifiers
  • Implicit zero initialization for bytes in objects initialized with an initializer list
  • All constraints on expressions (excluding those about variable-length arrays or variably-modified types)
  • All constraints on statements (excluding those about variable-length arrays or variably-modified types)
  • All constraints on declarations (excluding those about variable-length arrays or variably-modified types)
  • Complete System V ABI support for function calls (excluding any support for _Complex or _Imaginary types)
  • Support for bitfields in structs and unions
  • Support for unsigned integer types (where not already present)
  • Support for basic C standard I/O functions (fopen, fclose, fputc, fgetc)
  • Support for heap allocation (malloc, calloc, free)
  • Analysis diagnostics for all unsupported ISO C features

Notably, this list does not include the following:

  • Support for _Complex types
  • Support for _Imaginary types
  • Support for variable-length arrays
  • Support for variably-modified types
  • Support for the restrict type qualifier
  • Support for the inline function specifier
  • Support for the implicit __func__ declaration
  • Support for functions without prototypes (K&R-declared functions)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions