Společnost Meta na dvoudenní konferenci Meta Connect 2025 představuje své novinky. První den byly představeny nové AI brýle: Ray-Ban Meta (Gen 2), sportovní Oakley Meta Vanguard a především Meta Ray-Ban Display s integrovaným displejem a EMG náramkem pro ovládání.
Po půl roce vývoje od vydání verze 48 bylo vydáno GNOME 49 s kódovým názvem Brescia (Mastodon). S přehrávačem videí Showtime místo Totemu a prohlížečem dokumentů Papers místo Evince. Podrobný přehled novinek i s náhledy v poznámkách k vydání a v novinkách pro vývojáře.
Open source softwarový stack ROCm (Wikipedie) pro vývoj AI a HPC na GPU od AMD byl vydán ve verzi 7.0.0. Přidána byla podpora AMD Instinct MI355X a MI350X.
Byla vydána nová verze 258 správce systému a služeb systemd (GitHub).
Byla vydána Java 25 / JDK 25. Nových vlastností (JEP - JDK Enhancement Proposal) je 18. Jedná se o LTS verzi.
Věra Pohlová před 26 lety: „Tyhle aféry každého jenom otravují. Já bych všechny ty internety a počítače zakázala“. Jde o odpověď na anketní otázku deníku Metro vydaného 17. září 1999 na téma zneužití údajů o sporožirových účtech klientů České spořitelny.
Byla publikována Výroční zpráva Blender Foundation za rok 2024 (pdf).
Byl vydán Mozilla Firefox 143.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Nově se Firefox při ukončování anonymního režimu zeptá, zda chcete smazat stažené soubory. Dialog pro povolení přístupu ke kameře zobrazuje náhled. Obzvláště užitečné při přepínání mezi více kamerami. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 143 bude brzy k dispozici také na Flathubu a Snapcraftu.
Byla vydána betaverze Fedora Linuxu 43 (ChangeSet), tj. poslední zastávka před vydáním finální verze, která je naplánována na úterý 21. října.
Multiplatformní emulátor terminálu Ghostty byl vydán ve verzi 1.2 (𝕏, Mastodon). Přehled novinek, vylepšení a nových efektů v poznámkách k vydání.
sed, awk, grep,…
používat tzv. Perl one-liners. U mě to došlo tak daleko, že místo toho abych zjišťoval jak escapuje echo
, použiji raději něco jako perl6 -e 'say join "\n", "a\tb", "1\t2"'
. Ale samozřejmě nic vám nebrání, když uznáte za vhodné, tyto one-liners kombinovat s nástroji jako find, column,…
.
-e
, za kterým následuje kód Perlu 6, který se spustí.
perl6 -e 'say ((237/75+162/3)/(9+54)).nude.join: "/" ;' #1429/1575 perl6 -e 'say "larry wall".wordcase;' #Larry WallDalšími užitečné přepínače jsou
-n
a -p
, které automaticky přidají smyčku přes všechny řádky, -p
je na konci ještě vytiskne.
history|perl6 -ne '.say if m:r:s/^^perl6 "-"ne>>/ && /:r <<if>> /' #vytiskni řádky které začínají na perl6 -ne a obsahují slovo if perl6 -ne '.say if /"<"pre>>/ ff /"<""/"pre">"/' naucte_me_Perl_6_III.html #vytiskni řádky ohraničené značkou pre xsel|perl6 -pe '.=trim' #odstraní mezery před a za řádkem perl6 -pe 's:g/wamba/wambash/' /etc/passwd #nahradí wamba za wambashDalší one-liners v Perlu 6 najdete i na githubu Davida Farrella.
line, slurp,…
, implicitně čtou se standardního vstupu a pokud je zadán parametr, tak se souborů, které májí názvy jako parametry. Ale k parametrům na příkazové řádce můžeme přistupovat i pomocí @*ARGS
, nebo pomocí definice podprogramu MAIN
. Se standardním vstupem/výstupem můžeme manipulovat pomocí proměnných $*IN, $*OUT
.
cat soubor1|perl6 -e 'say lines.elems' #počet řádků v soubor1 perl6 -e 'say lines.elems' soubor1 #totéž cat soubor1|perl6 -e 'say lines.elems' soubor2 soubor3 #počet řádků v soubor2 + v soubor3 cat soubor1|perl6 -e 'say $*IN.lines.elems' soubor2 soubor3 #počet řádků v soubor1 cat soubor1|perl6 -e 'say @*ARGS[1].IO.lines.elems' soubor2 soubor3 #počet řádků v soubor3 cat soubor1|perl6 -e 'sub MAIN ($,$soubor) { say $soubor.IO.lines.elems }' soubor2 soubor3 #totéž
@a.join: "\n"
, tak další možností je užít tzv. feed operátor ==>
, popř. <==
, který se nejčastěji používá k práci s poli.
perl6 -e 'say() <== join "\n" <== ^10' perl6 -e '^10 ==> join "\n" ==> say()' perl6 -e '^10 ==> { @^a Z+ @^a[1.. *] }() ==> sum() ==> say()' #81Kromě ntic jsou v Perlu 6 i páry
a => 12, :a<12>, :12a
, které se skládají s klíče a hodnoty. Jedna věc, kterou jsem si hned oblíbil, je push
párů do asociativního pole.
perl6 -e 'say (%).push: (a => 3, b => 10, :a<12>, :21a);' #{a => [3 12 21], b => 10} perl6 -e 'say (%).push: <a b b c a c> Z=> 1 .. *' #{a => [1 5], b => [2 3], c => [4 6]}Povšimněte si jak jsme použili anonymní proměnnou asociativního pole
%
, kterou nemusíme definovat. Podobně by jsme mohli použít pro push
do pole @
, nebo pro práci s čísly, resp. řetězci $
.
perl6 -e 'say (@).push: "a", "b", "c"' #[a b c] xsel|perl6 -pe '$_ [R~]= $++ ~ ","' #očísluje jednotlivé řádky
one-linerů
, které budou sčítat čísla v pátém sloupci podle tabulátoru, před řádkem --
.
První si vygenerujeme testovací data:
perl6 -e 'use Inline::Perl5; use Data::Random:from<Perl5> <:all>; ( loop { join "\t", rand_words(:2min :3max)>>.tc.join(" "), rand_datetime(), (^100).roll(4), rand_words() } ).head(1000).rotor((^20+1).roll(10)).&cross("--")>>.say ' >>Plocha/DATA.txtV diskuzi pod prvním blogem o Perlu 6 jsem si stěžoval, že načítání
Inline::Perl5
je neúměrně dlouhé. Tady byla sjednána náprava a již to trvá méně než vteřinu. Nicméně vygenerovaní cca 1000 položek předešlým one-linerem
trvá více než 30 vteřin.
Testovací data vypadají přibližně takto:
Festive Journeyman 2016-11-05 22:04:01 34 68 17 84 piss Frightens Astray 2016-09-14 22:41:45 5 2 93 84 reprograms Cards Optima Fisher 2016-09-18 12:45:06 85 29 72 40 transitivity -- Presumably Gore 2016-05-30 09:29:56 7 49 68 69 archipelagoes Soccer Devotions 2016-10-03 22:13:15 64 79 23 88 delaying -- Footfall Bliss 2016-07-02 17:20:29 29 22 33 2 connect Merely Transcends Moline 2016-08-15 13:36:36 87 94 9 14 pounce Advocated Compliments Sputter 2016-05-11 00:04:53 15 38 22 69 inconsiderate -- Promotes Tread Complexes 2016-08-18 17:38:55 1 47 91 41 devised --První řešení napodobí to v Perlu 5 ze zmíněné diskuze. Použijeme přepínač
-n
, zapamatujeme si předešlý řádek, a pokud současný řádek je roven --
, tak přičteme jeho pátý sloupec do $sum
. Nakonec $sum
vypíšeme.
perl6 -ne 'state $pred; state $sum += $pred.split("\t").[4] if $_ eq "--"; $pred=$_; END {say $sum}' Plocha/DATA.txtV druhém řešení místo každého řádku budeme brát dvojici
řádek, následující_řádek
. Vyfiltrujeme ty dvojici které mají první prvek roven --
a následně s nultého prvku vybereme 5. sloupec, sečteme a vytiskneme.
perl6 -e 'lines().rotor( 2 => -1 ) ==> grep *.[1] eq "--" ==> map *.[0].split("\t").[4] ==> sum() ==> say() ' Plocha/DATA.txtDalší řešení pracuje s páry ve tvaru
následující_řádek => řádek
a použijeme push
do asociativního pole. Vybereme prvek (pole) odpovídající klíči --
, vybereme 5. sloupce, sečteme a vytiskneme.
perl6 -e '(%).push( lines().&{ @^a[1 .. *] Z=> @^a } ).<-->.map( *.split("\t").[4] ).sum.say' Plocha/DATA.txtTaké se můžeme najít regulární výraz, který přímo vybere pátý sloupec před řádkem
--
.
perl6 -e 'slurp.comb(/:r^^[\T+\t] ** 4 <( \d+ )> \N*\n "--" \n/).sum.say' Plocha/DATA.txtPoslední řešení rozdělí data pomocí
--\n
. Poté z jednotlivých částí vezme pátý sloupec posledního řádku, sečte, vytiskne.
perl6 -e 'slurp.split("--\n", :skip-empty).map( *.lines.[*-1].split("\t").[4] ).sum.say' Plocha/DATA.txt
perl6 -e 'unit sub MAIN; spurt $^file ~ ++$, .join: "\n" for $^file.IO.lines.permutations' pok.txtNalezení duplikátních řádků.
perl6 -e '(%).push( slurp.lines.pairs.invert ).grep( *.value.elems > 1).sort( *.value.elems )>>.say' soubor.txtNahrazení části textového souboru jiným.
perl6 -e 'unit sub MAIN; my @soubor1 = $^soubor1.IO.lines; say join "\n", @soubor1, $^soubor2.IO.lines.[@soubor1.elems .. *]' pok.txt soubor.txtBash - násobení po řádcích
perl6 -ne '$_ ==> split "x" ==> map (* * 1.328).round ==> join "x" ==> say()' soubor.txt perl6 -ne '.split("x").map( * * 1.328 )>>.round.join("x").say' soubor.txt
Tiskni
Sdílej:
perl6 -e 'print "a"; sleep(5); say "b";'vytiskne
a
a za pět vteřin b
.
Oproti Perl 5 verzi
perl -E 'print "a"; sleep(5); say "b";'která vytiskne až po pěti vteřinách
ab
.
Nicméně v Sinopsis je napsáno, že by autoflush, měl fungovat, až po zapnutí $*OUT.autoflush
, popř. by měli jít všechny data najednou uvolnit pomocí flush
.
autoflush
je v odstraněných funkcích a je tam napsáno, že je to ponecháno na implementaci. Vypadá to, že Rakudo flushuje automaticky. Kdyby náhodou někde ne, tak ta metoda flush
by měla funguvat.