# \[ANN\] Syck 0.41 -- 95% Support, Bytecode, Bugfixes

**URL:** <https://rubytalk.org/t/ann-syck-0-41-95-support-bytecode-bugfixes/8522>\
**Category:** ruby-talk\
**Created:** [14 October 2003 20:35 UTC](https://rubytalk.org/t/ann-syck-0-41-95-support-bytecode-bugfixes/8522 "2003-10-14T20:35:34Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![why\_the\_lucky\_stiff3](https://avatars.discourse-cdn.com/v4/letter/w/7c8e57/32.png) [@why\_the\_lucky\_stiff3](https://rubytalk.org/u/why_the_lucky_stiff3)\
**Post date:** [14 October 2003 20:35 UTC](https://rubytalk.org/t/ann-syck-0-41-95-support-bytecode-bugfixes/8522/1 "2003-10-14T20:35:34Z")

</div>

friends, countrymen:

Happy to announce Syck 0.41. Syck is the YAML toolkit, the undying  
force that backs Ruby 1.8's YAML support. This distribution provides  
support for YAML parsing in Python, PHP, and Ruby 1.6.x/1.7.x as well.

This latest release is a world of improvement over the 0.35 release.  
Numerous bugfixes from users, improvements that bring the parser to  
approximately 95% of the YAML spec, and preliminary support for YAML  
bytecode parsing. In addition, Clark Evan's bytecode emitter is  
included.

Please note that the Python extension is in some disarray as stream  
parsing and type handling are in the works still. Some of this code is still  
beta software and here's my disclaimer as far as that goes: I'm not  
going to say "Use at your own risk" because I don't want this library to  
be risky. If you trip on something, I'll share the liability by  
repairing things as quickly as I can. Your responsibility is to report  
the inadequacies. All the quicker we can those pieces out of beta.

Release notes below.

\_why

> **···**
>
> ---  
> released: { name: Syck, version: 0.41 }  
> for: [Ruby, PHP, Python]  
> by: why the lucky stiff  
> about: \>
> 
> &nbsp;&nbsp;Syck is a YAML parser, an extension for scripting  
> &nbsp;&nbsp;languages, written in C.
> 
> &nbsp;&nbsp;So what is YAML? YAML is a new language for data.  
> &nbsp;&nbsp;Describe objects in plain text. Load the data into  
> &nbsp;&nbsp;your scripting language as arrays, dictionaries,  
> &nbsp;&nbsp;classes, or primitives.
> 
> links:  
> &nbsp;&nbsp;YAML: [http://www.yaml.org/](http://www.yaml.org/)  
> &nbsp;&nbsp;YAML Cookbook: [http://yaml4r.sf.net/cookbook/](http://yaml4r.sf.net/cookbook/)  
> &nbsp;&nbsp;YAML Type Repository: [http://yaml.org/type/](http://yaml.org/type/)  
> &nbsp;&nbsp;YAML Specification: [http://yaml.org/spec/](http://yaml.org/spec/)  
> &nbsp;&nbsp;Syck: [http://www.whytheluckystiff.net/syck/](http://www.whytheluckystiff.net/syck/)  
> &nbsp;&nbsp;Syck Benchmarks: [http://www.whytheluckystiff.net/arch/2003/03/19](http://www.whytheluckystiff.net/arch/2003/03/19)  
> &nbsp;&nbsp;Tarball @ SourceForge: [http://aleron.dl.sourceforge.net/sourceforge/yaml4r/syck-0.41.tar.gz](http://aleron.dl.sourceforge.net/sourceforge/yaml4r/syck-0.41.tar.gz)
> 
> status: \>
> 
> &nbsp;&nbsp;Syck is about 95% compliant with the YAML spec. Largely, small  
> &nbsp;&nbsp;issues remain.
> 
> &nbsp;&nbsp;The extensions are quite usable. Ruby, PHP and Python  
> &nbsp;&nbsp;can load from a string containing YAML.
> 
> &nbsp;&nbsp;Ruby has support for stream loading, type handling, YPath, Okay.  
> &nbsp;&nbsp;This release includes an amount of Ruby code comprising the 0.60  
> &nbsp;&nbsp;release of YAML.rb.
> 
> benchmarks: \>
> 
> &nbsp;&nbsp;Syck is quite speedy, although not as swift as most language's  
> &nbsp;&nbsp;native serialization.
> 
> &nbsp;&nbsp;Syck runs at about:
> 
> &nbsp;&nbsp;30-35% of the speed of Ruby's Marshal.  
> &nbsp;&nbsp;35-90% of the speed of PHP's deserialize().  
> &nbsp;&nbsp;600% of the speed of Python's Pickle.  
> &nbsp;&nbsp;33-40% of the speed of Python's cPickle.
> 
> &nbsp;&nbsp;(Based on various types of structured data.)
> 
> installation: \>
> 
> &nbsp;&nbsp;Syck contains working extensions for the Ruby, PHP, and Python  
> &nbsp;&nbsp;languages. Each requires compilation of the libsyck library,  
> &nbsp;&nbsp;followed by compilation of the extension.
> 
> &nbsp;&nbsp;To compile libsyck, first download libsyck.
> 
> &nbsp;&nbsp;&nbsp;&nbsp;tar xzvf syck-0.41.tar.gz  
> &nbsp;&nbsp;&nbsp;&nbsp;cd syck-0.41  
> &nbsp;&nbsp;&nbsp;&nbsp;./configure  
> &nbsp;&nbsp;&nbsp;&nbsp;make  
> &nbsp;&nbsp;&nbsp;&nbsp;sudo make install
> 
> &nbsp;&nbsp;To install the Ruby extension:
> 
> &nbsp;&nbsp;&nbsp;&nbsp;cd ext/ruby  
> &nbsp;&nbsp;&nbsp;&nbsp;ruby install.rb config  
> &nbsp;&nbsp;&nbsp;&nbsp;ruby install.rb setup  
> &nbsp;&nbsp;&nbsp;&nbsp;sudo ruby install.rb install
> 
> &nbsp;&nbsp;To install the Python extension:
> 
> &nbsp;&nbsp;&nbsp;&nbsp;cd ext/python  
> &nbsp;&nbsp;&nbsp;&nbsp;python [setup.py](http://setup.py) build  
> &nbsp;&nbsp;&nbsp;&nbsp;sudo python [setup.py](http://setup.py) install
> 
> &nbsp;&nbsp;To install the PHP extension:
> 
> &nbsp;&nbsp;&nbsp;&nbsp;sh make\_module.sh  
> &nbsp;&nbsp;&nbsp;&nbsp;sudo make install (if you weren't root during make\_module.sh)  
> &nbsp;&nbsp;&nbsp;&nbsp;php -q syck.php
> 
> examples:
> 
> &nbsp;&nbsp;To load this document in Ruby: |
> 
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;($:~)$ irb  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\>\> require 'yaml'  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=\> true  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\>\> YAML::load( File.open( 'syck-0.41.yml' ) )  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=\> {"status"=\>"Syck is about 60% compliant ..."}
> 
> &nbsp;&nbsp;To load this document in PHP: |
> 
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;($:~)$ php -a  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Interactive mode enabled
> 
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<? dl( '[syck.so](http://syck.so)' ); print\_r( syck\_load( implode( '', file( 'syck-0.41.yml' ) ) ) ); ?\>  
> &nbsp;&nbsp;  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.. php then outputs ..
> 
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X-Powered-By: PHP/4.2.3  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Content-type: text/html  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Array  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[released] =\> Array  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[name] =\> Syck  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[version] =\> 0.41  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)
> 
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.. and so on ..
> 
> &nbsp;&nbsp;To load this document in Python: |
> 
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;($:~)$ python  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Python 2.1.3 (#1, Jul 11 2002, 17:52:24)  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[GCC 2.95.3 20010315 (release) [FreeBSD]] on freebsd4  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type "copyright", "credits" or "license" for more information.  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\>\>\> import syck  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\>\>\> f = open( 'syck-0.41.yml' )  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\>\>\> syck.load( f.read() )  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{'by': 'why the lucky stiff', ... }
