<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Jaros&#322;aw Zabie&#322;&#322;o - BLOG: Tag lua</title>
    <link>http://blog.zabiello.com/articles/tag/lua</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>moje notatki, linki, komentarze</description>
    <item>
      <title>Ruby najszybciej rosn&#261;cym j&#281;zykiem</title>
      <description>&lt;p&gt;Ruby ostro idzie do przodu przesuwaj&#261;c si&#281; w g&#243;r&#281; na li&#347;cie popularno&#347;ci oczko za oczkiem. Wg &lt;a href="http://www.tiobe.com/tpci.htm"&gt;&lt;span class="caps"&gt;TIOBE&lt;/span&gt; Programming Community Index&lt;/a&gt; Ruby by&#322; j&#281;zykiem roku 2006 (w styczniu 2007 Ruby jest 10 pozycji). Z pewno&#347;ci&#261; przyczyni&#322; si&#281; do tego framework &lt;a href="http://rubyonrails.org"&gt;Rails&lt;/a&gt;. Pewnie z tego samego powodu (tu jest ni&#261; &lt;span class="caps"&gt;AJAX&lt;/span&gt;) rosnie popularno&#347;&#263; j&#281;zyka JavaScript.&lt;/p&gt;


	&lt;p&gt;Dawniej popularno&#347;&#263; j&#281;zyka dyktowa&#322;o wsparcie du&#380;ych firm (Sun dla Javy i Microsoft dla C#). Ale wsp&#243;&#322;cze&#347;nie du&#380;o wi&#281;ksze znaczenie zaczyna mie&#263; &amp;#8220;killer application&amp;#8221; (&amp;#8220;zab&#243;jcza&amp;#8221; aplikacja promuj&#261;ca j&#281;zyk w jakim zosta&#322;a napisana) oraz to co twierdzi internet. St&#261;d zwyci&#281;zcy w ostatnich dw&#243;ch latach (PHP i Java) w tym roku (2006) s&#261; przegranymi.&lt;/p&gt;


	&lt;p&gt;Mo&#380;na te&#380; zauwa&#380;y&#263; trend rosn&#261;cej popularno&#347;ci j&#281;zyk&#243;w typowanych dynamicznie przy malej&#261;cym tych typowanych statycznie. Ale to nic dziwnego. Od czasu prze&#322;amania pewnej bariery wydajno&#347;ci sprz&#281;tu upad&#322; g&#322;&#243;wny pow&#243;d od aby nie korzysta&#263; z j&#281;zyk&#243;w dynamicznych na szersz&#261; skal&#281;. (Z pewno&#347;ci&#261; taki &lt;a href="http://pl.wikipedia.org/wiki/Smalltalk"&gt;Smalltalk&lt;/a&gt; narodzi&#322; si&#281; zdecydowanie w z&#322;ym czasie)  Ciekawa jest te&#380; uwaga, &#380;e wi&#281;kszo&#347;&#263; popularno&#347;ci j&#281;zyka &lt;span class="caps"&gt;PHP&lt;/span&gt; nabijana jest jego problemami z bezpiecze&#324;stwem zamiast faktycznym uzyskiwaniem popularno&#347;ci w kr&#281;gach programist&#243;w.&lt;/p&gt;


	&lt;p&gt;Interesuj&#261;ce jest r&#243;wnie&#380; to, &#380;e szybko zdobywa popularno&#347;&#263;  &lt;a href="http://www.tiobe.com/tiobe_index/D.html"&gt;j&#281;zyk D&lt;/a&gt;, o kt&#243;rym do niedawna ma&#322;o kto s&#322;ysza&#322;. To dosy&#263; ciekawy j&#281;zyk i do tego ekstremalnie szybki (stosuje jakie&#347; agresywne algorytmy kompilacji). Ma te&#380; automatyczne zarz&#261;dzanie pami&#281;ci&#261; (garbage collector). Chyba mo&#380;e bez kompleks&#243;w i&#347;&#263; na wojn&#281;  C++, Jav&#261; czy C#. (Zobacz &lt;a href="http://www.digitalmars.com/d/comparison.html"&gt;por&#243;wnanie D z innymi j&#281;zykami&lt;/a&gt;.)&lt;/p&gt;


	&lt;p&gt;Z kolei z j&#281;zyk&#243;w bardziej niszowych odnotowa&#263; mo&#380;na wzrost popularno&#347;ci &lt;a href="http://en.wikipedia.org/wiki/Lua_%28programming_language%29"&gt;Lua&lt;/a&gt; (z pozycji 58 na 47) oraz funkcyjnego &lt;a href="http://en.wikipedia.org/wiki/Haskell_%28programming_language%29"&gt;Haskella&lt;/a&gt; (z 56 na 42).  Przewiduje si&#281; te&#380;, &#380;e z powodu oczekiwanej migracji z C++ i Visual Basic, w roku 2007 zwyci&#281;zc&#261; w kategorii najbardziej popularnego j&#281;zyka, b&#281;dzie C#.&lt;/p&gt;</description>
      <pubDate>Thu, 04 Jan 2007 18:00:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:6780b9da-c0a2-46c4-b8c0-48037eb49cec</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2007/01/04/ruby-najszybciej-rosn%C4%85cym-j%C4%99zykiem</link>
      <category>news</category>
      <category>ruby</category>
      <category>d</category>
      <category>c</category>
      <category>php</category>
      <category>javascript</category>
      <category>lua</category>
      <category>haskell</category>
    </item>
    <item>
      <title>Ruby 1.9 (YARV) vs. Python, Lua &amp;amp; PHP</title>
      <description>&lt;p&gt;Korzystaj&#261;c z tego, &#380;e &lt;a href="http://redhanded.hobix.com/cult/yarvIsRubyItIsItReallyIs.html"&gt;niedawno do repozytorium Rubiego zosta&#322; dodany &lt;span class="caps"&gt;YARV&lt;/span&gt;&lt;/a&gt; (wirtualna maszyna Rubiego)  pokusi&#322;em si&#281; o ma&#322;e por&#243;wnanie wydajno&#347;ci. Jako test u&#380;y&#322;em prostego programu jaki &lt;a href="http://groups.google.com/group/pl.comp.lang.python/browse_thread/thread/61095f8a08ca5f9e/1646948032dc08c0?lnk=st&amp;#38;q=&amp;#38;rnum=2&amp;#38;hl=pl#1646948032dc08c0"&gt;pojawi&#322; si&#281; na li&#347;cie pl.comp.lang.pyhon&lt;/a&gt; (musia&#322;em tylko troch&#281; zwi&#281;kszy&#263; p&#281;tle do 10 milion&#243;w iteracji, aby by&#322;y widoczne jakie&#347; wyniki) U&#380;yty sprz&#281;t: Athlon64 3700+, 64bit Ubuntu 6.0.6.&lt;/p&gt;


	&lt;p&gt;Sprawdzi&#322;em te&#380; z ciekawo&#347;ci &lt;span class="caps"&gt;PHP 5&lt;/span&gt;.2 na tym samym sprz&#281;cie. Dla tak prostego testu powinien m&#243;c da&#263; z siebie wszystko. Jest jednak wolniejszy od Rubiego 1.9.&lt;/p&gt;


	&lt;p&gt;Kod dla Pythona:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;import&lt;/span&gt; &lt;span class="ident"&gt;time&lt;/span&gt;
&lt;span class="ident"&gt;t&lt;/span&gt;&lt;span class="punct"&gt;=&lt;/span&gt;&lt;span class="ident"&gt;time&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;time&lt;/span&gt;&lt;span class="punct"&gt;()&lt;/span&gt;
&lt;span class="ident"&gt;a&lt;/span&gt;&lt;span class="punct"&gt;=&lt;/span&gt;&lt;span class="number"&gt;0&lt;/span&gt;
&lt;span class="keyword"&gt;for&lt;/span&gt; &lt;span class="ident"&gt;i&lt;/span&gt; &lt;span class="keyword"&gt;in&lt;/span&gt; &lt;span class="ident"&gt;xrange&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="number"&gt;10000000&lt;/span&gt;&lt;span class="punct"&gt;):&lt;/span&gt;
    &lt;span class="ident"&gt;a&lt;/span&gt; &lt;span class="punct"&gt;+=&lt;/span&gt; &lt;span class="ident"&gt;i&lt;/span&gt;
&lt;span class="ident"&gt;print&lt;/span&gt; &lt;span class="ident"&gt;a&lt;/span&gt;
&lt;span class="ident"&gt;print&lt;/span&gt; &lt;span class="ident"&gt;time&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;time&lt;/span&gt;&lt;span class="punct"&gt;()&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt; &lt;span class="ident"&gt;t&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

Kod dla Lua:
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;t&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;os&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;clock&lt;/span&gt;&lt;span class="punct"&gt;()&lt;/span&gt;
&lt;span class="ident"&gt;a&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="number"&gt;0&lt;/span&gt;
&lt;span class="keyword"&gt;for&lt;/span&gt; &lt;span class="ident"&gt;i&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="number"&gt;1&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;&lt;span class="number"&gt;10000000&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt;
    &lt;span class="ident"&gt;a&lt;/span&gt;&lt;span class="punct"&gt;=&lt;/span&gt;&lt;span class="ident"&gt;a&lt;/span&gt;&lt;span class="punct"&gt;+&lt;/span&gt;&lt;span class="ident"&gt;i&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;span class="ident"&gt;print&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;a&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
&lt;span class="ident"&gt;print&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;os&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;clock&lt;/span&gt;&lt;span class="punct"&gt;()&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt; &lt;span class="ident"&gt;t&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Kod dla Rubiego:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;t&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;Time&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;now&lt;/span&gt;
&lt;span class="ident"&gt;a&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="number"&gt;0&lt;/span&gt;
&lt;span class="keyword"&gt;for&lt;/span&gt; &lt;span class="ident"&gt;i&lt;/span&gt; &lt;span class="keyword"&gt;in&lt;/span&gt; &lt;span class="number"&gt;1&lt;/span&gt;&lt;span class="punct"&gt;..&lt;/span&gt;&lt;span class="number"&gt;10_000_000&lt;/span&gt;
  &lt;span class="ident"&gt;a&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;a&lt;/span&gt;&lt;span class="punct"&gt;+&lt;/span&gt;&lt;span class="ident"&gt;i&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="ident"&gt;a&lt;/span&gt;
&lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="constant"&gt;Time&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;now&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt; &lt;span class="ident"&gt;t&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Kod dla &lt;span class="caps"&gt;PHP&lt;/span&gt;:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_php "&gt;&amp;lt;?php
function microtime_float() {
 $time = microtime();
 return (double)substr($time, 11) + (double)substr($time, 0, 8);
}
$t =  microtime_float();
$a = 0;
for ($i = 0; $i &amp;lt; 10000000; $i++) {
  $a += $i;
}
print &amp;quot;$a\n&amp;quot;;
print  microtime_float()- $t;
?&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Wyniki:&lt;/p&gt;


	&lt;ol&gt;
	&lt;li&gt;Lua: 1.14 s&lt;/li&gt;
		&lt;li&gt;Ruby 1.9: &lt;strong&gt;1.49 s&lt;/strong&gt;&lt;/li&gt;
		&lt;li&gt;&lt;span class="caps"&gt;PHP 5&lt;/span&gt;.2: 1.74 s&lt;/li&gt;
		&lt;li&gt;Python 2.5: 2.64 s&lt;/li&gt;
		&lt;li&gt;Python 2.4.3: 2.72 s&lt;/li&gt;
		&lt;li&gt;Ruby 1.8.5: 3.83 s.&lt;/li&gt;
	&lt;/ol&gt;


	&lt;h2&gt;Drugie podej&#347;cie&lt;/h2&gt;


	&lt;p&gt;Tym razem wynik u&#347;redniam dla 10 pr&#243;b. Zwi&#281;kszy&#322;em ilo&#347;&#263; iteracji do &lt;strong&gt;20 mln&lt;/strong&gt;. No i&amp;#8230; Ruby 1.9 pobi&#322; wszystko. Zar&#243;wno Pythona jak i Lua! (PHP 5.2 po 30 sek. zg&#322;osi&#322; timeout. Musia&#322;em wi&#281;c u&#347;redni&#263; po 5 wynikach.)&lt;/p&gt;


	&lt;h3&gt;&lt;span class="caps"&gt;PYTHON&lt;/span&gt;&lt;/h3&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;import&lt;/span&gt; &lt;span class="ident"&gt;time&lt;/span&gt;
&lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;bench&lt;/span&gt;&lt;span class="punct"&gt;():&lt;/span&gt;
    &lt;span class="ident"&gt;a&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;t&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="number"&gt;0&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;time&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;time&lt;/span&gt;&lt;span class="punct"&gt;()&lt;/span&gt;
    &lt;span class="keyword"&gt;for&lt;/span&gt; &lt;span class="ident"&gt;i&lt;/span&gt; &lt;span class="keyword"&gt;in&lt;/span&gt; &lt;span class="ident"&gt;xrange&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="number"&gt;20000000&lt;/span&gt;&lt;span class="punct"&gt;):&lt;/span&gt;
        &lt;span class="ident"&gt;a&lt;/span&gt;&lt;span class="punct"&gt;+=&lt;/span&gt;&lt;span class="ident"&gt;i&lt;/span&gt;
    &lt;span class="keyword"&gt;return&lt;/span&gt; &lt;span class="ident"&gt;time&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;time&lt;/span&gt;&lt;span class="punct"&gt;()-&lt;/span&gt;&lt;span class="ident"&gt;t&lt;/span&gt;
&lt;span class="ident"&gt;result&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="number"&gt;0&lt;/span&gt;
&lt;span class="keyword"&gt;for&lt;/span&gt; &lt;span class="ident"&gt;i&lt;/span&gt; &lt;span class="keyword"&gt;in&lt;/span&gt; &lt;span class="ident"&gt;range&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="number"&gt;10&lt;/span&gt;&lt;span class="punct"&gt;):&lt;/span&gt;
  &lt;span class="ident"&gt;result&lt;/span&gt; &lt;span class="punct"&gt;+=&lt;/span&gt; &lt;span class="ident"&gt;bench&lt;/span&gt;&lt;span class="punct"&gt;()&lt;/span&gt;
&lt;span class="ident"&gt;print&lt;/span&gt; &lt;span class="ident"&gt;result&lt;/span&gt; &lt;span class="punct"&gt;/&lt;/span&gt; &lt;span class="number"&gt;10.0&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;h3&gt;&lt;span class="caps"&gt;RUBY&lt;/span&gt;&lt;/h3&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;bench&lt;/span&gt;
  &lt;span class="ident"&gt;a&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;t&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="number"&gt;0&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="constant"&gt;Time&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;now&lt;/span&gt;
  &lt;span class="number"&gt;20_000_000&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;times&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;i&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt; &lt;span class="ident"&gt;a&lt;/span&gt; &lt;span class="punct"&gt;+=&lt;/span&gt; &lt;span class="ident"&gt;i&lt;/span&gt; &lt;span class="punct"&gt;}&lt;/span&gt;
  &lt;span class="constant"&gt;Time&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;now&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt; &lt;span class="ident"&gt;t&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;span class="ident"&gt;result&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="number"&gt;0&lt;/span&gt;
&lt;span class="number"&gt;10&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;times&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;i&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt; &lt;span class="ident"&gt;result&lt;/span&gt; &lt;span class="punct"&gt;+=&lt;/span&gt; &lt;span class="ident"&gt;bench&lt;/span&gt; &lt;span class="punct"&gt;}&lt;/span&gt;
&lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="ident"&gt;result&lt;/span&gt; &lt;span class="punct"&gt;/&lt;/span&gt; &lt;span class="number"&gt;10&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;h3&gt;&lt;span class="caps"&gt;LUA&lt;/span&gt;&lt;/h3&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_lua "&gt;function bench()
  a = 0
  t = os.time()
  for i = 1, 20000000 do
    a = a + i
  end
  return os.time() - t
end
result = 0
for x = 1,10 do
  result = result + bench()
end
print(result/10)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;h3&gt;&lt;span class="caps"&gt;PHP&lt;/span&gt;&lt;/h3&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_php "&gt;&amp;lt;?php
function bench() {
  $a = 0;
  $t =  time();
  for ($i = 0; $i &amp;lt; 20000000; $i++) $a += $i;
  return time() - $t;
}
$result = 0;
for ($x = 1; $x &amp;lt;= 5; $x++) $result += bench();
print $result / 5.0;
?&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;h3&gt;Wyniki&lt;/h3&gt;


	&lt;ol&gt;
	&lt;li&gt;&lt;strong&gt;Ruby 1.9:       2.0953268 s.&lt;/strong&gt;&lt;/li&gt;
		&lt;li&gt;Lua 5.1:        2.4 s.&lt;/li&gt;
		&lt;li&gt;Python 2.5:     2.49481592178 s.&lt;/li&gt;
		&lt;li&gt;Python 2.4.3:   2.71687791348 s.&lt;/li&gt;
		&lt;li&gt;&lt;span class="caps"&gt;PHP 5&lt;/span&gt;.2:        4.2 s.&lt;/li&gt;
		&lt;li&gt;Ruby 1.8.5:     9.0153751 s.&lt;/li&gt;
	&lt;/ol&gt;


	&lt;p&gt;Jestem ciekaw kiedy wyjdzie &lt;a href="http://i.loveruby.net/d/20060220.html#p10"&gt;Rails dostosowany do Ruby 1.9&lt;/a&gt;. Zapowiada si&#281; bardzo obiecuj&#261;co!&lt;/p&gt;</description>
      <pubDate>Mon, 01 Jan 2007 19:36:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:195b9e84-80ff-47b9-a2ae-38070f3da6f0</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2007/01/01/ruby19-yarv</link>
      <category>PHP</category>
      <category>Python</category>
      <category>Ruby</category>
      <category>lua</category>
      <category>python</category>
      <category>ruby</category>
      <category>php</category>
      <category>yarv</category>
      <category>benchmark</category>
    </item>
  </channel>
</rss>
