This Matrix combines all tests from yaml-test-suite and all processors from yaml-runtimes.
The YAML Test Suite currently targets YAML Version 1.2. Note that this list is not meant as a "Best Of" list, as some processors implement 1.1 or 1.0 only, and the test suite contains a lot of edge cases that don't play such an important role in real world examples. It is suited to identify which problems each processors has and what to avoid.
| Test case sheet | Valid | Invalid |
|---|---|---|
| Test results per processor | Valid | Invalid |
| Valid (308) | Invalid (94) | Total (402) | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Processors | ok | n/i | diff | error | n/a | pass | fail | pass | fail | |||
| event - Compare parsing events | ||||||||||||
| c-libfyaml-event | C libfyaml | 308 | 94 | 402 | ||||||||
| c-libyaml-event | C libyaml | 252 | 9 | 5 | 42 | 78 | 16 | 330 | 72 | |||
| cpp-rapidyaml-event | C++ rapidyaml | 274 | 26 | 8 | 32 | 62 | 306 | 96 | ||||
| cpp-yamlcpp-event | C++ yaml-cpp | 278 | 15 | 15 | 60 | 34 | 338 | 64 | ||||
| dotnet-yamldotnet-event | C# YamlDotNet | 293 | 5 | 10 | 83 | 11 | 376 | 26 | ||||
| hs-hsyaml-event | Haskell HsYAML | 298 | 1 | 9 | 94 | 392 | 10 | |||||
| js-yaml-event | Javascript yaml | 307 | 1 | 92 | 2 | 399 | 3 | |||||
| nim-nimyaml-event | Nim NimYAML | 302 | 1 | 5 | 76 | 18 | 378 | 24 | ||||
| perl-pp-event | Perl YAML::PP | 300 | 8 | 90 | 4 | 390 | 12 | |||||
| perl-refparser-event | Perl Generated RefParser | 308 | 94 | 402 | ||||||||
| py-pyyaml-event | Python PyYAML | 249 | 9 | 5 | 45 | 80 | 14 | 329 | 73 | |||
| py-ruamel-event | Python ruamel.yaml | 265 | 6 | 37 | 80 | 14 | 345 | 57 | ||||
| rust-yamlrust-event | Rust yaml | 251 | 28 | 29 | 66 | 28 | 317 | 85 | ||||
| json - Compare loaded data with JSON | ||||||||||||
| c-libfyaml-json | C libfyaml | 278 | 1 | 29 | 94 | 372 | 1 | |||||
| dotnet-yamldotnet-json | C# YamlDotNet | 173 | 16 | 60 | 30 | 29 | 84 | 10 | 257 | 116 | ||
| go-yaml-json | Go go-yaml | 224 | 6 | 49 | 29 | 79 | 15 | 303 | 70 | |||
| hs-hsyaml-json | Haskell HsYAML | 269 | 1 | 9 | 29 | 94 | 363 | 10 | ||||
| js-jsyaml-json | Javascript js-yaml | 224 | 12 | 24 | 19 | 29 | 82 | 12 | 306 | 67 | ||
| js-yaml-json | Javascript yaml | 276 | 3 | 29 | 92 | 2 | 368 | 5 | ||||
| lua-lyaml-json | Lua lyaml | 210 | 29 | 40 | 29 | 78 | 16 | 288 | 85 | |||
| perl-pp-json | Perl YAML::PP | 277 | 2 | 29 | 90 | 4 | 367 | 6 | ||||
| perl-pplibyaml-json | Perl YAML::PP::LibYAML | 234 | 5 | 40 | 29 | 78 | 16 | 312 | 61 | |||
| perl-syck-json | Perl YAML::Syck | 166 | 77 | 36 | 29 | 42 | 52 | 208 | 165 | |||
| perl-tiny-json | Perl YAML::Tiny | 44 | 104 | 41 | 90 | 29 | 80 | 14 | 124 | 249 | ||
| perl-xs-json | Perl YAML::XS (libyaml) | 220 | 8 | 5 | 46 | 29 | 79 | 15 | 299 | 74 | ||
| perl-yaml-json | Perl YAML.pm | 98 | 15 | 166 | 29 | 79 | 15 | 177 | 196 | |||
| py-pyyaml-json | Python PyYAML | 222 | 8 | 49 | 29 | 80 | 14 | 302 | 71 | |||
| py-ruamel-json | Python ruamel.yaml | 234 | 6 | 39 | 29 | 80 | 14 | 314 | 59 | |||
| ruby-psych-json | Ruby psych | 226 | 12 | 41 | 29 | 78 | 16 | 304 | 69 | |||
Legend
Columns
| events | |
|---|---|
| ok | Events matched |
| n/i | This feature is not implemented in this library |
| diff | Event output differs |
| error | Parsing was aborted with an error |
| n/a | No data to compare for this test |
| invalid_correct | Input was correctly detected as invalid |
| invalid_incorrect | Input was accepted although it is invalid |
| json | |
| ok | Loaded data is equal to JSON |
| n/i | This feature is not implemented in this library |
| diff | Loaded data differs |
| error | Parsing/Loading was aborted with an error |
| n/a | No data to compare for this test |
| invalid_correct | Input was correctly detected as invalid |
| invalid_incorrect | Input was accepted although it is invalid |
Which processors don't implement which features?
--- c-libyaml.event: [ empty-key ] dotnet-yamldotnet.json: [ local-tag, unknown-tag ] java-snakeyaml.event: [ empty-key ] java-snakeyaml.json: [ empty-key, local-tag, unknown-tag ] js-jsyaml.json: [ local-tag, unknown-tag ] js-yaml.event: [ duplicate-key ] lua-lyaml-json: [ empty-key ] perl-pplibyaml.event: [ empty-key ] perl-pplibyaml.json: [ empty-key ] perl-pplibyaml.perl: [ empty-key ] perl-tiny.json: &tiny [ alias, anchor, complex-key, empty-key, explicit-key, flow, tag ] perl-tiny.perl: *tiny perl-xs.json: [ empty-key, unknown-tag ] perl-xs.perl: [ empty-key, unknown-tag ] py-pyyaml.event: [ empty-key ] py-pyyaml.json: [ empty-key ] py-pyyaml.py: [ empty-key ]