LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> Perl 5.24.0 a vše okolo

Po roce tu dnes máme zase novou major verzi perlu 5. Stručně nahlédneme, co verze 5.24 přináší.

9.5.2016 14:00 | Jiří Václavík | Články autora | přečteno 3513×

Jako každý rok i letos vychází nová verze perlu. Hodně věcí ohledně verzování a souvisejících věcí jsme popsali loni při představování změn v perl 5.22. Loni se verze 5.22 o něco opozdila a release vyšel až na začátek června, což nechtěl Ricardo Signes opakovat a tak letos máme novou major verzi naopak o něco dříve.

Hlavním maintainerem řady 5.24 je tedy opět Ricardo Signes. Je to ale naposledy, v p5p konferenci totiž uvedl, že hlavním "pumpkinem" bude od verze 5.26 Izraelec Sawyer X. Koho zajímá, co je Sawyer za člověka a ovládá ruštinu nebo použije nějaký překladač, může si přečíst 3 roky starý rozhovor s ním.

Změn je letos o něco méně než obvykle, proto bude dnešní článek stručnější. To ale neznamená, že by tam nebylo nic zajímavého - naopak, pokrok verze 5.24 je kvůli rychlosti jedním z největších za posledních mnoho let. Seznam změn je již tradičně v souboru perldelta.

Rychlost

Verze 5.10 byla velmi rychlá a od té doby až do 5.20 se s každou verzí perl mírně zpomaloval. Poté ale byl konečně ve verzi 5.22 udělán obrovský kus práce a rychlost se vrátila tam, kde byla ve verzi 5.10 (a možná ještě o malý kousek dále).

Letos ve verzi 5.24 se vývojáři na výkon opět zaměřili a posunuli ho hned o celou čtvrtinu! Tedy v tom smyslu, že "průměrný program" poběží o čtvrtinu kratší dobu. Hlavně z tohoto důvodu nyní stojí za to vážně uvažovat o upgradu.

Základní aritmetické operace včetně inkrementace by měly být o trochu rychlejší, je rychlejší přiřazování, lehce rychlejší bude i volání podprogramů, case-insensitive jazyky nyní přeskakují kontrolu modifikátoru /i u regulárních výrazů a další optimalizace.

Postfixové dereferencování nyní v jádře jazyka

Od verze 5.20 máme v perlu experimentální featuru postfix dereferencing a tedy po zadání


use experimental 'postderef';

jsme mohli featuru využívat. Od verze 5.24 již experimentální není a předchozí řádek není nadále potřeba.

Článek o perlu 5.20 na linuxsoftu nevyšel a tak se podívejme nyní, o co přesně jde. V předchozích verzích perlu jsme byli zvyklí používat circumfix dereferencing - referenci na pole jsme pro získání pole museli napsat mezi @{ a }. Tedy nějak takto:


my $listref = [1, 2, 3];
@list = @{$listref};

S postfixovým dereferencováním to půjde i takto:


my $listref = [1, 2, 3];
@list = $listref->@*;

Hlavní výhodu vidím v tom, že programátor může psát kontinuálněji a nemusí se vracet, aby před proměnnou přidal levou část circumfixu, což je potřeba každou chvíli.

Za druhé samozřejmě bude nutných méně závorek v zřetězení více dereferencí, což lehce usnadní čitelnost a možná je takový zápis systematičtější, i když to už dost záleží na úhlu pohledu. Lépe než na předchozích ukázkách bez zanořených struktur to lze demonstrovat například na poli polí:


$lol->[2]->@*

Pro zajímavost uveďme, že podobně můžeme získat i poslední index:


my $last_index = $listref->$#*;

Postfixové dereferencování funguje samozřejmě se všemi ostatními datovýmy typy. Místo


&{$coderef};
%{$hashref};
${$scalarref};

můžeme psát


$coderef->&*;
$hashref->%*;
$scalarref->$*;

Nová boundary pro zalomení řádku

Ke stávajícím boundaries představeným ve verzi 5.22 přibyla další: \b{lb}. Jednoduše řečeno, v textu jsou místa, kde je možné zalomit řádek. Právě tato místa nyní budou matchovat kotvu \b{lb}. Detaily o dalších kotvách vyšly v loňském článku.

Tato featura vychází z modulu Unicode::LineBreak.

Dále se lehce mění chování \b{wb} a to má nyní trochu blíže k původnímu \b

Parsování hashbang řádku

Pokud voláme perlový program explicitně s příkazem perl, tj.


perl ./program.pl

nikoliv pouze


./program.pl

pak vynucujeme perlový interpret. Není moc známá věc, že sám perl řádek #! parsuje. Spustíme-li například


> cat program.pl
#!/bin/sh
ls;
> perl program.pl

zobrazí se skutečně seznam souborů v aktuálním adresáři. To proto, že perl předává program jinému interpretu, pokud se řetězec "perl" nevyskytuje na hashbang řádku. S příchodem perlu 6 se toto chování však mění na 'přenechej jinému interpretu i tehdy, pokud navíc hashbang řádek obsahuje řetězec "perl6"'.

Toto sice není nijak extra zajímavá změna, ale rozepisujeme ji zde především proto, že se někdy může hodit informace, jak se příkaz perl zachová, když ho aplikujeme na neperlový soubor.

Experimentální featura autoderef končí

Již delší dobu se ví, že autoderef v perlu končí. Nadále tak není možné volat push, pop, shift, unshift, splice, keys, values a each s parametrem jako odkazem na pole resp. hash. Přesto bylo trochu překvapením, když byla tato featura označena v perlu 5.20 jako experimentální. Důvody jsou však podrobně popsané například na blogpostu na effectiveperlprogramming.com.

S postfixovou dereferencí nicméně bude místo této featury možné napsat něco takového:


push $listref->@*, $element;

my $_ už není možné

Následující řádek po dlouhé a bouřlivé diskuzi na p5p nyní způsobí výjimku:


my $_ = 1;

Lexikální deklarace $_ byla používána v konstrukci given-when, která ale byla zavržena, viz downgrade na experimental/deprecated. Nebudeme to zde rozepisovat, zájemce odkažme na tento blogpost na Effective perl programming. Můžete si přečíst i nesouhlasný názor Reiniho Urbana, autora cperlu (viz dále v článku), který s odstraněním lexikální proměnné $_ nesouhlasí.

Další změny

  • V případě selhání funkce close při editaci souboru (tj. se zápisem do téhož souboru, tzv. in-place edit) bude nyní vyvolána výjimka
  • Podpora pro nové Unicode 8.
  • Lepší synchronizace %ENV a getenv()
  • Nadále nejsou povoleny zanořené deklarace jako například my($x, my($y));.
  • chdir('') již nevrátí domovský adresář, ale vyvolá výjimku; zůstává smysluplnější chdir() bez parametrů.
  • Neviditelné znaky už nesmí být v názvu proměnné (znaky s ordinály 0, 31, 127), což by snad nikoho ani nenapadlo udělat (ale nutno dodat, že třeba v kombinaci se symbolickými referencemi není problém se do této situace dostat).
  • Blok ?[...] uvnitř regulárního výrazu nyní plně UTF-8 kompatibilní i při use locale;.
  • V printf a sprintf lze zadat místo přesnosti znak *. Dané číslo vyjadřující přesnost se pak vezme z odpovídající pozice z parametrů funkce.
  • Lepší vymezení bitových operátorů na číselných resp. řetězcových hodnotách, nově definovaný negativní bitový posun.
  • qr/\N{}/ bez hodnoty v závorce specifikující unikódový znak nyní vyvolá výjimku při use re qw(strict); a \C je z jazyka vyhozený úplně.
  • sysread, syswrite, recv a send nyní vyvolají výjimku pro ovladače s :utf8 vrstvou, protože samy už tuto vrstvu mají a docházelo by tak k chybnému překódování.

Nedávné forky perlu

Aby článěk nezůstal na půli stránky, můžeme pro zajímavost zmínit, že v uplynulých letech se objevily dva forky perlu 5 - stableperl a perl 11 (cperl).

Stableperl je projekt Marca Lehmanna a není to ani tak fork. Je to spíše snapshot perlu 5.22 s několika změnami, které autor udělal, aby jeho moduly (hlavně Coro) fungovaly, protože po vydání perlu 5.22 přestaly být kompatibilní. Bohužel se Coro spoléhalo na nějaké nedokumentované featury. Nejde o moc šťastné řešení, ale údajně jiná skupina vývojářů pracuje na opravě rozbitých modulů, aby fungovaly i v perlu 5.22 a 5.24.

Autorem perlu 11 jsou Will Braswell a Reini Urban. Perl 11 zastřešuje několik projektů. Cílem je vytvořit maximálně modulární fork perlu, který přejme co největší množství featur z perlu 6 tak, aby nebyla narušena kompatibilita s perlem 5.22. Proto ostatně ten název: perl 11 = perl 5 + perl 6. Zároveň je cílem autorů cperl co nejvíce zrychlit.

Dalším projektem v rámci perl 11 je RPerl (Restricted Perl). Jeho autor, Will Braswell, provedl benchmarky pro různé perlové featury a ty nejpomalejší, které provádí nejvíc magie, se rozhodl odstranit. Na webu tvrdí, že takto ořezaný perl je sedminásobně rychlejší než perl 5.22 a prostoru na zrychlování je nadále dost. Na svůj projekt získal i financování. Koho by zajímaly detaily, může zhlédnout přednášku z lednového FOSDEMu.

Měli bychom přejít na perl 6?

Loni konečně vyšla první implementace perlu 6. Je tedy čas opustit perl 5?

Perl 5 tu bude ještě dlouho s námi. Stačí se podívat, kolik souborů v /usr/bin začíná řádkem #!/usr/bin/env perl. Musíme mít na paměti, že perl 6 je zcela jiný jazyk, který sice patří perlové rodiny jazyků, jeho základní filozofie pochází z perlu 5, ale není to perl 5.

Perl 6 zatím teprve začíná. Benchmarky na rychlost jeho první implementace vychází zatím hůře, ale z komunity občas prosákují optimistické prognózy. Uveďme alespoň jeden z mnoha blogpostů na toto téma. Jak ukazuje verze 5.24, určitě se s tím dá leccos udělat.

Perl 6 je modernější a ještě podstatně expresivnější jazyk než perl 5. Dejme mu čas na plné rozvinutí. Jazyk je sice vydán, ale řada věcí okolo potřebuje ještě hodně práce - optimalizace, dokumentace, tutoriály na internetu, knihy atd. Zlepšuje se to a čím více lidí se s perlem 6 seznámí, tím to bude lepší - tak je to s každou exponenciálou.

Seznámit se s perlem 6 rozhodně stojí za to - je to neskutečně bohatý a zajímavě navržený jazyk, obsahuje obrovské množství nových myšlenek a i když někdo nepíše v perlu či ho dokonce nemá rád nebo tvrdí, že perl6 používat nebude, určitě ho to v mnohém obohatí.

Přednášky z FOSDEMu

Zajímá-li vás nejnovější dění okolo perlu, určitě se podívejte také na seznam přednášek z perl devroomu, které se konaly v rámci FOSDEMu 2016. U každé přednášky je záznam a tentokrát jsou dokonce všechny nahrané správně.


Článek je vydán bez honoráře.

Verze pro tisk

Verze pro tisk

pridej.cz

 

DISKUZE

Poděkování 19.9.2016 21:04 Marek Schoř




Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

5.3.2017 19:12 /Redakce Linuxsoft.cz
PR: 23. března proběhne v Praze konferenci na téma Cloud computing v praxi. Hlavními tématy jsou: Nejžhavější trendy v oblasti cloudu a cloudových řešení, Moderní cloudové služby, Infrastruktura současných cloudů, Efektivní využití cloudu, Nástrahy cloudových řešení a jak se jim vyhnout.
Přidat komentář

27.2.2017 22:12 /František Kučera
Pozvánka na 137. sraz OpenAlt – Praha: Tentokrát jsme si pro vás připravili neobvyklou akci. Ve středu 1.3. v 17:30 nás přivítá sdružení CZ.NIC ve svých prostorách v Milešovské ulici číslo 5 na Praze 3, kde si pro nás připravili krátkou prezentaci jejich činnosti. Následně navštívíme jejich datacentrum pod Žižkovskou věží. Provedou nás prostory, které jsou běžnému smrtelníkovi nedostupné!
Po ukončení prohlídky se všchni odebereme do hostince U vodoucha, Jagelonská 21, Praha 3 pochutnat si na některém z vybraných piv či dát si něco na zub. Rezervaci máme od 19:30, heslo je OpenAlt.
Ale pozor! Do prostor datového centra máme omezený přístup, dostane se tam pouze 10 lidí! Takže kdo přijde dříve, ten má přednost, a občanky s sebou! Kdo nebude chtít na prohlídku datového centra, může se pomalu přesunout do hostince U vodoucha a u nepřeberné nabídky piv počkat na ostatní.
Přidat komentář

18.1.2017 0:49 /František Kučera
Členové a příznivci spolku OpenAlt se pravidelně schází v Praze a Brně. Fotky z pražských srazů za uplynulý rok si můžete prohlédnout na stránkách spolku. Příští sraz se koná už 19. ledna – tentokrát je tématem ergonomie ovládání počítače – tzn. klávesnice, myši a další zařízení. Také budete mít příležitost si prohlédnout pražský hackerspace Brmlab.
Přidat komentář

8.1.2017 17:51 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 19. ledna od 18:30 v pražském hackerspacu Brmlab. Tentokrát je tématem srazu ergonomie ovládání počítače – tzn. klávesnice, myši a další zařízení. K vidění bude mechanická klávesnice dasKeyboard, trackball Logitech nebo grafický tablet (a velký touchpad) Wacom. Přineste i vy ukázat svoje zajímavé klávesnice a další HW. V 18:20 je sraz před budovou, v 18:30 jdeme společně dovnitř, je tedy dobré přijít včas. Podle zájmu se později přesuneme do nějaké restaurace v okolí.
Přidat komentář

1.12.2016 22:13 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 8. prosince od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Sraz bude tentokrát tématický. Bude retro! K vidění budou přístroje jako Psion 5mx nebo Palm Z22. Ze svobodného hardwaru pak Openmoko nebo čtečka WikiReader. Přijďte se i vy pochlubit svými legendami, nebo alespoň na pivo. Moderní hardware má vstup samozřejmě také povolen.
Komentářů: 1

4.9.2016 20:13 /Pavel `Goldenfish' Kysilka
PR: Dne 22.9.2016 proběhne v Praze konference Cloud computing v praxi. Tématy bude např. nejnovější trendy v oblasti cloudu a cloudových řešení, provozování ERP v cloudu, o hostování různých typů softwaru, ale třeba i o zálohování dat nabízeném podnikům formou služby.
Přidat komentář

1.9.2016 11:27 /Honza Javorek
Česká konference o Pythonu, PyCon CZ, stále hledá přednášející skrz dobrovolné přihlášky. Máte-li zajímavé téma, neváhejte a zkuste jej přihlásit, uzávěrka je již 12. září. Konference letos přijímá i přednášky v češtině a nabízí pomoc s přípravou začínajícím speakerům. Řečníci mají navíc vstup zadarmo! Více na webu.
Přidat komentář

27.8.2016 8:55 /Delujek
Dnes po 4 letech komunitního vývoje vyšla diaspora 0.6.0.0
diaspora* je open-source, distribuovaná sociální síť s důrazem na soukromý
Více v oficiálním blog-postu
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

24.3.2017 11:54 / Hui
country cottages

16.3.2017 16:33 / BezvaDesign.cz
Re: Hledám grafika do teamu

9.3.2017 11:44 / Jaromir Obr
Re: chyba

18.1.2017 20:18 / martin horky
Spolupraca linuxu a microsoftu

17.1.2017 9:57 / Pavel Hrubeš
Re: Externí USB televizní karta

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2017) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze