{"id":15578309,"url":"https://github.com/tlsa/libcyaml","last_synced_at":"2025-10-24T20:47:22.032Z","repository":{"id":30053543,"uuid":"123784137","full_name":"tlsa/libcyaml","owner":"tlsa","description":"C library for reading and writing YAML.","archived":false,"fork":false,"pushed_at":"2024-10-02T16:35:12.000Z","size":860,"stargazers_count":279,"open_issues_count":14,"forks_count":58,"subscribers_count":12,"default_branch":"main","last_synced_at":"2025-04-01T10:09:18.752Z","etag":null,"topics":["c","library","yaml"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tlsa.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-03-04T11:58:09.000Z","updated_at":"2025-03-12T09:28:46.000Z","dependencies_parsed_at":"2024-03-21T13:45:30.367Z","dependency_job_id":"2baa6252-2339-43c3-940d-4421d7d3d4e0","html_url":"https://github.com/tlsa/libcyaml","commit_stats":{"total_commits":595,"total_committers":11,"mean_commits":54.09090909090909,"dds":"0.025210084033613467","last_synced_commit":"c9956cbb50772ecc10fcf6a8ab210cce60e17567"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tlsa%2Flibcyaml","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tlsa%2Flibcyaml/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tlsa%2Flibcyaml/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tlsa%2Flibcyaml/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tlsa","download_url":"https://codeload.github.com/tlsa/libcyaml/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247980844,"owners_count":21027808,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","library","yaml"],"created_at":"2024-10-02T19:08:11.476Z","updated_at":"2025-10-24T20:47:16.990Z","avatar_url":"https://github.com/tlsa.png","language":"C","readme":"LibCYAML: Schema-based YAML parsing and serialisation\n=====================================================\n\n[![Build Status](https://github.com/tlsa/libcyaml/workflows/CI/badge.svg)](https://github.com/tlsa/libcyaml/actions) [![Static Analysis](https://github.com/tlsa/libcyaml/actions/workflows/static-analysis.yaml/badge.svg)](https://github.com/tlsa/libcyaml/actions/workflows/static-analysis.yaml) [![Code Coverage](https://codecov.io/gh/tlsa/libcyaml/branch/main/graph/badge.svg)](https://codecov.io/gh/tlsa/libcyaml)\n\nLibCYAML is a C library for reading and writing structured YAML documents.\nIt is written in ISO C11 and licensed under the ISC licence.\n\n\u003e **Warning**\n\u003e\n\u003e The `main` branch is currently undergoing changes for version 2.\n\u003e You probably want to be using a\n\u003e [tagged release](https://github.com/tlsa/libcyaml/tags) instead.\n\nOverview\n--------\n\nThe fundamental idea behind CYAML is to allow applications to construct\nschemas which describe both the permissible structure of the YAML documents\nto read/write, and the C data structure(s) in which the loaded data is\narranged in memory.\n\n### Goals\n\n* Make it easy to load YAML into client's custom C data structures.\n* Good compromise between flexibility and simplicity.\n\n### Features\n\n* Load, Save and Free functions.\n* Reads and writes arbitrary client data structures.\n* Schema-driven, allowing control over permitted YAML, for example:\n    - Required / optional mapping fields.\n    - Allowed / disallowed values.\n    - Minimum / maximum sequence entry count.\n    - etc...\n* Enumerations and flag words.\n* YAML backtraces make it simple for users to fix their YAML to\n  conform to your schema.\n* Uses standard [`libyaml`](https://github.com/yaml/libyaml) library for\n  low-level YAML read / write.\n* Support for YAML aliases and anchors.\n\nBuilding\n--------\n\nTo build the library, run:\n\n    make\n\nYou can control the optimisation and building of asserts by setting\nthe build variant:\n\n    make VARIANT=debug\n    make VARIANT=release\n\nAnother debug build variant which is built with address sanitiser (incompatible\nwith valgrind) can be built with:\n\n    make VARIANT=san\n\nInstallation\n------------\n\nTo install a release version of the library, run:\n\n    make install VARIANT=release\n\nIt will install to the PREFIX `/usr/local` by default, and it will use\nDESTDIR and PREFIX from the environment if set.\n\nTesting\n-------\n\nTo run the tests, run any of the following, which generate various\nlevels of output verbosity (optionally setting `VARIANT=release`, or\n`VARIANT=san`):\n\n    make test\n    make test-quiet\n    make test-verbose\n    make test-debug\n\nTo run the tests under `valgrind`, a similar set of targets is available:\n\n    make valgrind\n    make valgrind-quiet\n    make valgrind-verbose\n    make valgrind-debug\n\nTo run a single test or a subset of tests, use the `TESTLIST` variable, which\nexpects a space and/or comma separated list of test names:\n\n    make test-debug TESTLIST=test_load_mapping_without_any_fields\n    make valgrind-debug TESTLIST=\"test_load_no_log test_util_state_invalid\"\n\nTo generate a test coverage report, `gcovr` is required:\n\n    make coverage\n\nDocumentation\n-------------\n\nTo generate both public API documentation, and documentation of CYAML's\ninternals, `doxygen` is required:\n\n    make docs\n\nAlternatively, the read the API documentation directly from the\n[cyaml.h](https://github.com/tlsa/libcyaml/blob/main/include/cyaml/cyaml.h)\nheader file.\n\nThere is also a [tutorial](docs/guide.md).\n\nExamples\n--------\n\nIn addition to the documentation, you can study the [examples](examples/).\n","funding_links":[],"categories":["Yaml","Recently Updated"],"sub_categories":["[Who Wants to Be a Millionare](https://www.boardgamecapital.com/who-wants-to-be-a-millionaire-rules.htm)"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftlsa%2Flibcyaml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftlsa%2Flibcyaml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftlsa%2Flibcyaml/lists"}