Hlavní navigace

Ukvapené vydání Ruby 1.9?

Ruby 1.9 přináší velkou spoustu zajímavých novinek. Například podporu unicode nebo virtuální stroj YARV, díky němuž běží Ruby až čtyřikrát rychleji než dříve. Bohužel ale přináší také velkou řadu nepříjemných problémů především neodladěnost způsobenou přílišnou ukvapeností. Vyplatí se vůbec upgradovat?

Tweetni to Odměnte autora  Jak to funguje?

Ruby?

Ruby je dynamicky typovaný skriptovací jazyk. Na rozdíl od řady dalších jazyků je Ruby stoprocentně objektové, doslova vše je zde objekt. Kořeny Ruby lze hledat v mnoha jazycích. Ruby je silně inpirováno Smalltalkem, Lispem, Perlem, do jisté míry i Pythonem. Je oblíbené zejména kvůli příjemné a neukecané syntaxi, která se snaží být přirozená, aby se vyjadřování myšlenek v Ruby nelišilo od vyjadřování myšlenek v přirozené řeči.

Velké očekávání

Na novou verzi se hledělo s velkým očekáváním, už proto, že předchozí řada 1.8 spatřila světlo světa již roku 2003, potřebovala tedy již nutně aktualizovat a navíc měla nezanedbatelné problémy jako je absence unicode či nepříliš velká rychlost. Tyto problémy by mělo vyřešit Ruby 1.9.

Nová verze 1.9 je verzí stabilní, nikoliv vývojovou, a to navzdory tomu, že devítka je číslo liché. Tedy přesněji, měla být stabilní verzí. Jak poukazuje David Majda, nová verze Ruby bohužel vyšla, aniž by byla řádně odladěna a otestována, což již nyní přináší spoustu problémů a nezanedbatelné množství bugů. Další se jistě objeví v nejbližší době.

„Dlouhé měsíce před vydáním panoval zmatek v tom, co vlastně Ruby 1.9 bude obsahovat a co bude obsahovat až následující verze 2.0. Jisté bylo jen to, že na rozdíl od předchozích „lichých“ verzí měla být verze 1.9 stabilní – což si většina lidí překládala jako „použitelná v produkčním prostředí“. Matz (tvůrce Ruby) také vytrvale prohlašoval, že nové Ruby 1.9 bude hotové během letošních Vánoc“, píše ve svém zápisníku David Majda.

Kompatibilita

Ačkoliv je nové Ruby nekompatibilní se starší řadou 1.8, nepřichází s žádným konverzním nástrojem, který by mohl vývojářům usnadnit přechod jejich projektů na verzi 1.9. A to navzdory tomu, že změny v syntaxi jsou více než kosmetické. A výsledek? Neběhající Ruby on Rails.

Co se zmíněných Rails týče, v současné době není příliš jasné, jak velké problémy jsou a jak dlouho potrvá jejich vyřešení. Podle některých zdrojů však nejsou problémy příliš rozsáhlé a pracuje se na nich, takže snad budou brzy vyřešeny.

Novinky v novém Ruby

Virtuální stroj YARV

Ruby mělo až do verze 1.8.6 naivní interpretaci, což Ruby jako jazyku na rychlosti příliš nepřidalo. Nová verze 1.9 začleňuje dříve samostatný projekt YARV do hlavního stromu Ruby. Praktický význam je v předpokládaném trojnásobném až čtyřnásobném zrychlení Ruby. Dle mého skromného testu tato čísla odpovídají, čímž se Ruby stává dosti rychlým jazykem, dokonce tak rychlým, že je v rychlosti přinejmenším velmi vážným konkurentem Pythonu.

Unicode

Ruby dlouhou dobu nepodporovalo unicode, ačkoliv pochází z Japonska. Nová verze Ruby již podporu unicode obsahuje. Interně však v nepracuje v unicode jako například Java, nýbrž přímým převodem mezi libovolnými dvěma znakovými sadami. Podrobnosti naleznete v našem seriálu Ruby a unicode.

Nové metody a možnosti zápisu

Nové vydání znatelně ovlivnilo syntaxi Ruby. Novinek je spoustu, jejich kompletní přehled naleznete na EigenClass.org, my si uvedeme alespoň některé z nich.

Místo metody to_a je nyní doporučeno používat metodu to_splat. nil.to_splat vrací prázdné pole namísto výjimky.

Potěšilo mne, že nové Ruby odstranilo bug metody require. Ta načítá soubor, pokud není obsažen v proměnné $„, kam se zapisují již načtené soubory. Soubory se do této proměnné daly zapisovat i jako relativní cesty a Ruby tedy soubor ./knihovna načetlo znovu, pokud jste jeho název předali například jako ../projekt/knihovna. Bug je vyřešen tím, že do proměnné $“ se ukládá vždy absolutní cesta.

Experimentální novinky

Protože Ruby 1.9 je napůl cesty k Ruby 2.0, dostaly se do něj také novinky, které mají nádech verze 2.0. Například tento nový zápis hashe:

{ a: "foo" }        # => { :a => "foo" }

Dosti netradiční mi přijde nová alternativní možnost zápisu lambdy, a to pomocí ->. Osobně mi to přijde trochu zvláštní, ale Matzovi se to líbí, tak si tento alternativní zápis jistě najde i další příznivce.

a = ->(b,c){ b + c }
a.call(1,2) # => 3

Poslední novinku, kterou zmíním je, že s Ruby je nyní distribuován i sestavovací systém Rake, takže jej již nebude třeba doinstalovávat skrze balíčkovací systém RubyGems jako doposud.

Existuje i jiná cesta?

Problémy oficiální implementace Ruby nahrávají alternativním implementacím Ruby. V tomto kontextu stojí za zmínku, že v nejbližších dnech vyjde Rubinius 1.0, což je možná nejzajímavější alternativní implementace Ruby vůbec. Rubinius má velmi čistý zdrojový kód, snaží se co nejvíce věcí implementovat v Ruby samotném, je postaven na Smalltalk-like virtuálním stroji a je solidně rychlý. Vývoj jde velmi rychle kupředu a šušká se, že by se časem mohl stát oficiální implementací Ruby.

Závěr

Ruby je vyspělý a dnes již i poměrně slušně rychlý programovací jazyk. Bohužel jeho poslední verze působí spíše rozpaky než nadšení. Nové Ruby není odladěné, obsahuje nezanedbatelné bugy a především na něm nejedou Ruby on Rails. Lze tedy očekávat, že i přesto, že nové Ruby přináší podporu unicode a řeší řadu různých problémů, žádný rychlý přechod na nové Ruby očekávat zatím nelze.

Odkazy


Článek vychází především ze zápisku na EigenClass.org, odkud přejímá i ukázky kódu.

Jakub Šťastný

Jakub Šťastný

Jakub Šťastný byl v letech 2007 až 2008 redaktorem serveru Root.cz. Mezi jeho zájmy patří Linux, programování a typografický systém TeX.

Ohodnoťte jako ve škole:
Průměrná známka 3,09
Tweetni to Odměnte autora  Jak to funguje?

Školení: Obsahová strategie a content marketing

DW - Školeny webcopywritingu
  • Proč je obsahový marketing výrazným trendem
  • Jak navrhnout užitečnou obsahovou strategii
  • Jaký obsah využít a které nástroje vám pomohou
  • Jak zlepšit workflow a výsledky copywritingu

Detailní informace o školení content strategy »

       

Přehled názorů

nerozumné
LO 2. 1. 2008 00:33
Nový
├ 
Re: nerozumné
Rejpal 2. 1. 2008 00:39
Nový
├ 
Re: nerozumné
BLEK. 2. 1. 2008 01:55
Nový
│
├ 
Re: nerozumné
n00b 2. 1. 2008 02:32
Nový
│
└ 
Re: nerozumné
LO 2. 1. 2008 04:21
Nový
│
 
└ 
Re: nerozumné
BLEK. 2. 1. 2008 04:45
Nový
│
 
 
└ 
Re: nerozumné
LO 2. 1. 2008 09:56
Nový
│
 
 
 
└ 
Re: nerozumné
BLEK. 2. 1. 2008 15:30
Nový
│
 
 
 
 
└ 
Re: nerozumné
LO 2. 1. 2008 15:49
Nový
│
 
 
 
 
 
├ 
Re: nerozumné
BoneFlute 2. 1. 2008 18:42
Nový
│
 
 
 
 
 
│
├ 
Re: nerozumné
hejhula 2. 1. 2008 19:16
Nový
│
 
 
 
 
 
│
│
└ 
Re: nerozumné
Rejpal 3. 1. 2008 01:56
Nový
│
 
 
 
 
 
│
│
 
└ 
Re: nerozumné
LO 3. 1. 2008 02:55
Nový
│
 
 
 
 
 
│
├ 
Re: nerozumné
Radim Kolář 2. 1. 2008 21:04
Nový
│
 
 
 
 
 
│
│
├ 
Re: nerozumné
BLEK. 2. 1. 2008 21:44
Nový
│
 
 
 
 
 
│
│
│
└ 
Re: nerozumné
erg 2. 1. 2008 23:24
Nový
│
 
 
 
 
 
│
│
│
 
└ 
Re: nerozumné
BLEK. 3. 1. 2008 00:12
Nový
│
 
 
 
 
 
│
│
└ 
Re: nerozumné
BoneFlute 2. 1. 2008 22:23
Nový
│
 
 
 
 
 
│
└ 
Re: nerozumné
LO 3. 1. 2008 03:07
Nový
│
 
 
 
 
 
│
 
├ 
Re: nerozumné
BLEK. 3. 1. 2008 10:20
Nový
│
 
 
 
 
 
│
 
│
└ 
Re: nerozumné
LO 3. 1. 2008 12:33
Nový
│
 
 
 
 
 
│
 
└ 
Re: nerozumné
BoneFlute 3. 1. 2008 18:09
Nový
│
 
 
 
 
 
│
 
 
└ 
Re: nerozumné
LO 3. 1. 2008 22:06
Nový
│
 
 
 
 
 
│
 
 
 
└ 
Re: nerozumné
BoneFlute 3. 1. 2008 22:56
Nový
│
 
 
 
 
 
│
 
 
 
 
└ 
Re: nerozumné
LO 4. 1. 2008 10:34
Nový
│
 
 
 
 
 
│
 
 
 
 
 
└ 
Re: nerozumné
BoneFlute 4. 1. 2008 15:26
Nový
│
 
 
 
 
 
└ 
Re: nerozumné
BLEK. 2. 1. 2008 22:07
Nový
│
 
 
 
 
 
 
└ 
Re: nerozumné
LO 3. 1. 2008 03:44
Nový
│
 
 
 
 
 
 
 
└ 
kravaťák
BLEK. 3. 1. 2008 10:09
Nový
│
 
 
 
 
 
 
 
 
└ 
Re: kravaťák
Radim Kolář 3. 1. 2008 16:25
Nový
│
 
 
 
 
 
 
 
 
 
└ 
Re: kravaťák
BLEK. 3. 1. 2008 17:53
Nový
│
 
 
 
 
 
 
 
 
 
 
├ 
Re: kravaťák
erg 3. 1. 2008 17:57
Nový
│
 
 
 
 
 
 
 
 
 
 
└ 
Re: kravaťák
LO 7. 1. 2008 11:00
Nový
├ 
Re: nerozumné
Martin Soukup 2. 1. 2008 08:10
Nový
│
├ 
Re: nerozumné
ToM 2. 1. 2008 10:23
Nový
│
└ 
Re: nerozumné
n00b 2. 1. 2008 16:48
Nový
├ 
Re: nerozumné
gilhad Gilhad 2. 1. 2008 11:36
Nový
│
└ 
Re: nerozumné
LO 2. 1. 2008 14:35
Nový
│
 
└ 
Re: nerozumné
gilhad Gilhad 2. 1. 2008 15:16
Nový
│
 
 
└ 
Re: nerozumné
LO 3. 1. 2008 04:21
Nový
├ 
Re: nerozumné
Pavel Stěhule 2. 1. 2008 14:34
Nový
│
├ 
Re: nerozumné
anonymní uživatel 2. 1. 2008 15:07
Nový
│
└ 
Re: nerozumné
LO 2. 1. 2008 15:17
Nový
│
 
├ 
Re: nerozumné
Pavel Stěhule 2. 1. 2008 16:17
Nový
│
 
│
└ 
Re: nerozumné
LO 2. 1. 2008 17:20
Nový
│
 
│
 
└ 
Re: nerozumné
BoneFlute 2. 1. 2008 18:56
Nový
│
 
└ 
Re: nerozumné
Radim Kolář 2. 1. 2008 21:22
Nový
│
 
 
└ 
Re: nerozumné
LO 3. 1. 2008 03:52
Nový
└ 
Re: nerozumné
polymorpheus 2. 1. 2008 22:22
Nový
Uz jedou?
anonymní uživatel 2. 1. 2008 00:40
Nový
1.9 is *development* version
Miro 2. 1. 2008 01:20
Nový
├ 
Re: 1.9 is *development* version
besh 2. 1. 2008 08:43
Nový
│
└ 
Re: 1.9 is *development* version
BVer 2. 1. 2008 13:20
Nový
│
 
└ 
Re: 1.9 is *development* version
David Majda 2. 1. 2008 14:58
Nový
│
 
 
├ 
Re: 1.9 is *development* version
polymorpheus 2. 1. 2008 15:04
Nový
│
 
 
│
└ 
Re: 1.9 is *development* version
polymorpheus 2. 1. 2008 15:14
Nový
│
 
 
├ 
Re: 1.9 is *development* version
Láďa 2. 1. 2008 15:07
Nový
│
 
 
└ 
Re: 1.9 is *development* version
BVer (Pavel Suchmann) 2. 1. 2008 15:13
Nový
└ 
Re: 1.9 is *development* version
A 2. 1. 2008 18:03
Nový
naivní
n00b 2. 1. 2008 02:34
Nový
└ 
Re: naivní
n00b 2. 1. 2008 03:04
Nový
každý názor musí mít titulek
kyknos 2. 1. 2008 09:13
Nový
├ 
Re: každý názor musí mít titulek
Roger 2. 1. 2008 09:56
Nový
│
└ 
Re: každý názor musí mít titulek
Jirka 2. 1. 2008 10:29
Nový
│
 
└ 
Re: každý názor musí mít titulek
newman 2. 1. 2008 14:09
Nový
│
 
 
└ 
Re: každý názor musí mít titulek
LO 2. 1. 2008 17:37
Nový
│
 
 
 
└ 
Re: každý názor musí mít titulek
BLEK. 2. 1. 2008 23:15
Nový
│
 
 
 
 
├ 
Re: každý názor musí mít titulek
LO 3. 1. 2008 04:08
Nový
│
 
 
 
 
│
└ 
Re: každý názor musí mít titulek
Rejpal 3. 1. 2008 13:56
Nový
│
 
 
 
 
│
 
└ 
Re: každý názor musí mít titulek
LO 3. 1. 2008 14:26
Nový
│
 
 
 
 
│
 
 
└ 
Re: každý názor musí mít titulek
BoneFlute 3. 1. 2008 18:18
Nový
│
 
 
 
 
│
 
 
 
└ 
Re: každý názor musí mít titulek
LO 3. 1. 2008 22:07
Nový
│
 
 
 
 
│
 
 
 
 
├ 
Re: každý názor musí mít titulek
BoneFlute 3. 1. 2008 22:59
Nový
│
 
 
 
 
│
 
 
 
 
│
└ 
Re: každý názor musí mít titulek
LO 4. 1. 2008 10:28
Nový
│
 
 
 
 
│
 
 
 
 
│
 
└ 
Re: každý názor musí mít titulek
BoneFlute 4. 1. 2008 16:10
Nový
│
 
 
 
 
│
 
 
 
 
│
 
 
└ 
Re: každý názor musí mít titulek
Rejpal 4. 1. 2008 17:29
Nový
│
 
 
 
 
│
 
 
 
 
│
 
 
 
└ 
Re: každý názor musí mít titulek
LO 4. 1. 2008 18:08
Nový
│
 
 
 
 
│
 
 
 
 
│
 
 
 
 
├ 
Re: každý názor musí mít titulek
Rejpal 4. 1. 2008 18:42
Nový
│
 
 
 
 
│
 
 
 
 
│
 
 
 
 
└ 
Re: každý názor musí mít titulek
BoneFlute 4. 1. 2008 19:31
Nový
│
 
 
 
 
│
 
 
 
 
│
 
 
 
 
 
├ 
Re: každý názor musí mít titulek
Tor 5. 1. 2008 05:55
Nový
│
 
 
 
 
│
 
 
 
 
│
 
 
 
 
 
└ 
Byli u toho
Tor 5. 1. 2008 06:03
Nový
│
 
 
 
 
│
 
 
 
 
│
 
 
 
 
 
 
└ 
Re: Byli u toho
BoneFlute 6. 1. 2008 00:00
Nový
│
 
 
 
 
│
 
 
 
 
│
 
 
 
 
 
 
 
└ 
Re: Byli u toho
Tor 6. 1. 2008 01:13
Nový
│
 
 
 
 
│
 
 
 
 
└ 
Re: každý názor musí mít titulek
ToM 3. 1. 2008 23:47
Nový
│
 
 
 
 
│
 
 
 
 
 
└ 
Re: každý názor musí mít titulek
LO 4. 1. 2008 10:31
Nový
│
 
 
 
 
└ 
Re: každý názor musí mít titulek
Jirka Kosek 3. 1. 2008 11:39
Nový
├ 
Re: každý názor musí mít titulek
krtek 2. 1. 2008 10:00
Nový
│
└ 
Re: každý názor musí mít titulek
Rejpal 2. 1. 2008 17:21
Nový
└ 
Re: každý názor musí mít titulek
Jakub Šťastný 3. 1. 2008 09:50
Nový
Purpose of Ruby 1.9?
Zdeněk Zavadil 2. 1. 2008 11:32
Nový
└ 
Re: Purpose of Ruby 1.9?
Láďa 2. 1. 2008 12:30
Nový
 
└ 
Re: Purpose of Ruby 1.9?
Zdeněk Zavadil 2. 1. 2008 12:40
Nový
 
 
└ 
Re: Purpose of Ruby 1.9?
David Majda 2. 1. 2008 14:59
Nový
 
 
 
└ 
Re: Purpose of Ruby 1.9?
Zdeněk Zavadil 2. 1. 2008 15:57
Nový
Velké, ale opravdu "velké" zklamání
Jan Molič 2. 1. 2008 14:27
Nový
└ 
Re: Velké, ale opravdu "velké" zklamání
Jakub Šťastný 3. 1. 2008 09:54
Nový
 
└ 
Re: Velké, ale opravdu "velké" zklamání
ToM 3. 1. 2008 10:11
Nový
rozcarovan neprofesionalitou autora clanku
polymorpheus 2. 1. 2008 14:55
Nový
└ 
Re: rozcarovan neprofesionalitou autora clanku
David Majda 2. 1. 2008 15:11
Nový
 
├ 
Re: rozcarovan neprofesionalitou autora clanku
polymorpheus 2. 1. 2008 15:29
Nový
 
│
└ 
Re: rozcarovan neprofesionalitou autora clanku
David Majda 2. 1. 2008 16:28
Nový
 
│
 
├ 
Re: rozcarovan neprofesionalitou autora clanku
polymorpheus 2. 1. 2008 16:50
Nový
 
│
 
└ 
Re: rozcarovan neprofesionalitou autora clanku
salam 2. 1. 2008 20:24
Nový
 
└ 
Re: rozcarovan neprofesionalitou autora clanku
ToM 2. 1. 2008 15:38
Nový
1.9 != 1.9.1
xi-xa-o 2. 1. 2008 20:28
Nový
└ 
Re: 1.9 != 1.9.1
Jakub Šťastný 3. 1. 2008 09:57
Nový
jaj
trk 3. 1. 2008 00:48
Nový
Dodatek
David Majda 8. 1. 2008 21:21
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem