LINUXSOFT.cz Přeskoč levou lištu

ARCHIV



   

> 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 13850×

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ů

28.11.2018 23:56 /František Kučera
Prosincový sraz spolku OpenAlt se koná ve středu 5.12.2018 od 16:00 na adrese Zikova 1903/4, Praha 6. Tentokrát navštívíme organizaci CESNET. Na programu jsou dvě přednášky: Distribuované úložiště Ceph (Michal Strnad) a Plně šifrovaný disk na moderním systému (Ondřej Caletka). Následně se přesuneme do některé z nedalekých restaurací, kde budeme pokračovat v diskusi.
Komentářů: 1

12.11.2018 21:28 /Redakce Linuxsoft.cz
22. listopadu 2018 se koná v Praze na Karlově náměstí již pátý ročník konference s tématem Datová centra pro business, která nabídne odpovědi na aktuální a často řešené otázky: Jaké jsou aktuální trendy v oblasti datových center a jak je optimálně využít pro vlastní prospěch? Jak si zajistit odpovídající služby datových center? Podle jakých kritérií vybírat dodavatele služeb? Jak volit vhodné součásti infrastruktury při budování či rozšiřování vlastního datového centra? Jak efektivně datové centrum spravovat? Jak co nejlépe eliminovat možná rizika? apod. Příznivci LinuxSoftu mohou při registraci uplatnit kód LIN350, který jim přinese zvýhodněné vstupné s 50% slevou.
Přidat komentář

6.11.2018 2:04 /František Kučera
Říjnový pražský sraz spolku OpenAlt se koná v listopadu – již tento čtvrtek – 8. 11. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma umění a technologie, IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář

4.10.2018 21:30 /Ondřej Čečák
LinuxDays 2018 již tento víkend, registrace je otevřená.
Přidat komentář

18.9.2018 23:30 /František Kučera
Zářijový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 20. 9. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář

9.9.2018 14:15 /Redakce Linuxsoft.cz
20.9.2018 proběhne v pražském Kongresovém centru Vavruška konference Mobilní řešení pro business. Návštěvníci si vyslechnou mimo jiné přednášky na témata: Nejdůležitější aktuální trendy v oblasti mobilních technologií, správa a zabezpečení mobilních zařízení ve firmách, jak mobilně přistupovat k informačnímu systému firmy, kdy se vyplatí používat odolná mobilní zařízení nebo jak zabezpečit mobilní komunikaci.
Přidat komentář

12.8.2018 16:58 /František Kučera
Srpnový pražský sraz spolku OpenAlt se koná ve čtvrtek – 16. 8. 2018 od 19:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát jsou tématem srazu databáze prezentaci svého projektu si pro nás připravil Standa Dzik. Dále bude prostor, abychom probrali nápady na využití IoT a sítě The Things Network, případně další témata.
Přidat komentář

16.7.2018 1:05 /František Kučera
Červencový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 7. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát bude přednáška na téma: automatizační nástroj Ansible, kterou si připravil Martin Vicián.
Přidat komentář

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

> Poslední diskuze

31.7.2023 14:13 / Linda Graham
iPhone Services

30.11.2022 9:32 / Kyle McDermott
Hosting download unavailable

13.12.2018 10:57 / Jan Mareš
Re: zavináč

2.12.2018 23:56 / František Kučera
Sraz

5.10.2018 17:12 / Jakub Kuljovsky
Re: Jaký kurz a software by jste doporučili pro začínajcího kodéra?

Více ...

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