コード日進月歩

プログラミングの技術的なメモなど

Ruby2.5時点のYAML標準ライブラリはYAML1.1

YAML1.2の仕様がある割には対応していないなーと思ったので対応状況を調べてみた。

YAMLのバージョンに関して

YAMLの最新バージョンは1.2、2009年の10月1日にリリースされている

Rubyの標準に関して

公式サイトに言語ごとの状況が書いてある Rubyで扱われる標準のYAMLのライブラリは psych

psych はどのYAMLバージョンに対応しているかというと…

yaml のバックエンドライブラリです。libyaml ベースで作成されてお り、YAML バージョン 1.1 を扱う事ができます。

library psych (Ruby 2.5.0)

1.1となっている。

※ちなみにRuby1.9.3から変わっていない。

他言語の1.2の対応状況

公式サイトでバージョン明示されているのは以下の言語のライブラリたち。

Projects:
  C/C++ Libraries:
  - yaml-cpp      # C++ YAML 1.2 implementation
  Python:
  - ruamel.yaml   # YAML 1.2, update of PyYAML with round-tripping of comments
  Java:
  - Camel         # YAML 1.2 for Java. A user-friendly OOP library.
  Haskell:
  - HsYAML        # YAML 1.2 implementation in pure Haskell
  - YamlReference # Haskell 1.2 reference parser
  Rust:
  - yaml-rust     # YAML 1.2 implementation in pure Rust
  Nim:
  - NimYAML       # YAML 1.2 implementation in pure Nim

だいたい標準的なものは1.1で止まっており、案外にみんな1.2対応していない。

参考リンク