V jádře Linux byla nalezena a v upstreamu již byla opravena kritická zranitelnost GhostLock aneb CVE-2026-43499. Lokálnímu uživateli umožňuje získat práva roota a také obejít kontejnerovou izolaci. Zranitelnost existovala v Linuxu 15 let, tj. od roku 2011, od Linuxu verze 2.6.39.
Evropská komise předběžně shledala, že návykový design aplikací Instagram a Facebook od americké společnosti Meta porušuje unijní nařízení o digitálních službách (DSA). Návykový design zahrnuje například takzvané nekonečné posouvání, automatické přehrávání videí, tzv. push notifikace, kdy aplikace uživatele vybízí k návratu do jejího prostředí, či vysoce personalizovaný algoritmus, který rychle pozná, co uživatele baví a snaží
… více »Byla vydána verze 1.97.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.
Švýcarská společnost Punkt. má nově v nabídce telefon Punkt. MC03. Telefon byl navržen ve Švýcarsku s důrazem na soukromí a digitální suverenitu a vyroben v Německu. V telefonu běží operační systém AphyOS (Apostrophy OS) založený na AOSP (Android Open Source Project) 15. Cena telefonu je 745 eur.
TypeScript (Wikipedie), tj. JavaScript rozšířený o statické typování a další atributy, byl vydán v nové verzi 7.0. Kompilátor byl kvůli výkonu přepsán z TypeScriptu do Go.
Europarlament podpořil pozměněnou verzi výjimky známé jako „chat control 1.0“ umožňující firmám skenovat soukromou komunikaci na internetu kvůli ochraně dětí před zneužitím. Pozměňovací návrhy přijaté europoslanci však počítají s tím, že z výjimky bude vyřazena šifrovaná komunikace. Výjimka přestala platit začátkem dubna poté, co se Evropský parlament a Rada EU nedokázaly shodnout na jejím prodloužení. Rada následně přijala
… více »Nejnovější X.Org X server 21.1.24 a Xwayland 24.1.13 řeší 2 bezpečnostní chyby.
Clement "Clem" Lefebvre publikoval souhrn dění v Linux Mintu za červen 2026. Vypíchnuta je vylepšená podpora Waylandu. Už není považována za experimentální. V příští verzi Linux Mintu, plánována je na Vánoce, bude běh Cinnamonu plně podporován na X11 i Waylandu. V květnu na vývoj Linux Mintu přispělo 611 dárců celkovou částkou 19 612 dolarů. Dalších 2 326 patronů přispělo na Patreonu celkovou částkou 5 334 dolarů.
V Linuxu v KVM byla nalezena a v upstreamu již byla opravena kritická zranitelnost Januscape aneb CVE-2026-53359. Root na hostovaném počítači (virtuální stroj) může obejít izolaci a získat plnou kontrolu nad hostitelským systémem (DoS útok nebo vzdálené spuštění kódu s právy roota). Na obou hlavních architekturách – Intel i AMD. Zranitelnost v Linuxu existovala téměř 16 let (od srpna 2010 do června 2026).
Tribunál Soudního dvora Evropské unie dnes zamítl několik žalob, v nichž se americká společnost Apple ohrazovala proti pravidlům fungování velkých technologických společností na unijním trhu. Applu se nelíbilo, že jeho obchod s aplikacemi a operační systém iOS mají podléhat přísnějším povinnostem jen proto, že Brusel firmu považuje za takzvaného gatekeepera, tedy strážce přístupu.
V minulom dieli seriálu o HPCS jazyku Chapel, sme si prešli inštaláciu. Po inštalácii odporúčam vybrať si nejaký editor. Za mňa najbezproblémovejší bol (neo)vim (u mňa konkrétne varianta VIMu https://nvchad.com/ ). Treba teda switchnuť na Vim / Neovim prípadne Emacs (VSCode ako editor pre Chapel neodporúčam, tam je totiž našepkávanie a type hinting polofunkčný).
Dnes si teda pozrieme, niektoré bežné vlastnosti jazyka, ktorý vznikol ako vedlajší produkt iniciatívy DARPA High Productivity Computing Systems, ktorá mala za ciel zvýšiť produktivitu superpočítačov do roku 2010. Spolu s ním vznikli aj jazyky ako Fortress (od Sun Microsystems / dnes Oracle) a X10 (od IBM), ktoré sú nemenej zaujímavé. Ale nepredbiehajme. Na začiatok dnešného dielu sa zameriame na polia a domény. Už práca s poľami nám ukáže, že Chapel je jazyk doslova z inej galaxie.
Vidieť že vývojári neurobili len ďalší z rady klonov mainstreamových jazykov ale naozaj premýšľali nad tým ako programátorom zjednodušiť život.
Pozn: Pre porovnanie jednoduchosti zápisu uvediem pár príkladov aj v imperatívnom JS a funkcionálnom F#.
Už len taká drobnosť: Máme k dispozícii skutočné viac-rozmerné polia a u nich si vieme stanoviť rozsahy, takže polia môžeme indexovať od 0, 1, 3.14 alebo -150. Všetky bežné jazyky, ktoré majú pôvod v C, alebo su ním inšpirované (napr. C++, JS, C#, Rust, Java, Python, F#) indexujú polia vždy od 0, tí čo ale skúšali jazyky z inej rodiny ako C...Jazyky ako napr Fortran, Pascal, julia, Modula, Algol, Basic istotne poznajú aj možnosť definovať si rozsah poľa, aj možnosť definovať si viac-dimenzionálne polia, sktorými sa inak pracuje omnoho pohodlnejšie ako s C-čkoidným poľom polí.
JS:
var arr = [1, 2, 3];
console.log("arr[0]", arr[0]); // vypíše 1 kedže indexovanie je od 0
console.log("arr[3]", arr[3]); // vypíše undefined kedže sme mimo rozsah
console.log("arr", arr); // vypíšeme si celé pole
Chapel:
var arr:[{0..2}] int = 1..3; // literal 1..3 nam urcuje rozsah (range 1 .. 3 ktory môžeme priradiť do poľa)
writeln("arr[0]", arr[0]); // vypíše 1 kedže indexovanie je od 0
writeln("arr[3]", arr[2]); // vypíše 0 keďže sme mimo rozsah
writeln("arr", arr); // vypíšeme si celé pole
Ak náš index smeruje mimo rozsah, pole vráti defaultnú hodnotu pre daný typ položky: napríklad 0 pre celočíselný typ "int" (NA TOTO POZOR!!!). Toto je ďalšia zaujímavá vlastnosť jazyka. Polia sa inicializujú na defaultnú hodnotu a dokonca ju vracajú aj tam kde sme nič nealokovali. V mainstreamových jazykoch ako C++, Java, C# môže byť v alokovanej pamati prakticky čokoľvek. Funkcionalne jazyky majú na kontainery ako Array, List, Seq, Set špeciálne knižničné funkcie ako Array.init Array.create ktoré umožňujú inicializovať pole aj s defaultnou hodnotou. Chapel ale nič také nepotrebuje, proste ak chcem všetkým položkám poľa nastaviť nejakú hodnotu, urobím to takto:
var arr:[{1..3}] int;
writeln(arr); // 0 0 0
arr = 3.14; // všetky položky pola majú hodnotu 3.14
arr = arr * arr; // všetky položky pola majú druhú mocninu 3.14
arr = 0..2; // arr[1] má hodnotu 0, arr[2] má hodnotu 1, arr[3] má hodnotu 2
proc sqr(n) {
return n * n;
}
arr = sqr(arr); // na všetky položky pola sa fcia sqr
writeln(arr); // 0, 1, 4
takže zápis v jazyku chapel:
arr = sqr(arr);
by sme v JS museli zapísať takto:
arr = arr.map(x => sqr(x));
a v F# takto:
let arr = arr |> Array.map(sqr); // pozn: v F# som použil shadowingAko sme si už ukázali Chapel je dosť hi-level jazyk, a aj viac-dimenzionálne polia sú priamo súčasťou špecifikácie jazyka, nemusíme to "hackovať" cez pole polí ani na to mať sadu špeciálnych modulov ako v F# (F# má len kolekcie Array2D a Array3D. Chapel vie vytvoriť aj 4, 5 a aj viac-rozmerné pole) Jednoducho chapel na to ide intuitívne, výhoda je, že takýto hi level kód si vie kompilátor dobre zoptimalizovať. Vidieť, že Chapel má korene v starom dobrom fortrane. Uvedieme si príklad poľa, začínajúceho indexom jedna a končiace indexom 10.
Indexovanie od 1 - príklad v Chapel:
var example_domain = {1..10};
var example_array: [my_domain] int64 = 1..10;
Na prvom riadku vidíme zvláštny typ - doménu príklad: {1..10}, ktorá nám určuje rozsah poľa. Ale čo je to doména? Domény (domains) sú špecialitou jazyka chapel, abstrakcie pre indexové priestory, ktoré definujú rozsah indexov pre polia (alebo iné indexové priestory, napr asociatívne polia). Domény umožňujú efektívne a flexibilné riadenie dátových štruktúr a paralelizmu. Domény môžu mať rôzne typy (napriklad aj string pre asociatívne pole). A môžu byť viac-rozmerné.
var celsius_scale_domain = {-273..n}
var farenheit_scale_domain = {-459..n}
var kelvin_scale_domain = {0..n}
Pole sa deklaruje tak, že:
var prípadne const (pre immutable premenné),Ak chcem pole inicializovať všetky položky poľa nejakou hodnotou, tak stačí spraviť toto:
var example_array: [{1..10}] int = 1..10; // 1..10 je typ range pozor nemýliť si s doménami: 1..10 != {1..10}
writeln("example_array: ", example_array); // vypíše 1 2 3 4 5 6 7 8 9 10
V budúcom diely seriálu si podrobnejšie rozoberieme viacrozmerné polia a záležitosti s nimi súvisiace (Nechcem spolierovať, ale prezradím, že do viacrozmerných polí nevieme priraďovať priamo ranges.) a prejdeme na ďalšiu kapitolu, kde si ukažeme veci, ktoré ste v mainstreamových jazykoch ešte nevideli.
PS: ak by boli v mojom blogovom zápisku nejaké chyby a nepresnosti, alebo ak som niekde použil zlé názvoslovie, budem rád keď ma opravíte. Tiež sa chapel iba učím a toto berte ako moj grimoár. Písanie je, výborný spôsob ako si niečo zapamatať. A navyše, nie som žiadny zamestnanec HP, ktorý by robil tomuto jazyku platenú reklamu. Venujem sa mu čisto iba zo záujimu a nadšenia, nakolko poskytuje zaujímavé možnosti na rýchly vývoj určitého typu aplikácií. Čo sa týka mojej histórie vo voľnom čase mi k srdcu najviac prirástlo F# a C++. Chapel je do tretice ďalší z jazykov zase z úplne iného súdka. V neskoršich dieloch seriálu si spravíme aj nejakú real-world aplikáciu, ktorá bude cez REST komunikovať s frontendom v Blazore alebo Reacte (výber technológie pre FE nechám na vás).
Tiskni
Sdílej:
writeln("arr[3]", arr[2]); // vypíše 0 keďže sme mimo rozsah
Hádam, že vypíše 3, lebo arr[2] je definované.