Yakaz is pleased to release yamerl, our YAML parser, written in Erlang.
This parser supports YAML 1.1 and YAML 1.2. The code, documentation and
testsuite are available on GitHub:
Beside YAML 1.2 node types, it supports two Erlang-specific node types:
o Erlang atom node type.
o Erlang fun() node type.
Compared to yamler, another parser for Erlang but based on libyaml,
it has the following features and differences:
o Support for stream parsing.
o Support for YAML 1.2.
o Erlang atom autodetection (ie. no tag is specified):
- yamerl (this one, pure Erlang) tries to represent plain
scalar as Erlang atom only
- yamler (libyaml-based) tries to represent both plain
and single-quoted scalars. This looks more like Erlang
syntax (where atoms can be unquoted or single-quoted) but
breaks YAML specification, if I understand correctly.
Also, still compared to yamler, yamerl has the common advantages and
caveats we find in native-code-based vs. pure-erlang-based implementations:
o yamerl is slower than yamler.
o yamerl may scale better (though I never verified this).
o yamerl won't take down the whole VM because of a crash.
Everything is distributed under the terms of the 2-clause BSD license.
 yamler: https://github.com/goertzenator/yamler
Yakaz - http://www.yakaz.com/