Skip to content

A satisfactory compiler #79

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)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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