Google, potažmo YouTube umožní návrat tvůrcům, kteří byli zablokováni kvůli údajnému šíření dezinformací souvisejících s COVID-19 a volbami. Tvůrci teď mohou požádat o navrácení přístupu. Společnost Alphabet v této souvislosti uvedla, že zákazy byly uděleny kvůli tlaku tehdejší Bidenovy administrativy.
Vývojári z distribúcie Artix, ktorá je postavená na Arch Linuxe, alebo skôr jeho forkom, už skôr prešli na Open-RC init systém, stále však niektoré projekty ako GNOME boli závislé na systemd. Teraz pretiekol pohár trpezlivosti a počnúc GNOME 49, kvôli ktorému komponenta gnome-session je úplne závislá na systemd-init, padlo rozhodnutie na odstránenie GNOME z repozitárov Artixu. Táto zmena sa podľa všetkého týka viac než 90 distribúcií, ktoré tiež nepoužívajú systemd. Viac v príspevku na DistroWatch.
Magazín IEEE Spectrum opět po roce publikoval svůj žebříček programovacích jazyků. Vedou Python, Java, C++, SQL a C#.
Repozitáře pro spolupráci v rámci projektu Fedora se přesunou z Pagure na nově vzniklý Fedora Forge. Ten stejně jako třeba Codeberg běží na softwaru Forgejo, které bylo už před časem vybráno jako náhrada za Pagure. Pagure pochází z dílny Fedory, ale mimo ni se příliš neuchytil. Jeho vývoj a údržba byly náročné a Fedora se rozhodla jít cestou úspěšnějšího projektu, který má větší základnu přispěvatelů.
Byla vydána (𝕏) nová verze 2025.3 linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux (Wikipedie). Přehled novinek se seznamem nových nástrojů v oficiálním oznámení na blogu.
V IT4Innovations národním superpočítačovém centru byl dnes slavnostně spuštěn první český kvantový počítač VLQ disponující 24 fyzickými qubity s unikátní hvězdicovou topologií. Systém dodala společnost IQM Quantum Computers a jeho celková pořizovací cena činila přibližně 125 milionů korun.
Výrobce čipů Nvidia chce investovat až 100 miliard dolarů (přes dva biliony Kč) do společnosti zaměřené na umělou inteligenci OpenAI. Firmy o tom informují v tiskové zprávě. Oznámené partnerství přichází v době, kdy se mezi technologickými giganty a start-upy zostřuje konkurence o zajištění přístupu k energii a čipům potřebným pro rozvoj umělé inteligence (AI).
Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 157 (pdf).
Společnost Cloudflare oznámila, že sponzoruje nezávislý webový prohlížeč Ladybird a linuxovou distribuci pro vývojáře Omarchy (Arch Linux s dlaždicovým správcem oken Hyprland).
Společnost XTX Markets zabývající se algoritmickým obchodováním pro své potřeby vyvinula a dnes představila a otevřela souborový systém TernFS. Zdrojové kódy jsou k dispozici na GitHubu. Vývoj TernFS začal počátkem roku 2022. Od léta 2023 jej XTX Markets používá v produkčním prostředí.
Vytvoříme test jazyka:
abc> cat in.abc (1 + 3) * 2
Překontrolujeme syntaktický strom:
abc>../../parrot abc.pbc --target=parse in.abc "parse" => PMC 'ABC::Grammar' => "(1 + 3) * 2" @ 0 { <statement_list> => PMC 'ABC::Grammar' => "(1 + 3) * 2" @ 0 { <statement> => ResizablePMCArray (size:1) [ PMC 'ABC::Grammar' => "(1 + 3) * 2" @ 0 { <expression> => PMC 'ABC::Grammar' => "(1 + 3) * 2" @ 0 { <expr> => PMC 'PGE::Match' => "*" @ 8 { <type> => "infix:*" <top> => Hash { "arity" => 2, "assoc" => "left", "expect" => 258, "looser" => "infix:^", "match" => "PGE::Match", "name" => "infix:*", "pirop" => "n_mul", "precclose" => "<<<<=", "precedence" => \parse[0]["precclose"], "syncat" => 96 } [0] => PMC 'PGE::Match' => "(" @ 0 { <type> => "circumfix:( )" <top> => Hash { "arity" => 1, "assoc" => "left", "equiv" => "term:", "expect" => 257, "keyclose" => ")", "match" => "PGE::Match", "name" => "circumfix:( )", "pirop" => "set", "precclose" => "=", "precedence" => \parse[0]["precclose"], "syncat" => 144 } [0] => PMC 'PGE::Match' => "+" @ 3 { <type> => "infix:+" <top> => Hash { "arity" => 2, "assoc" => "left", "expect" => 258, "looser" => "infix:*", "match" => "PGE::Match", "name" => "infix:+", "pirop" => "n_add", "precclose" => "<<<<<=", "precedence" => \parse[0]["precclose"], "syncat" => 96 } [0] => PMC 'ABC::Grammar' => "1" @ 1 { <integer> => PMC 'ABC::Grammar' => "1" @ 1 <type> => "term:" <top> => Hash { "assoc" => "left", "expect" => 513, "match" => "PGE::Match", "name" => "term:", "parsed" => PMC 'Sub' { ... }, "precclose" => "=", "precedence" => \parse[0]["precclose"], "syncat" => 16 } } [1] => PMC 'ABC::Grammar' => "3" @ 5 { <integer> => PMC 'ABC::Grammar' => "3" @ 5 <type> => "term:" <top> => \parse[0] } } } [1] => PMC 'ABC::Grammar' => "2" @ 10 { <integer> => PMC 'ABC::Grammar' => "2" @ 10 <type> => "term:" <top> => \parse[0] } } } } ] } }
Překontrolujeme AST:
abc>../../parrot abc.pbc --target=past in.abc "past" => PMC 'PAST::Stmts' { <source> => "(1 + 3) * 2" <pos> => 0 [0] => PMC 'PAST::Op' { <name> => "saynum" <pasttype> => "call" [0] => PMC 'PAST::Op' { <pasttype> => "bind" [0] => PMC 'PAST::Var' { <name> => "last" <scope> => "package" <lvalue> => 1 } [1] => PMC 'PAST::Op' { <name> => "infix:*" <pasttype> => undef <pirop> => "n_mul" <lvalue> => undef <source> => "*" <pos> => 8 [0] => PMC 'PAST::Op' { <name> => "circumfix:( )" <pasttype> => undef <pirop> => "set" <lvalue> => undef <source> => "(" <pos> => 0 [0] => PMC 'PAST::Op' { <name> => "infix:+" <pasttype> => undef <pirop> => "n_add" <lvalue> => undef <source> => "+" <pos> => 3 [0] => PMC 'PAST::Val' { <value> => "1" <returns> => "Integer" <source> => "1" <pos> => 1 } [1] => PMC 'PAST::Val' { <value> => "3" <returns> => "Integer" <source> => "3" <pos> => 5 } } } [1] => PMC 'PAST::Val' { <value> => "2" <returns> => "Integer" <source> => "2" <pos> => 10 } } } } }
Případně překontrolujeme i POST:
abc>../../parrot abc.pbc --target=post in.abc "post" => PMC 'POST::Ops' { <source> => "(1 + 3) * 2" <pos> => 0 <result> => PMC 'POST::Ops' { <source> => null <pos> => \post <result> => "$P14" [0] => PMC 'POST::Ops' { <source> => \post <pos> => \post <result> => PMC 'POST::Op' { <pirop> => "set_global" <result> => PMC 'POST::Ops' { <source> => "*" <pos> => 8 <result> => "$P13" [0] => PMC 'POST::Ops' { <source> => "(" <pos> => 0 <result> => "$P12" [0] => PMC 'POST::Ops' { <source> => "+" <pos> => 3 <result> => "$P11" [0] => PMC 'POST::Ops' { <source> => "1" <pos> => 1 <result> => "$P10" [0] => PMC 'POST::Op' { <pirop> => "new" [0] => "$P10" [1] => "\"Integer\"" } [1] => PMC 'POST::Op' { <pirop> => "assign" [0] => "$P10" [1] => "1" } } [1] => PMC 'POST::Ops' { <source> => "3" <pos> => 5 <result> => "3" } [2] => PMC 'POST::Op' { <pirop> => "n_add" [0] => "$P11" [1] => \post [2] => \post } } [1] => PMC 'POST::Op' { <pirop> => "set" [0] => "$P12" [1] => \post } } [1] => PMC 'POST::Ops' { <source> => "2" <pos> => 10 <result> => "2" } [2] => PMC 'POST::Op' { <pirop> => "n_mul" [0] => "$P13" [1] => \post [2] => \post } } [0] => "\"last\"" [1] => \post } [0] => \post [1] => \post } [1] => PMC 'POST::Op' { <result> => "$P14" <pirop> => "call" [0] => "\"saynum\"" [1] => "$P13" } } [0] => \post }
Koukneme na "výsledný" PIR pro Parrot VM:
abc>../../parrot abc.pbc --target=pir in.abc .sub "anon" new $P10, "Integer" assign $P10, 1 n_add $P11, $P10, 3 set $P12, $P11 n_mul $P13, $P12, 2 set_global "last", $P13 $P14 = "saynum"($P13) .end
A spustíme test:
abc>../../parrot abc.pbc in.abc 8
A to je vše, přátelé. Funguje to. Tádí dádí da.
Nyní se můžeme vrhnout na kompilátor dalšího jazyka, dodělat něco z TODO pro abc nebo jen sledovat další pokrok Patricka R. Michauda a dalších na cestě k Perlu 6.
Tiskni
Sdílej: