Skip to content

Latest commit

 

History

History
29 lines (24 loc) · 1.9 KB

File metadata and controls

29 lines (24 loc) · 1.9 KB

Supported C++ Features

The Aburiscript compiler is actively developing C++ support. It currently understands a substantial subset of C++ concepts, specifically targeting the Itanium ABI.

Object-Oriented Programming

  • Classes and Structs: class and struct definitions, access control (public, private, protected).
  • Member Functions: Methods (with implicit this pointer), static member functions, and static data members.
  • Lifecycle: Constructors (including initializer lists) and Destructors (~Class()).
  • Dynamic Allocation: Global and class-specific new, new[], delete, and delete[] operators.

Polymorphism and Inheritance

  • Single and Multiple Inheritance: Support for base classes and virtual bases.
  • Virtual Methods: Dynamic dispatch via virtual method tables (V-Tables).
  • RTTI (Run-Time Type Information):
    • typeid for static and dynamic queries.
    • dynamic_cast for safe pointer and reference downcasting/cross-casting.
  • Member Pointers: Pointers to data members and member functions (.*, ->*).

Exceptions

  • Try/Catch Blocks: try { ... } catch (Type obj) { ... } including catch-all catch (...).
  • Throw Expressions: Throwing objects and re-throwing (throw;).
  • Noexcept: noexcept specifiers and predicates (noexcept(expr)).
  • Teardown: Automatic stack unwinding and destructor invocation upon exceptions.

Current Boundaries

  • Templates: The templating engine is present but still expanding in coverage (partial instantiation, SFINAE, etc.).
  • Operator Overloading: Coverage is still limited.
  • RTTI Surface Model: typeid currently exposes a compiler-owned RTTI surface type rather than std::type_info, because standard library headers are not parsed yet.
  • Standard Library: Standard library integration (like <iostream>, <vector>) is non-existent while the language feature set continues to expand.