Ad

Type-safe algebraic data types with compile-time introspection

Datatype99 provides safe, concise algebraic data types with exhaustive pattern matching and compile-time introspection for C99, enabling robust and maintainable code.
Screenshot of hirrolot/datatype99 homepage

Datatype99 is a C99 extension that facilitates the creation of algebraic data types (ADTs) with enhanced safety and expressiveness. It allows developers to define sum types and tagged unions in a more intuitive and type-safe manner compared to traditional methods. Datatype99 leverages macros and a novel syntax to generate efficient and predictable code, primarily relying on compile-time macro expansion.

Datatype99 offers type-safe pattern matching, ensuring compile-time detection of errors like invalid variant access. It's portable, requiring only a standard C99 compiler without external dependencies. The system provides predictable data layout through formal code generation semantics. Datatype99 enhances error resilience and is battle-tested in real-world applications like OpenIPC. It provides flexible design decisions and a comprehensive approach to ADTs.

  • Type-safe: Compile-time checks for invalid variant access and exhaustive matching.
  • Portable: Requires only a standard C99 compiler, no external libraries.
  • Predictable: Ensures consistent data layout through code generation semantics.
  • Extensible: Supports custom data constructors and derived types.
  • Concise syntax: Simplifies the definition and manipulation of ADTs.
  • Compile-time introspection: Enables querying type information at compile time.
  • Performance: Generates efficient code without runtime overhead.

Datatype99 is a mature project with a history of use in production systems, including OpenIPC. The project has a solid release history, active maintenance, and a growing community. Extensive documentation and examples are available, contributing to its reliability. Recent commits indicate ongoing development and support.

Datatype99 benefits developers by providing a safer and more concise way to handle complex data structures in C. It's particularly valuable for projects requiring robust error handling, predictable data layouts, and compile-time type safety. It reduces boilerplate code compared to traditional tagged unions and offers a clear and expressive syntax for defining and manipulating data.

Languages:
Summarize:
Share:
Stars
1,505
Forks
29
Issues
0
Created
5 years ago
Commit
1 year ago
License
MIT
Archived
No
Updated 17 days ago

Similar Repositories