{"id":14128442,"url":"https://github.com/yaml/yaml-runtimes","last_synced_at":"2025-10-03T22:46:31.374Z","repository":{"id":39953599,"uuid":"209648920","full_name":"yaml/yaml-runtimes","owner":"yaml","description":"YAML processor runtimes via docker","archived":false,"fork":false,"pushed_at":"2024-06-12T20:03:39.000Z","size":166,"stargazers_count":42,"open_issues_count":13,"forks_count":21,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-09-30T00:40:26.726Z","etag":null,"topics":["docker","testing","yaml"],"latest_commit_sha":null,"homepage":"","language":"Perl","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/yaml.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"Contributing.md","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":"2019-09-19T21:08:47.000Z","updated_at":"2025-08-18T02:34:53.000Z","dependencies_parsed_at":"2024-09-29T23:00:32.553Z","dependency_job_id":"d52f93c7-efde-418d-98bd-9f9df0bc44ce","html_url":"https://github.com/yaml/yaml-runtimes","commit_stats":{"total_commits":108,"total_committers":10,"mean_commits":10.8,"dds":"0.12037037037037035","last_synced_commit":"e21316f008062bb2e591ab77df114ce5a8a3d0f1"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/yaml/yaml-runtimes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yaml%2Fyaml-runtimes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yaml%2Fyaml-runtimes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yaml%2Fyaml-runtimes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yaml%2Fyaml-runtimes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yaml","download_url":"https://codeload.github.com/yaml/yaml-runtimes/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yaml%2Fyaml-runtimes/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278239970,"owners_count":25954096,"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","status":"online","status_checked_at":"2025-10-03T02:00:06.070Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["docker","testing","yaml"],"created_at":"2024-08-15T16:01:43.935Z","updated_at":"2025-10-03T22:46:31.356Z","avatar_url":"https://github.com/yaml.png","language":"Perl","funding_links":[],"categories":["Perl","yaml"],"sub_categories":[],"readme":"# Docker images for YAML Runtimes\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/yaml/yaml-runtimes)\n\n\n* [Quickstart](#Quickstart)\n* [Dependencies](#Dependencies)\n* [Usage](#Usage)\n* [Pull images](#Pull-images)\n* [Play](#Play)\n* [Daemon](#Daemon)\n* [Build](#Build)\n* [Test](#Test)\n* [Example](#Example)\n* [Architecture](#Architecture)\n* [List of Libraries](#List-of-Libraries)\n\nThis project provides several Dockerfiles for runtime environments for a list\nof YAML processors.\n\nThe goal of this project is to be able to play with most available YAML\nlibraries out there and compare them.\n\nLibraries can be tested for bugs, and it makes it easier to try out bugfixes\nfor a language for which you don't have any development libraries installed.\n\nIt was part of the [YAML Editor](https://github.com/yaml/yaml-editor) and then\noutsourced in its own project.\n\nThe YAML editor allows to receive the output of a list of YAML processors in\nvim, with a very helpful automatic tiled layout and nice shortcuts.\n\nIt currently can work with only one docker container at a time, that's one\nreason why we build the `alpine-runtime-all` image.\n\nEach library has one or more programs to process YAML input and output parsing\nevents or JSON. In the docker images they can be found under the `/yaml/bin`\ndirectory.\n\n## Quickstart\n\n    source /path/to/yaml-runtimes/.rc\n\nTo play with PyYAML:\n\n    yamlrun-docker-pull python\n    docker run -i --rm yamlio/alpine-runtime-python py-pyyaml-event \u003ct/data/input.yaml\n    docker run -i --rm yamlio/alpine-runtime-python py-pyyaml-json \u003ct/data/input.yaml\n    docker run -i --rm yamlio/alpine-runtime-python py-pyyaml-yaml \u003ct/data/input.yaml\n    docker run -i --rm yamlio/alpine-runtime-python py-pyyaml-py \u003ct/data/input.yaml\n\nTo play with libyaml:\n\n    yamlrun-docker-pull static\n    docker run -i --rm yamlio/alpine-runtime-static c-libyaml-event \u003ct/data/input.yaml\n    docker run -i --rm yamlio/alpine-runtime-static c-libyaml-yaml \u003ct/data/input.yaml\n\n## Dependencies\n\nFor some operations, you need to install the following dependencies:\n* perl\n* YAML::PP perl module\n* jq\n\nTo install YAML::PP, first install the `cpanm` client (debian example):\n\n    apt-get install cpanminus\n\nThen install the module with `cpanm`:\n\n    # Install YAML::PP into the local/ directory\n    cpanm -l local --notest YAML::PP\n\nThe scripts will automatically use the `local/` directory to search for\nmodules. You could also do this manually by setting `PERL5LIB`:\n\n    export PERL5LIB=$PWD/local/lib/perl5\n\n## Usage\n\nTo list all libraries:\n\n    make list\n\n### Pull images\n\n    # pull alpine-runtime-static\n    make docker-pull-perl\n    # pull alpine-runtime-node\n    make docker-pull-node\n    # pull alpine-runtime-all\n    make docker-pull-all\n\n### Play\n\nTo play around with the several processors, call them like this:\n\n    docker run -i --rm yamlio/alpine-runtime-static c-libfyaml-event \u003ct/data/input.yaml\n\nTo get a list of all available views:\n\n    make list-views-static\n    make list-views-all\n\n### Daemon\n\nBy default, for every test a `docker run` will be executed. To make testing\na bit faster, you can run the containers in background:\n\n    # Start all containers\n    yamlrun-docker-start\n    # Only start alpine-runtime-perl container\n    yamlrun-docker-start perl\n\n    # Test\n    make testv\n\n    # Stop all containers\n    yamlrun-docker-stop\n    # Only stop alpine-runtime-perl container\n    yamlrun-docker-stop perl\n\n    # List containers\n    yamlrun-docker-status\n    # Restart all\n    yamlrun-docker-restart\n\nThen you can run this instead:\n\n    docker exec -i alpine-runtime-static c-libfyaml-event \u003ct/data/input.yaml\n\nAlso the tests (see below) will run `docker exec` instead automatically.\n\n### Build\n\nTo build all images, do\n\n    make build\n\nNote that this can take a while.\n\nYou can also just build a single environment or library:\n\n    # build all javascript libraries\n    make node\n    # build C libyaml\n    make c-libyaml\n    # build perl YAML::PP\n    make perl-pp\n\nTo list all images, do\n\n    make list-images\n\n### Test\n\nTo see if the build was successful and all programs work, run\n\n    make test\n    # or verbose:\n    make testv\n\nThis will test each program with a simple YAML file.\n\nTo test only one runtime or library:\n\n    make test LIBRARY=c-libyaml\n    make testv RUNTIME=perl\n    make testv RUNTIME=all LIBRARY=hs-hsyaml\n    # Test all libraries in alpine-runtime-all image\n    make testv RUNTIME=all\n\n### Example\n\nIf you want to test a certain library, for example `c-libfyaml`, the steps would\nbe:\n\n    make c-libfyaml\n    make list-images\n    make testv LIBRARY=c-libfyaml\n    docker run -i --rm yamlio/alpine-runtime-static c-libfyaml-event \u003ct/data/input.yaml\n    docker run -i --rm yamlio/alpine-runtime-static c-libfyaml-json \u003ct/data/input.yaml\n\n\n## Architecture\n\nSo far all docker images are based on Alpine Linux.\n\nFor each environment there is a builder image and a runtime image.\nThe libraries are built in the builder containers, and all necessary\nfiles are then copied into the runtime images.\n\n## List of Libraries\n\nCurrently only official releases of the libraries are build. Allowing to\nbuild from sources like git might be added at some point.\n\nThe list of libraries and their configuration can be found in\n[list.yaml](list.yaml).\n\nType `make list` to see the following list:\n\n| ID                | Language   | Name               | Version  | Runtime |\n| ----------------- | ---------- | ------------------ | -------- | ------- |\n| c-libfyaml        | C          | [libfyaml](https://github.com/pantoniou/libfyaml) | 0.7.12   | static  |\n| c-libyaml         | C          | [libyaml](https://github.com/yaml/libyaml) | 0.2.5    | static  |\n| cpp-rapidyaml     | C++        | [rapidyaml](https://github.com/biojppm/rapidyaml) | 0.4.0    | static  |\n| cpp-yamlcpp       | C++        | [yaml-cpp](https://github.com/jbeder/yaml-cpp) | 0.8.0    | static  |\n| dotnet-yamldotnet | C#         | [YamlDotNet](https://github.com/aaubry/YamlDotNet) | 11.2.1   | dotnet  |\n| go-yaml           | Go         | [go-yaml](https://github.com/go-yaml/yaml) | v2       | static  |\n| hs-hsyaml         | Haskell    | [HsYAML](https://github.com/haskell-hvr/HsYAML) | 0.2.1.0  | haskell |\n| hs-reference      | Haskell    | [YAMLReference](https://github.com/orenbenkiki/yamlreference) | master   | haskell |\n| js-jsyaml         | Javascript | [js-yaml](https://github.com/nodeca/js-yaml) | 4.1.0    | node    |\n| js-yaml           | Javascript | [yaml](https://github.com/eemeli/yaml) | 2.4.5    | node    |\n| lua-lyaml         | Lua        | [lyaml](https://github.com/gvvaughan/lyaml) | 6.2.8    | lua     |\n| nim-nimyaml       | Nim        | [NimYAML](https://github.com/flyx/NimYAML) | 0.16.0   | static  |\n| perl-pp           | Perl       | [YAML::PP](https://metacpan.org/release/YAML-PP) | 0.38.0   | perl    |\n| perl-pplibyaml    | Perl       | [YAML::PP::LibYAML](https://metacpan.org/release/YAML-PP-LibYAML) | 0.005    | perl    |\n| perl-refparser    | Perl       | [Generated RefParser](https://metacpan.org/release/YAML-Parser) | 0.0.5    | perl    |\n| perl-syck         | Perl       | [YAML::Syck](https://metacpan.org/release/YAML-Syck) | 1.34     | perl    |\n| perl-tiny         | Perl       | [YAML::Tiny](https://metacpan.org/release/YAML-Tiny) | 1.74     | perl    |\n| perl-xs           | Perl       | [YAML::XS (libyaml)](https://metacpan.org/release/YAML-LibYAML) | 0.89     | perl    |\n| perl-yaml         | Perl       | [YAML.pm](https://metacpan.org/release/YAML) | 1.31     | perl    |\n| py-pyyaml         | Python     | [PyYAML](https://github.com/yaml/pyyaml) | 5.3.1    | python  |\n| py-ruamel         | Python     | [ruamel.yaml](https://bitbucket.org/ruamel/yaml) | 0.18.6   | python  |\n| ruby-psych        | Ruby       | [psych](https://github.com/ruby/psych) | 4.0.3    | ruby    |\n| rust-yamlrust     | Rust       | [yaml](https://github.com/chyh1990/yaml-rust) | 0.4.4    | static  |\n\n## Contributing\n\nSee the [Contributing](Contributing.md) Guidelines\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyaml%2Fyaml-runtimes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyaml%2Fyaml-runtimes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyaml%2Fyaml-runtimes/lists"}