After a few weeks of distraction (camping, hiking, vaction, etc.), I found some time this weekend to plug away at YAML4R. And great success was had! The parser is working great and thanks to Racc (yacc for Ruby), the parser took about 300 lines of code! I haven't done any benchmarks, but I imagine it's quite slower than YAML.pm, as the parser takes a couple passes to do its job. Still, it's not terribly slow and its worth the clean code to me until I can hook into libyaml someday.
I don't know how Brian does it. I started writing a straight-forward parser from the regular expressions in YAML.pm, but its a long and winding road that I couldn't find the endurance to climb. (Thank the 16 miles I hiked last week... It stole my stamina...) The parser is rather elegant though, and I daresay it'll be useful if someone wants to construct a parser with lex and yacc. My yaml.y could easily be ported to C.
So this release is 0.14. I've been keeping versions and milestones to myself so far, but I believe the module is quite useable now, so I figured I would release it publicly. A few things: the parser doesn't handle tabs right. Also, blocks are all literal at the moment. Parsing multiple documents is coming soon. And special keys aren't supported. But most everything else is there. You can check the README for a list of what from the spec is supported and any details as to compliance.
I'll be announcing this on ruby-talk shortly and I've announced it on Freshmeat. I've attached the README to this message in case you want to read about the release without needing to download it all.
I've set up a page on Wiki with examples: http://wiki.yaml.org/yamlwiki/YamlForRuby
Version 0.14 is here: http://west.dl.sourceforge.net/sourceforge/yaml4r/yaml4r-0.14.tar.gz
The project page is: http://sf.net/projects/yaml4r/
Hopefully I'll have some readable details up at the home page: http://yaml4r.sf.net/
Peace, love, and tons of questions forthcoming!