Writing up a "YAML Tiny" specification has meant that I've been forced back to the YAML specification to make sure what I'm doing actually makes sense.
In the process, I discovered I wasn't supporting the %YAML directive correctly, and I've not only corrected it, but added a bit more flexibility as well (1 additional line of code).
As a result, YAML::Tiny is now the ONLY YAML parser that supports the official YAML 1.0 standard, the YAML 1.1 2004 draft specification, and the idiosyncratic form used in META.yml.
Withing the context, of course, of the subset of the YAML specification that YAML::Tiny supports.
Every other YAML parser available for Perl supports EITHER one or the other, and crashes (parser error) on the rest.
YAML.pm supports the META.yml form, but not the YAML 1.0 or 1.1 spec.
YAML::Syck supports the META.yml form (but corrupts the passed-in string), and the YAML 1.0 spec, but not the 1.1 spec.
And YAML::XS supports the 1.1 spec, but does not support the 1.0 spec or the META.yml form.
The main difference between 1.1 and 1.0 is that they decided to change the string that indicates which version of YAML it is.
So in the 1.0 spec you say
%YAML:1.0
And in the YAML 1.1 spec you say
%YAML 1.1
Personally, for me this has to rank as just about one of the most stupid formatting changes I've ever seen.