[ANN] Syck 0.25 + YAML.rb -- Objects in plain-text

…my faithful friends…

Syck 0.25 is here. This means that YAML.rb has been integrated with the
Syck code. A bit more testing and bugfixing and we should have a stable
YAML.rb with a very swift parser at last!

(Thanks to all of those who have shown such tremendous support recently.
I get such sugary emails that glucose deposits have formed around the
edges of my monitor and sparkle like teeth on Christmas!) Especially
helpful have been the votes of support for YAML in Ruby 1.8. If you’d
like to vote, see http://www.rubygarden.org/ruby?YamlInRubyPetition
feel free to link to images of your legal and binding signature for
extra zeal points.

Okay, then. Release notes below. Cheerio.

···

released: { name: Syck, version: 0.25 }
for: [ Ruby, PHP, Python ]
by: why the lucky stiff
about: >

Syck is a YAML parser, an extension for scripting
languages, written in C.

So what is YAML? YAML is a new language for data.
Describe objects in plain text. Load the data into
your scripting language as arrays, dictionaries,
classes, or primitives.

links:
YAML: http://www.yaml.org/
YAML Cookbook: http://yaml4r.sf.net/cookbook/
YAML Type Repository: http://yaml.org/type/
YAML Specification: http://yaml.org/spec/
Syck: http://www.whytheluckystiff.net/syck/
Syck Benchmarks: http://www.whytheluckystiff.net/arch/2003/03/19
Tarball @ SourceForge: http://aleron.dl.sourceforge.net/sourceforge/yaml4r/syck-0.25.tar.gz

status: >

Syck is about 80% compliant with the YAML spec. Syck currently
has a few issues with type families before an mapping. I’ve also
noticed some whitespace issues. The seq-in-map shortcut is not
yet supported.

The extensions are quite usable, though. Ruby, PHP and Python
can load from a string containing YAML. Ruby also has support
for stream loading from any IO object.

This release also introduces the YAML.rb 0.50 source code into
the Ruby extension. Which means: YPath, emitting, Okay.

benchmarks: >

Syck is quite speedy, although not as swift as most language’s
native serialization.

Syck runs at about:

30-35% of the speed of Ruby’s Marshal.
35-90% of the speed of PHP’s deserialize().
600% of the speed of Python’s Pickle.
33-40% of the speed of Python’s cPickle.

(Based on various types of structured data.)

installation: >

Syck contains working extensions for the Ruby, PHP, and Python
languages. Each requires compilation of the libsyck library,
followed by compilation of the extension.

To compile libsyck, first download libsyck.

tar xzvf syck-0.25.tar.gz
cd syck-0.25
./configure
make
sudo make install

To install the Ruby extension:

cd ext/ruby
ruby install.rb config
ruby install.rb setup
sudo ruby install.rb install

To install the Python extension:

cd ext/python
python setup.py build
sudo python setup.py install

To install the PHP extension:

sh make_module.sh
sudo make install (if you weren't root during make_module.sh)
php -q syck.php

examples: |

To load this document in Ruby:

 ($:~)$ irb
 >> require 'syck'
 => true
 >> yp = YAML::Syck::Parser.new( {} )
 => #<YAML::Syck::Parser:0x8058530>
 >> yp.load( File.open( 'syck-0.25.yml' ) )
 => {"status"=>"Syck is about 60% compliant ..."}

To load this document in PHP:

 ($:~)$ php -a
 Interactive mode enabled

 <? dl( 'syck.so' ); print_r( syck_load( implode( '', file( 'syck-0.25.yml' ) ) ) ); ?>

 .. php then outputs ..

 X-Powered-By: PHP/4.2.3
 Content-type: text/html
 
 Array
 (   
     [released] => Array
         (   
             [name] => Syck
             [version] => 0.25
         )

 .. and so on ..

To load this document in Python:

 ($:~)$ python
 Python 2.1.3 (#1, Jul 11 2002, 17:52:24) 
 [GCC 2.95.3 20010315 (release) [FreeBSD]] on freebsd4
 Type "copyright", "credits" or "license" for more information.
 >>> import syck
 >>> f = open( 'syck-0.25.yml' )
 >>> syck.load( f.read() )
 {'by': 'why the lucky stiff', ... }

a bug ?

irb(main):001:0> require 'syck’
true
irb(main):002:0> yp = YAML::Syck::Parser.new( {} )
#YAML::Syck::Parser:0x402a5070
irb(main):005:0> yp.load( File.open( ‘1.yml’))
irb: relocation error:
/usr/local/lib/site_ruby/1.6/1.6/i386-linux/syck.so: undefined symbol:
LONG2NUM

$ruby -v
ruby 1.6.7 (2002-03-19) [i386-linux]

-r.

Which is faster, 30% or 600%?
That is to say, is 30% of Ruby’s Marshal mean
that it runs in 3/10’s the time as Marshal
or that it is 30% slower than Marshal?

···

On Thursday, 8 May 2003 at 8:25:28 +0900, why the lucky stiff wrote:

…my faithful friends…

Syck runs at about:

30-35% of the speed of Ruby’s Marshal.
35-90% of the speed of PHP’s deserialize().
600% of the speed of Python’s Pickle.
33-40% of the speed of Python’s cPickle.


Jim Freeze

If you live to the age of a hundred you have it made because very few
people die past the age of a hundred.
– George Burns

Hi,

···

In message “[ANN] Syck 0.25 + YAML.rb – Objects in plain-text” on 03/05/08, why the lucky stiff ruby-talk@whytheluckystiff.net writes:

Especially
helpful have been the votes of support for YAML in Ruby 1.8. If you’d
like to vote, see http://www.rubygarden.org/ruby?YamlInRubyPetition
feel free to link to images of your legal and binding signature for
extra zeal points.

You don’t need to vote any longer. I myself is a big fan of YAML.
yaml will be in the 1.8.0, if it’s checked in before the release date,
which should not be very far away.

It’s same about REXML too. Sean, are you reading?

						matz.

…my faithful friends…

Syck 0.25 is here. This means that YAML.rb has been integrated with the
Syck code. A bit more testing and bugfixing and we should have a stable
YAML.rb with a very swift parser at last!

What’s the expected date for the YAML spec to move from draft to final version?

Jame

why the lucky stiff ruby-talk@whytheluckystiff.net wrote in message news:20030507233743.GB87737@rysa.inetz.com

Syck 0.25 is here.

_why,

What license are you releasing Syck under? A cursory look at the
tarball and webpage doesn’t reveal the answer…

Cheers,

Tom

Excellent.

If I may ask a stupid question… What’s your name?

···

— why the lucky stiff ruby-talk@whytheluckystiff.net wrote:

…my faithful friends…

Syck 0.25 is here. This means that YAML.rb has been integrated
with the
Syck code. A bit more testing and bugfixing and we should have a
stable
YAML.rb with a very swift parser at last!


Do you Yahoo!?
The New Yahoo! Search - Faster. Easier. Bingo.

Jim Freeze wrote:

···

On Thursday, 8 May 2003 at 8:25:28 +0900, why the lucky stiff wrote:

…my faithful friends…

Syck runs at about:

30-35% of the speed of Ruby’s Marshal.
35-90% of the speed of PHP’s deserialize().
600% of the speed of Python’s Pickle.
33-40% of the speed of Python’s cPickle.

Which is faster, 30% or 600%?
That is to say, is 30% of Ruby’s Marshal mean
that it runs in 3/10’s the time as Marshal
or that it is 30% slower than Marshal?

Acording to the benchmark page

Syck Benchmarks: http://www.whytheluckystiff.net/arch/2003/03/19

Pickle is much slower than Syck, so I guess the % refers to throughput
(objects per second or whatever).

Off the tested marshalling types, Pickle was the slowest. If you check
out the link in Joel’s email you’ll see exact times. (For an older,
slower version of Syck.)

So 30-35% of Ruby Marshal means that Syck took 3x as long to parse
comparable objects. I am very pleased with this speed, considering that
Marshal is a binary format that doesn’t have the ambiguities of YAML,
incident to its being a human-editable text format.

_why

···

Jim Freeze (jim@freeze.org) wrote:

On Thursday, 8 May 2003 at 8:25:28 +0900, why the lucky stiff wrote:

…my faithful friends…

Syck runs at about:

30-35% of the speed of Ruby’s Marshal.
35-90% of the speed of PHP’s deserialize().
600% of the speed of Python’s Pickle.
33-40% of the speed of Python’s cPickle.

You might check out:

http://www.ruby-talk.org/55878

Also, I might need to update my install.rb.

_why

···

Bermejo, Rodrigo (rodrigo.bermejo@ps.ge.com) wrote:

irb: relocation error:
/usr/local/lib/site_ruby/1.6/1.6/i386-linux/syck.so: undefined symbol:
LONG2NUM

When you have a release date, let me know. I will work morning and
night to debug and test Syck so it works magnificently. Thank you so
much!

_why

···

Yukihiro Matsumoto (matz@ruby-lang.org) wrote:

You don’t need to vote any longer. I myself is a big fan of YAML.
yaml will be in the 1.8.0, if it’s checked in before the release date,
which should not be very far away.

You don’t need to vote any longer. I myself is a big fan of YAML.
yaml will be in the 1.8.0, if it’s checked in before the release date,
which should not be very far away.

It’s same about REXML too. Sean, are you reading?

This is good news. Thanks.

James

···
  					matz.

From Oren:

I think that we are about done nit-picking the spec, at least as far as
intent is concerned. Clark, Brian, everyone - I feel it is about time
we declared this as a “release candidate”. Any reason not to? As Brian
pointed out, we don’t see ourselves making any further changes…

From Ingy:

I’ll tell you what. Let’s shoot for the end of April for announcing a
Release Candidate. (It seems that) Why, Mike Orr and I are are in the
middle of implementing a lot of stuff in the next 6 weeks. If the spec
can survive that period, then I’m willing to go to a release candidate.

I think the implementations are the only hold up. It’s difficult to
announce a 1.0 of YAML without adequate software to back it up. But
that’s all changing quickly.

_why

···

james_b@neurogami.com (james_b@neurogami.com) wrote:

What’s the expected date for the YAML spec to move from draft to final version?

In article 1052359392.139175.15179.nullmailer@picachu.netlab.jp,

···

Yukihiro Matsumoto matz@ruby-lang.org wrote:

Hi,

In message “[ANN] Syck 0.25 + YAML.rb – Objects in plain-text” > on 03/05/08, why the lucky stiff ruby-talk@whytheluckystiff.net writes:

Especially
helpful have been the votes of support for YAML in Ruby 1.8. If you’d
like to vote, see http://www.rubygarden.org/ruby?YamlInRubyPetition
feel free to link to images of your legal and binding signature for
extra zeal points.

You don’t need to vote any longer. I myself is a big fan of YAML.
yaml will be in the 1.8.0, if it’s checked in before the release date,
which should not be very far away.

It’s same about REXML too. Sean, are you reading?

  					matz.

EXCELLENT! What can we vote on next?

How about including raa-install?

Phil

Were he to reveal it to us, arch-villains would try to kidnap all his
relatives and lure him into a trap. They’d then chain up him and have him
develop Syck all the time to de/serialize their evil objects faster.
And they would close the source, too. Now, do you want this to happen?

···

On Thu, May 08, 2003 at 11:09:39PM +0900, Michael Campbell wrote:

— why the lucky stiff ruby-talk@whytheluckystiff.net wrote:

…my faithful friends…

Syck 0.25 is here. This means that YAML.rb has been integrated
with the
Syck code. A bit more testing and bugfixing and we should have a
stable
YAML.rb with a very swift parser at last!

Excellent.

If I may ask a stupid question… What’s your name?


_ _

__ __ | | ___ _ __ ___ __ _ _ __
'_ \ / | __/ __| '_ _ \ / ` | ’ \
) | (| | |
__ \ | | | | | (| | | | |
.__/ _,
|_|/| || ||_,|| |_|
Running Debian GNU/Linux Sid (unstable)
batsman dot geo at yahoo dot com

Why are there always boycotts? Shouldn’t there be girlcotts too?
– argon on #Linux

I’m offering Syck under two licenses, which you can choose from.

The first is a standard BSD license. No restrictions on modifying, copying,
publishing, etc. but please include the copyright sort of thing.

The second is a “Death and Repudiation” license, which restricts ANY use of
the library (even perfectly legitimate and non-commercial uses) until after
one’s death. This means that if you accept this license, you agree to code
against Syck blindly and provide your children with the means to compile and
distribute your software. The “Repudation” part of license indicates that
even after your death, I will unexpectedly revoke this license and sue your
heirs.

Full texts for these two flavors of licensing shall be available in the next
release. Thank you for your inquiry.

_why

···

On Thursday 08 May 2003 02:49 am, Tom Payne wrote:

What license are you releasing Syck under? A cursory look at the
tarball and webpage doesn’t reveal the answer…

Hi,

···

In message “Re: [ANN] Syck 0.25 + YAML.rb – Objects in plain-text” on 03/05/08, why the lucky stiff ruby-talk@whytheluckystiff.net writes:

When you have a release date, let me know. I will work morning and
night to debug and test Syck so it works magnificently. Thank you so
much!

Don’t wait for me, as I’m waiting for you. :wink:
Seriously, just check in your current work.

						matz.

In article 20030508152944.GA30359@student.ei.uni-stuttgart.de,

···

Mauricio Fernández batsman.geo@yahoo.com wrote:

On Thu, May 08, 2003 at 11:09:39PM +0900, Michael Campbell wrote:

— why the lucky stiff ruby-talk@whytheluckystiff.net wrote:

…my faithful friends…

Syck 0.25 is here. This means that YAML.rb has been integrated
with the
Syck code. A bit more testing and bugfixing and we should have a
stable
YAML.rb with a very swift parser at last!

Excellent.

If I may ask a stupid question… What’s your name?

Were he to reveal it to us, arch-villains would try to kidnap all his
relatives and lure him into a trap. They’d then chain up him and have him
develop Syck all the time to de/serialize their evil objects faster.
And they would close the source, too. Now, do you want this to happen?

It would be a threat to national security.

Phil

I’m curious. I don’t see the second license listed at
http://www.opensource.org/licenses. Have you submitted to OSI for
certification?

···

On Thu, 2003-05-08 at 13:37, why the lucky stiff wrote:

I’m offering Syck under two licenses, which you can choose from.

The first is a standard BSD license. No restrictions on modifying, copying,
publishing, etc. but please include the copyright sort of thing.

The second is a “Death and Repudiation” license, which restricts ANY use of
the library (even perfectly legitimate and non-commercial uses) until after
one’s death. This means that if you accept this license, you agree to code
against Syck blindly and provide your children with the means to compile and
distribute your software. The “Repudation” part of license indicates that
even after your death, I will unexpectedly revoke this license and sue your
heirs.

Full texts for these two flavors of licensing shall be available in the next
release. Thank you for your inquiry.


– Jim Weirich jweirich@one.net http://w3.one.net/~jweirich

“Beware of bugs in the above code; I have only proved it correct,
not tried it.” – Donald Knuth (in a memo to Peter van Emde Boas)

I believe it satisfies all the requirements of the Open Source
definition!!! This proves how loose “Open Source” can be.

"1. Free Redistribution

The license shall not restrict any party from selling or giving away the
software as a component of an aggregate software distribution containing
programs from several different sources. The license shall not require a
royalty or other fee for such sale."

Use of the library is restricted, but redistribution seems to be
allowed.

"2. Source Code

The program must include source code, and must allow distribution in
source code as well as compiled form. Where some form of a product is
not distributed with source code, there must be a well-publicized means
of obtaining the source code for no more than a reasonable reproduction
cost preferably, downloading via the Internet without charge. The source
code must be the preferred form in which a programmer would modify the
program. Deliberately obfuscated source code is not allowed.
Intermediate forms such as the output of a preprocessor or translator
are not allowed."

Source code is given and can be redistributed.

"3. Derived Works

The license must allow modifications and derived works, and must allow
them to be distributed under the same terms as the license of the
original software."

The license states that you can “code against Syck blindly”; nothing is
said on redistribution, so we assume it is allowed.

"4. Integrity of The Author’s Source Code

The license may restrict source-code from being distributed in modified
form only if the license allows the distribution of “patch files” with
the source code for the purpose of modifying the program at build time.
The license must explicitly permit distribution of software built from
modified source code. The license may require derived works to carry a
different name or version number from the original software."

Then again, the license doesn’t require anything against this.

"5. No Discrimination Against Persons or Groups

The license must not discriminate against any person or group of
persons."

No discrimination is done; neither the “death” nor the “repudiation”
parts discriminate against anybody.

"6. No Discrimination Against Fields of Endeavor

The license must not restrict anyone from making use of the program in a
specific field of endeavor. For example, it may not restrict the program
from being used in a business, or from being used for genetic research."

No discrimination here either. Every body gets the same usage rights
(void).

"7. Distribution of License

The rights attached to the program must apply to all to whom the program
is redistributed without the need for execution of an additional license
by those parties."

OK too.

"8. License Must Not Be Specific to a Product

The rights attached to the program must not depend on the program’s
being part of a particular software distribution. If the program is
extracted from that distribution and used or distributed within the
terms of the program’s license, all parties to whom the program is
redistributed should have the same rights as those that are granted in
conjunction with the original software distribution."

It is not specific to a product. Your children will be sued regardless
of what Syck was integrated in.

"9. The License Must Not Restrict Other Software

The license must not place restrictions on other software that is
distributed along with the licensed software. For example, the license
must not insist that all other programs distributed on the same medium
must be open-source software."

Satisfied, nothing is stated on other software.

"*10. The License must be technology-neutral

No provision of the license may be predicated on any individual
technology or style of interface."

“No discrimination” on a technological basis.

···

On Fri, May 09, 2003 at 11:22:37AM +0900, Jim Weirich wrote:

On Thu, 2003-05-08 at 13:37, why the lucky stiff wrote:

I’m offering Syck under two licenses, which you can choose from.

The first is a standard BSD license. No restrictions on modifying, copying,
publishing, etc. but please include the copyright sort of thing.

The second is a “Death and Repudiation” license, which restricts ANY use of
the library (even perfectly legitimate and non-commercial uses) until after
one’s death. This means that if you accept this license, you agree to code
against Syck blindly and provide your children with the means to compile and
distribute your software. The “Repudation” part of license indicates that
even after your death, I will unexpectedly revoke this license and sue your
heirs.

Full texts for these two flavors of licensing shall be available in the next
release. Thank you for your inquiry.

I’m curious. I don’t see the second license listed at
http://www.opensource.org/licenses. Have you submitted to OSI for
certification?


_ _

__ __ | | ___ _ __ ___ __ _ _ __
'_ \ / | __/ __| '_ _ \ / ` | ’ \
) | (| | |
__ \ | | | | | (| | | | |
.__/ _,
|_|/| || ||_,|| |_|
Running Debian GNU/Linux Sid (unstable)
batsman dot geo at yahoo dot com

Win95 is not a virus; a virus does something.
– unknown source