{"id":49996318,"url":"https://github.com/fimbul-works/godot-yaml","last_synced_at":"2026-05-19T07:43:53.778Z","repository":{"id":318432648,"uuid":"874709296","full_name":"fimbul-works/godot-yaml","owner":"fimbul-works","description":"A high-performance YAML parser and serializer for Godot 4.3+ that speaks fluent Variant.","archived":false,"fork":false,"pushed_at":"2026-05-14T22:00:45.000Z","size":2129,"stargazers_count":71,"open_issues_count":8,"forks_count":4,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-05-14T22:20:48.606Z","etag":null,"topics":["gdextension","godot","godot-addon","yaml"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fimbul-works.png","metadata":{"files":{"readme":"README.md","changelog":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-10-18T10:16:05.000Z","updated_at":"2026-05-14T22:00:49.000Z","dependencies_parsed_at":"2025-10-07T07:21:03.424Z","dependency_job_id":"67997deb-556d-4247-b5a7-135fac93415e","html_url":"https://github.com/fimbul-works/godot-yaml","commit_stats":null,"previous_names":["fimbul-works/godot-yaml"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/fimbul-works/godot-yaml","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fimbul-works%2Fgodot-yaml","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fimbul-works%2Fgodot-yaml/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fimbul-works%2Fgodot-yaml/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fimbul-works%2Fgodot-yaml/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fimbul-works","download_url":"https://codeload.github.com/fimbul-works/godot-yaml/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fimbul-works%2Fgodot-yaml/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33206338,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-19T07:16:55.748Z","status":"ssl_error","status_checked_at":"2026-05-19T07:16:54.366Z","response_time":58,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["gdextension","godot","godot-addon","yaml"],"created_at":"2026-05-19T07:43:50.774Z","updated_at":"2026-05-19T07:43:53.772Z","avatar_url":"https://github.com/fimbul-works.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Godot YAML GDExtension\n\nThis is the **C++ GDExtension implementation** of the Godot YAML plugin. It provides **high-performance YAML parsing and serialization** using [RapidYAML](https://github.com/biojppm/rapidyaml) as the core engine, offering **sub-millisecond processing** for most YAML documents. This extension is built for Godot 4.3 or later.\n\n## Version History\n\n- **2.2.0** (Current) - Upgraded GDSchema to 2.0.0 for JSON validation draft 2020-12 spec, and various bug fixes\n- **2.1.2** - Added support for Android (arm64, x86_64) platforms thanks to @Nemo1166, and fixed some bugs\n- **2.1.1** - Empty strings are stringified with quotes\n- **2.1.0** - When passing custom tag to `YAML.schema_register(class, serialize_method, deserialize_static, custom_tag)` use the custom tag when stringifying\n- **2.0.0** - Major release with schema validation powered by [GDSchema](https://github.com/fimbul-works/gdschema), improved multi-document handling, and bug fixes.\n\nSee [the full changelog](./project/addons/yaml/CHANGELOG.md#version-200) for details of earlier versions.\n\n## Quick Start\n\n```gdscript\n# Parse YAML\nvar result = YAML.parse(\"key: value\\nlist:\\n  - item1\\n  - item2\")\nif result.has_error():\n    push_error(result.get_error())\n    return\n\nvar data = result.get_data()\nprint(data.key)  # Outputs: value\nprint(data.list) # Outputs: [item1, item2]\n\n# Generate YAML\nvar yaml_text = YAML.stringify(data).get_data()\nprint(yaml_text)\n```\n\n📌 **For full usage details and API documentation, see the plugin README:**\n📂 [`project/addons/yaml/README.md`](project/addons/yaml/README.md)\n\n## Key Features\n\n- ⚡ **High Performance**: Built on the lightweight and efficient [RapidYAML](https://github.com/biojppm/rapidyaml) library\n- 🧩 **Comprehensive Variant Support**: Handles all Godot built-in Variant types (except Callable and RID)\n- ✅ **Schema Validation**: Full JSON Schema Draft 2020-12 validation powered by [GDSchema](https://github.com/fimbul-works/gdschema) with YAML-specific extensions\n- 🧪 **Custom Class Serialization**: Register your GDScript classes for seamless serialization and deserialization\n- 📄 **Multi-Document Support**: Parse YAML files with multiple `---` separated documents\n- 🎨 **Style Customization**: Control how YAML is formatted with customizable style options\n- 📝 **Comprehensive Error Handling**: Detailed error reporting with line and column information\n- 🔀 **Thread-Safe**: Fully supports multi-threaded parsing and emission\n- 🗂️ **Resource References**: Use `!Resource` tags to reference and load external resources\n- 🛡️ **Security Controls**: Manage resource loading security during YAML parsing\n\n## Installation \u0026 Setup\n\nGodot YAML is available on the [Godot Asset Library](https://godotengine.org/asset-library/asset/3774). Be sure to enable the plugin in your project settings after installing.\n\n### Building From Source\n\nAlternatively you can build the binaries yourself. For the [latest versions of macOS](#supported-platforms) this may be necessary.\n\n#### Prerequisites\n- **Git** (for cloning and submodules)\n- **Python 3.x** (for SCons build system)\n- **C++ compiler** with C++17 support:\n  - **Windows**: Visual Studio 2022 with C++ workload\n  - **Linux/macOS**: GCC 9+ or Clang 10+\n- **SCons** build system (`pip install scons`)\n- **Android**: JDK version 20, NDK version 23.2.8568313, and Ninja\n\n#### Step 1: Clone the Repository\n```bash\n# Clone with submodules\ngit clone --recursive https://github.com/fimbul-works/godot-yaml\n\n# Or if already cloned, initialize submodules\ngit submodule update --init --recursive\n```\n\n#### Step 2: Build the Extension\n```bash\n# Debug build\nscons target=template_debug\n\n# Release build\nscons target=template_release\n\n# Specify platform (default is platform-dependent)\nscons platform=windows target=template_release\nscons platform=linux target=template_release\n```\n\n#### Build Options\n- `platform`: Target (`windows`, `linux`, `macos`, `android`, etc.)\n- `target`: Build type (`template_debug`, `template_release`)\n- `arch`: CPU architecture (`x86_32`, `x86_64`, `arm64`, etc.)\n- `dev_build`: Enable extra debugging (`yes`/`no`)\n- `use_llvm`: Use Clang/LLVM compiler (`yes`/`no`)\n- `verbose`: Verbose build output (`yes`/`no`)\n\n---\n\n## Supported Platforms\n\n- **Windows**: ✅ Prebuilt binaries available for **x86 64-bit** architecture.\n- **Linux**: ✅ Prebuilt binaries available for **x86 64-bit** architecture.\n- **macOS**: ⚠️ Prebuilt binaries available for **universal** architecture.\n  - **Note**: Some macOS configurations (particularly newer versions with stricter Gatekeeper policies) may prevent loading of GDExtensions generally, not just this plugin. If the extension fails to load, try building from source or test with other GDExtensions to determine if this is a system-wide issue.\n- **Android**: ✅ Prebuilt binaries available for **ARM 64-bit** and **x86 64-bit** architectures.\n\n---\n\n## Contributing\n\n### Development Guidelines\n\n1. **Follow Godot's API design patterns.**\n2. **Minimize allocations** (use `ryml::cstring` instead of `std::string`).\n3. **Error handling**: Use `YAMLResult` and throw `YAMLException` for C++ errors.\n4. **Thread safety**: No global state; ensure **safe multithreading**.\n5. **Write tests**: Every new feature should have **test coverage**.\n6. **Document your changes**: All public APIs **must be documented**.\n\n---\n\n## License\n\nMIT License (see [LICENSE](LICENSE) file for details).\n\n---\n\n**Built with ⚡ by [FimbulWorks](https://github.com/fimbul-works)**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffimbul-works%2Fgodot-yaml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffimbul-works%2Fgodot-yaml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffimbul-works%2Fgodot-yaml/lists"}