<?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: Ruby 1.9 nie jest i (nie b&#281;dzie) przeznaczony do u&#380;ytku publicznego</title>
    <link>http://blog.zabiello.com/articles/2007/12/16/status-rubiego19</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>moje notatki, linki, komentarze</description>
    <item>
      <title>Ruby 1.9 nie jest i (nie b&#281;dzie) przeznaczony do u&#380;ytku publicznego</title>
      <description>&lt;p&gt;Wiele zamieszania i niezrozumienia panuje wok&#243;&#322; maj&#261;cej wkr&#243;tce by&#263; wydanej wersji Rubiego 1.9. Wiemy ju&#380; teraz, &#380;e zawiera wbudowan&#261; wirtualn&#261; maszyn&#281; &lt;span class="caps"&gt;YARV&lt;/span&gt; i jest w testach 3-10x szybszy od Rubiego 1.8.x. Wiele os&#243;b sobie ostrzy z&#281;by na przy&#347;pieszenie aplikacji Rubiego dzia&#322;aj&#261;cych na Ruby 1.9, np. Rails. Nie bardziej b&#322;&#281;dnego.&lt;/p&gt;


	&lt;p&gt;Ot&#243;&#380; &lt;strong&gt;Ruby 1.9 (z za&#322;o&#380;enia) nie jest wersj&#261; do u&#380;ytku publicznego&lt;/strong&gt; (jako naturalne zast&#281;pstwo dla Rubiego 1.8.x). Ten numer wersji to tylko informacja kierowana tylko do developer&#243;w j&#281;zyka Rubiego, &#380;e zamro&#380;ono &lt;span class="caps"&gt;API&lt;/span&gt; wewn&#281;trznych funkcji C i teraz trwa proces jego stabilizacji. Ten krok by&#322; niezb&#281;dny w zwi&#261;zku w integracj&#261; wirtualnej maszyny &lt;span class="caps"&gt;YARV&lt;/span&gt;. Wprowadzi&#322;a ona tak&#261; rewolucj&#281; w wewn&#281;trznej implementacji Rubiego, &#380;e trzeba by&#322;o zaprowadzi&#263; jak najszybciej porz&#261;dek w &lt;span class="caps"&gt;API&lt;/span&gt; aby  wszelkie rozszerzenia w C dzia&#322;aly sp&#243;jnie i stabilnie.&lt;/p&gt;


	&lt;p&gt;Co to wszystko znaczy dla u&#380;ytkownik&#243;w Rubiego czy Rails&#243;w? Po pierwsze, nale&#380;y zapomnie&#263; o tym, &#380;e Rails b&#281;dzie chodzi&#322; na Ruby 1.9, trzeba zaczeka&#263; do Rubiego 2.0 a mo&#380;e i 2.1. Pewnie jaki&#347; rok, trudno powiedzie&#263;. Prawie na pewno, Ruby 2.0 nie b&#281;dzie w pe&#322;ni zgodny z 1.8. Ma za to by&#263; lepszy, szybszy, posiada&#263; pe&#322;ny Unicode itp. Trzeba wi&#281;c b&#281;dzie troch&#281; popracowa&#263; nad dopracowaniem zgodno&#347;ci Rails i innych aplikacji z Ruby 2.0.&lt;/p&gt;


	&lt;p&gt;Je&#347;li kto&#347; chce przy&#347;pieszy&#263; aplikacje webowe dzia&#322;aj&#261;ce w Ruby to mo&#380;e popr&#243;bowa&#263; u&#380;ycia JRuby. Ju&#380; teraz jest on szybszy od klasycznego Rubiego 1.8.x a prace optymalizacyjne dopiero nabieraj&#261; tempa. JRuby 1.1 (ma wyj&#347;&#263; w tym miesi&#261;cu) ma wej&#347;&#263; w dalsz&#261; faz&#281; optymalizacji i odchudzania. To, plus fakt, &#380;e wirtualna maszyna Javy (JVM) sama w sobie jest bardzo mocno zoptymalizowana wydajno&#347;ciowo (tak &#380;e czasem bije na g&#322;ow&#281; C++) powoduje, &#380;e to jest obiecuj&#261;cy kierunek rozwoju.&lt;/p&gt;


	&lt;p&gt;Innym wyj&#347;ciem jest po&#380;egnanie si&#281; z Rails i spr&#243;bowanie konkurencyjnego frameworku &amp;#8211; &lt;a href="http://merbivore.com/"&gt;Merb&lt;/a&gt;. Generalnie jest bardzo podobny do Rails, wi&#281;c migracja jest &#322;atwa. Merb jest za to du&#380;o szybszy, wielow&#261;tkowy i bardziej uporz&#261;dkowany. Oczywi&#347;cie Merb mo&#380;na te&#380; &lt;a href="http://merb.devjavu.com/browser/plugins/jerbivore"&gt;odpala&#263; pod JRuby&lt;/a&gt;, cho&#263; tego jeszcze nie pr&#243;bowa&#322;em.&lt;/p&gt;</description>
      <pubDate>Sun, 16 Dec 2007 03:08:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:ee7d1f2d-d5c1-419e-96c5-ef1cab875e77</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2007/12/16/status-rubiego19</link>
      <category>yarv</category>
      <category>ruby</category>
    </item>
    <item>
      <title>"Ruby 1.9 nie jest i (nie b&#281;dzie) przeznaczony do u&#380;ytku publicznego" by JCoder</title>
      <description>&lt;p&gt;@iddqd: Napisanie tego samego w C spowoduje, &#380;e te 3 minuty zamieni&#261; si&#281; w 20 minut roz&#322;o&#380;onych mniej wi&#281;cej po r&#243;wno w czasie. Java po prostu kumuluje zwalnianie pami&#281;ci w jednym miejscu, co sumarycznie jest wydajniejsze ni&#380; zwalnianie po kawa&#322;ku jak w C. Je&#347;li nie chcecie mie&#263; op&#243;&#378;nienia, wystarczy u&#380;y&#263; wsp&#243;&#322;bie&#380;nego GC (ustawiane za pomoc&#261; kt&#243;rej&#347; opcji -XX:)&lt;/p&gt;</description>
      <pubDate>Fri, 18 Apr 2008 14:15:47 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:94bfa598-cad2-442e-b425-1dd2b7f82df1</guid>
      <link>http://blog.zabiello.com/articles/2007/12/16/status-rubiego19#comment-1573</link>
    </item>
    <item>
      <title>"Ruby 1.9 nie jest i (nie b&#281;dzie) przeznaczony do u&#380;ytku publicznego" by kaminskp</title>
      <description>&lt;p&gt;Jestem Ciekawy co mog&#281; przy pomocy tego j&#281;zyka zdzia&#322;a&#263;. Je&#347;li mo&#380;na oczekuj&#281; odpowiedzi. &lt;a href="mailto:kaminskp@tlen.pl" rel="nofollow"&gt;kaminskp@tlen.pl&lt;/a&gt;
Dzi&#281;kuje.&lt;/p&gt;</description>
      <pubDate>Mon, 18 Feb 2008 15:20:25 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:45d79615-f21d-42d2-b592-6bae549c9dae</guid>
      <link>http://blog.zabiello.com/articles/2007/12/16/status-rubiego19#comment-1404</link>
    </item>
    <item>
      <title>"Ruby 1.9 nie jest i (nie b&#281;dzie) przeznaczony do u&#380;ytku publicznego" by iddqd</title>
      <description>&lt;p&gt;Jestem programist&#261; Python,Java, C++,Ruby.
Pracuj&#281; w portalu z 1 000 000 000 ods&#322;on miesi&#281;cznie.
Java dyskwalifikuje tragiczna obs&#322;uga pami&#281;ci. Zobacz co si&#281; dzieje gdy zajmiesz oko&#322;o 6GB ram (treecache) zwolnisz i zaczniesz przypisywa&#263; dane od nowa. Przez 1-3 min JVM czy&#347;ci pami&#281;&#263;, nie robi w tym czasie nic innego. To samo napisane w C nawet si&#281; nie zaj&#261;knie.&lt;/p&gt;</description>
      <pubDate>Fri, 25 Jan 2008 00:40:28 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:cf77bf14-3a96-4305-b6ff-70c7dfde6560</guid>
      <link>http://blog.zabiello.com/articles/2007/12/16/status-rubiego19#comment-1378</link>
    </item>
    <item>
      <title>"Ruby 1.9 nie jest i (nie b&#281;dzie) przeznaczony do u&#380;ytku publicznego" by Michal</title>
      <description>&lt;p&gt;Poka&#380;cie mi ta Jave szybsza od c, c++&lt;/p&gt;</description>
      <pubDate>Mon, 07 Jan 2008 12:49:06 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:bffea595-6053-446f-8862-da47fa4ec5e4</guid>
      <link>http://blog.zabiello.com/articles/2007/12/16/status-rubiego19#comment-1344</link>
    </item>
    <item>
      <title>"Ruby 1.9 nie jest i (nie b&#281;dzie) przeznaczony do u&#380;ytku publicznego" by Radarek</title>
      <description>&lt;p&gt;Powt&#243;rz&#281; komentarz z innego wpisu na tym blogu (&lt;a href="http://blog.zabiello.com/articles/2007/12/26/ruby19#comment-1324" rel="nofollow"&gt;http://blog.zabiello.com/articles/2007/12/26/ruby19#comment-1324&lt;/a&gt;):&lt;/p&gt;


	&lt;p&gt;Jest i potwierdzenie od samego mistrza: &lt;a href="http://groups.google.com/group/ruby-talk-google/browse_thread/thread/cf2e6fd2cf8159ee#msg_7b402b23b39c6925" rel="nofollow"&gt;http://groups.google.com/group/ruby-talk-google/browse_thread/thread/cf2e6fd2cf8159ee#msg_7b402b23b39c6925&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;W skr&#243;cie: 1.9.0 jest wersj&#261; przej&#347;ciow&#261;, przeznaczon&#261; dla developer&#243;w. Jednak&#380;e kolejne wersje 1.9.x (x &amp;gt;= 1) b&#281;d&#261; przeznaczone do &#347;rodowisk produkcyjnych (oczywi&#347;cie zmiany w 2.0 mog&#261; zaj&#347;&#263;, ale to samo by&#322;oby przy przej&#347;ciu 1.8 -&amp;gt; 2.0). Na wersj&#281; 2.0 mo&#380;emy czeka&#263; jeszcze ca&#322;kiem sporo.&lt;/p&gt;</description>
      <pubDate>Thu, 27 Dec 2007 01:31:13 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:aef8bdcc-87d6-4fbe-8c33-e10cf77ca94b</guid>
      <link>http://blog.zabiello.com/articles/2007/12/16/status-rubiego19#comment-1325</link>
    </item>
    <item>
      <title>"Ruby 1.9 nie jest i (nie b&#281;dzie) przeznaczony do u&#380;ytku publicznego" by Jaros&#322;aw Zabie&#322;&#322;o</title>
      <description>&lt;p&gt;Wydaje mi si&#281;, &#380;e Merb odpalony pod JRuby u&#380;ywa w&#261;tk&#243;w tak jak Java, czyli w pe&#322;ni wykorzysta wiele rdzeni procesora. Za&#347; odpalony spod CRuby/Mongrela u&#380;yje w&#261;tk&#243;w podobnie jak Pylons.&lt;/p&gt;</description>
      <pubDate>Tue, 18 Dec 2007 16:57:30 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:02cbada5-84ab-4411-b3d8-d5fb0bbd0b49</guid>
      <link>http://blog.zabiello.com/articles/2007/12/16/status-rubiego19#comment-1307</link>
    </item>
    <item>
      <title>"Ruby 1.9 nie jest i (nie b&#281;dzie) przeznaczony do u&#380;ytku publicznego" by rsz</title>
      <description>&lt;p&gt;W jakim sensie merb jest wielow&#261;tkowy, bo pytam tu i pytam ca&#322;y czas i nie dosta&#322;em odpowiedzi? Czy to znaczy, &#380;e na procesorze czterordzeniowym mog&#281; liczy&#263; na 4x wi&#281;ksz&#261; przepustowo&#347;&#263;?&lt;/p&gt;</description>
      <pubDate>Tue, 18 Dec 2007 10:43:51 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:2521d882-84ec-4447-919d-e98050f57fa0</guid>
      <link>http://blog.zabiello.com/articles/2007/12/16/status-rubiego19#comment-1305</link>
    </item>
    <item>
      <title>"Ruby 1.9 nie jest i (nie b&#281;dzie) przeznaczony do u&#380;ytku publicznego" by lopex</title>
      <description>&lt;p&gt;@coldpeer, java bywa szybsza od superoptymalizuj&#261;cych kompilator&#243;w c (nie m&#243;wi&#261;c ju&#380; o c++ i gcc bo to jest kompletna tragedia). Ca&#322;y wypas opiera si&#281; na runtimowej analizie wo&#322;a&#324; wirtualnych a nawet ga&#322;&#281;zi warunkowych (c ze swoimi wska&#378;nikami do funkcji czy c++ z funkcjami wirtualnymi maj&#261; po prostu zbyt ma&#322;o informacji &#380;eby je optymalizowa&#263; w locie). Proponuj&#281; poczyta&#263; o global optimizers, template compilers, c1, c2. Java potrafi wygenerowa&#263; du&#380;o lepszy kod pod maszyn&#281; ni&#380; gcc:
&lt;a href="http://www.stefankrause.net/wp/?p=4" rel="nofollow"&gt;http://www.stefankrause.net/wp/?p=4&lt;/a&gt;
&lt;a href="http://www.stefankrause.net/wp/?p=6" rel="nofollow"&gt;http://www.stefankrause.net/wp/?p=6&lt;/a&gt;
Kolejna bol&#261;czka c/c++ to ci&#261;g&#322;e m&#281;czenie systemowego manager&amp;#8217;a pami&#281;ci, java robi to w spos&#243;b du&#380;o bardziej amortyzowany. Java potrafi te&#380; lepiej wykorzysta&#263; PICe, eliminowa&#263; warunki w locie i pozbywa&#263; si&#281; wo&#322;a&#324; wirtualnych. Bardzo du&#380;o optymalizaji wynika z tego &#380;e w Javie nie ma wska&#378;nik&#243;w do wska&#378;nik&#243;w (i innych ficzer&#243;w c/c++), dzi&#281;ki temu kompilator mo&#380;e przyj&#261;&#263; wi&#281;cej za&#322;o&#380;e&#324; i wygenerowa&#263; wydajniejszy kod.&lt;/p&gt;</description>
      <pubDate>Sun, 16 Dec 2007 20:09:01 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:6016b52a-f653-44ec-a4a9-e1df76b181fe</guid>
      <link>http://blog.zabiello.com/articles/2007/12/16/status-rubiego19#comment-1298</link>
    </item>
    <item>
      <title>"Ruby 1.9 nie jest i (nie b&#281;dzie) przeznaczony do u&#380;ytku publicznego" by wijet</title>
      <description>&lt;p&gt;@coldpeer Jarkowi chyba chodzilo o technike &lt;a href="http://pl.wikipedia.org/wiki/JIT_%28informatyka%29" rel="nofollow"&gt;JIT&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Co do Ruby 1.9 to troche szkoda, jeszcze 3 miesiace temu mialem nadzieje ze bedzie to wersja produkcyjna.&lt;/p&gt;</description>
      <pubDate>Sun, 16 Dec 2007 12:40:02 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:41acddcd-97f4-4ed4-bd15-500915ab5ad5</guid>
      <link>http://blog.zabiello.com/articles/2007/12/16/status-rubiego19#comment-1293</link>
    </item>
    <item>
      <title>"Ruby 1.9 nie jest i (nie b&#281;dzie) przeznaczony do u&#380;ytku publicznego" by coldpeer</title>
      <description>&lt;p&gt;&amp;gt;&amp;gt; wirtualna maszyna Javy (JVM) sama w sobie jest bardzo mocno zoptymalizowana wydajno&#347;ciowo (tak &#380;e czasem bije na g&#322;ow&#281; C++)&lt;/p&gt;


	&lt;p&gt;Nie no, bez przesady ;) Gdyby&#347; to powiedzia&#322; o LISPie, by&#322;bym sk&#322;onny uwierzy&#263;, no ale na pewno j&#281;zyk kompilowany do bytecodu nie b&#281;dzie szybszy od kompilowanego do kodu maszynowego.&lt;/p&gt;</description>
      <pubDate>Sun, 16 Dec 2007 11:47:38 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:90894528-dca5-46fa-8eb6-3e95c9e72e7c</guid>
      <link>http://blog.zabiello.com/articles/2007/12/16/status-rubiego19#comment-1291</link>
    </item>
  </channel>
</rss>
