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 year ago: tinita started this project.
  • about 1 year ago: tinita liked this project.
  • about 1 year ago: tinita added keyword "yaml" to this project.
  • about 1 year ago: tinita added keyword "perl" to this project.
  • about 1 year ago: tinita originated this project.

  • Comments

    • tinita
      about 1 year ago by tinita | Reply

      Today I implemented loading aliases/anchors.

    • tinita
      about 1 year ago by tinita | Reply

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

    • tinita
      about 1 year ago by tinita | Reply

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

    • tinita
      about 1 year ago by tinita | Reply

      Today I implemented the Core Schema.

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

    • tinita
      about 1 year 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


    MCP Perl SDK by kraih

    Description

    We've been using the MCP Perl SDK to connect openQA with AI. And while the basics are working pretty well, the SDK is not fully spec compliant yet. So let's change that!

    Goals

    • Support for Resources
    • All response types (Audio, Resource Links, Embedded Resources...)
    • Tool/Prompt/Resource update notifications
    • Dynamic Tool/Prompt/Resource lists
    • New authentication mechanisms

    Resources