Skip to content

serjective/aburiscript

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

131 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Aburiscript Logo

Aburiscript (pronounced Eh-bree-script) is a C and C++ frontend that currently outputs LLVM IR and is designed to support standard C features, various extensions (like blocks and attributes), and a growing subset of C++ features including classes, polymorphism, templates, and exceptions. The compiler is still in the early stages of development, with much more to come.

Aburiscript can currently compile many of the world’s top C projects, including chibcc, OpenSSL, Git, SQLite, PostgreSQL, FFmpeg/librempeg, gstreamer, libplacebo, mpv, QEMU, Ghostscript, zlib, and zstd. It can also compile and run many compiler test suites such as the GCC torture suite.

The project is still very much in development, and a compiler backend implementation is planned soon (which would remove LLVM as a hard dependency) along with many other features (more info in Future plans).

The name of the project comes from the town of Aburi, Ghana and its botanical garden.

Disclaimer: While this project started off 100% handwritten, it now contains AI-generated code (with human review, oversight, and direction). For more information see Note about AI in the documentation.

Screenshot

Aburiscript in action

Quick Start

For a short path from build to first executable, including runnable example programs under sample_c/ and sample_cpp/, see the Quick Start Guide.

Features Overview

C Support

  • Standard control flow and operators.
  • Pointers, arrays, and Variable Length Arrays (VLAs).
  • Structs, unions, and bitfields.
  • Enums.
  • Variadic functions.
  • GCC/Clang extensions like __attribute__((packed)), __builtin_offsetof, etc.
  • Apple Blocks (^).
  • C11 features like _Static_assert, _Alignas, and _Thread_local.
  • C99 _Complex and compound literals.

C++ Support (In Progress)

  • Classes and structs with access control.
  • Member functions (methods), constructors, and destructors.
  • Single and multiple inheritance with virtual methods (polymorphism).
  • Pointers to members.
  • Exceptions (try, catch, throw).
  • Dynamic allocation (new, delete).
  • Templates (partial support).

Documentation

License

Aburiscript is dual-licensed under either the Apache License, Version 2.0 or the MIT License, at your option. See LICENSE, LICENSE-APACHE, and LICENSE-MIT.

Packages

 
 
 

Contributors

Languages