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

  • 12 months ago: tinita started this project.
  • 12 months ago: tinita liked this project.
  • 12 months ago: tinita added keyword "yaml" to this project.
  • 12 months ago: tinita added keyword "perl" to this project.
  • 12 months ago: tinita originated this project.

  • Comments

    • tinita
      12 months ago by tinita | Reply

      Today I implemented loading aliases/anchors.

    • tinita
      12 months ago by tinita | Reply

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

    • tinita
      12 months ago by tinita | Reply

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

    • tinita
      12 months ago by tinita | Reply

      Today I implemented the Core Schema.

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

    • tinita
      12 months 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

    Create a page with all devel:languages:perl packages and their versions by tinita

    Description

    Perl projects now live in git: https://src.opensuse.org/perl

    It would be useful to have an easy way to check which version of which perl module is in devel:languages:perl. Also we have meta overrides and patches for various modules, and it would be good to have them at a central place, so it is easier to lookup, and we can share with other vendors.

    I did some initial data dump here a while ago: https://github.com/perlpunk/cpan-meta

    But I never had the time to automate this.

    I can also use the data to check if there are necessary updates (currently it uses data from download.opensuse.org, so there is some delay and it depends on building).

    Goals

    • Have a script that updates a central repository (e.g. https://src.opensuse.org/perl/_metadata) with metadata by looking at https://src.opensuse.org/perl/_ObsPrj (check if there are any changes from the last run)
    • Create a HTML page with the list of packages (use Javascript and some table library to make it easily searchable)

    Resources