Description

YAML::XS is a binding to libyaml and already quite old, but the most popular YAML module for perl. There are two main issues:

  • It uses global package variables to influence behaviour.
  • It didn't implement the loading of types like numbers and booleans according to the YAML spec (neither 1.1 nor 1.2).

Goals

Create a new interface which works object oriented. Currently YAML::XS exports a list of functions.

  • The new API will allow to create a YAML::XS object containing configuration influencing the behaviour of loading and dumping.
    • It keeps the libyaml parser and emitter structs in memory, so repeated calls can save the creation of those structs
  • It will by default implement the YAML 1.2 Core Schema, so it is compatible to other YAML processors in perl and in other languages
  • If I have time, I would like to add the merge << key feature as an option. We could then use it in openQA as a replacement for YAML::PP to be faster.

I already created a proof of concept with a minimal functionality some weeks before this HackWeek.

Resources

Looking for hackers with the skills:

yaml perl

This project is part of:

Hack Week 24

Activity

  • about 1 month ago: tinita started this project.
  • about 1 month ago: tinita liked this project.
  • about 1 month ago: tinita added keyword "yaml" to this project.
  • about 1 month ago: tinita added keyword "perl" to this project.
  • about 1 month ago: tinita originated this project.

  • Comments

    • tinita
      about 1 month ago by tinita | Reply

      Today I implemented loading aliases/anchors.

    • tinita
      29 days ago by tinita | Reply

      Today I implemented dumping aliases/anchors. Now I'm working on loading multiple documents.

    • tinita
      28 days ago by tinita | Reply

      Today I implemented loading and dumping multiple documents. Then I started with implementing the YAML 1.2 Core Schema.

    • tinita
      27 days ago by tinita | Reply

      Today I implemented the Core Schema.

      Started to add a utf8 option, like JSON::PP has.

    • tinita
      27 days ago by tinita | Reply

      I worked on the utf8 option and created an experimental release here: https://github.com/perlpunk/yaml-libyaml-pm/releases It still needs some cleanup and error handling for things that are not supported yet.

    Similar Projects

    This project is one of its kind!