A C library for schema-based YAML parsing and serialization into custom C data structures.
LibCYAML is a C library for reading and writing YAML documents with schema-based validation. It allows developers to define schemas that describe both the allowed YAML structure and the corresponding C data structures, enabling type-safe loading and saving of YAML into custom memory layouts. It solves the problem of safely parsing configuration or data files in C applications without manual YAML traversal.
C developers who need to read or write YAML configuration files, data serialization, or structured documents in their applications, particularly those in embedded systems or performance-sensitive environments.
Developers choose LibCYAML because it provides a schema-driven, type-safe approach to YAML handling in C, reducing boilerplate code and error-prone manual parsing while offering fine-grained control over data structure mapping and validation.
C library for reading and writing YAML.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Enforces strict YAML structure with schemas, ensuring data integrity and reducing parsing errors, as highlighted in the schema-driven parsing feature.
Maps YAML directly to user-defined C structs, eliminating manual parsing boilerplate, mentioned in the arbitrary data structures support.
Provides YAML backtraces to pinpoint schema violations, making debugging easier, as noted in the detailed error reporting.
Leverages the widely-used libyaml library for reliable low-level YAML operations, ensuring compatibility and stability, as stated in the integration feature.
Defining schemas involves manual C code for each data structure, which can be cumbersome and error-prone for complex configurations, adding development overhead.
Requires proficiency in C, including manual memory management, making it inaccessible for developers used to higher-level languages with garbage collection.
The README warns that the main branch is undergoing version 2 changes, indicating instability and possible incompatibilities for users on the latest code.