Richard Biener oznámil vydání verze 16.1 (16.1.0) kolekce kompilátorů pro různé programovací jazyky GCC (GNU Compiler Collection). Jedná se o první stabilní verzi řady 16. Přehled změn, nových vlastností a oprav a aktualizovaná dokumentace na stránkách projektu. Některé zdrojové kódy, které bylo možné přeložit s předchozími verzemi GCC, bude nutné upravit.
Zulip Server z open source komunikační platformy Zulip (Wikipedie, GitHub) byl vydán ve verzi 12.0. Přehled novinek v příspěvku na blogu.
Před 30 lety, tj. v úterý 30. dubna 1996, byl spuštěn Seznam.cz.
Byly zpracovány a zveřejněny všechny videozáznamy, které stojí za zveřejnění, z konference FOSDEM 2026.
Od úterý 28. dubna musí nově uváděné notebooky v Evropské unii podporovat nabíjení přes USB-C. Jednotná nabíječka byla schválena Evropským parlamentem v říjnu 2022.
Byly publikovány informace o kritické zranitelnosti CVE-2026-31431 pojmenované Copy Fail v Linuxu, konkrétně v kryptografii (AF_ALG). Běžný uživatel může získat práva roota (lokální eskalaci práv). Na všech distribucích Linuxu vydaných od roku 2017. Pomocí 732bajtového skriptu. V upstreamu je již opraveno. Zranitelnost byla nalezena pomocí AI Xint Code.
Textový editor Zed dospěl do verze 1.0. Představení v příspěvku na blogu.
Vývojáři svobodného 3D softwaru Blender představili (𝕏, Mastodon, Bluesky) nejnovějšího firemního sponzora Blenderu. Je ním společnost Anthropic stojící za AI Claude a úroveň sponzoringu je Patron, tj. minimálně 240 tisíc eur ročně. Anthropic oznámil sponzorství v tiskové zprávě Claude for Creative Work.
VNC server wayvnc pro Wayland kompozitory postavené nad wlroots - ne GNOME, KDE nebo Weston - byl vydán ve verzi 0.10.0. Vydána byla také verze 1.0.0 související knihovny neatvnc.
Bylo oznámeno vydání Fedora Linuxu 44. Ve finální verzi vychází šest oficiálních edic: Fedora Workstation a Fedora KDE Plasma Desktop pro desktopové, Fedora Server pro serverové, Fedora IoT pro internet věcí, Fedora Cloud pro cloudové nasazení a Fedora CoreOS pro ty, kteří preferují neměnné systémy. Vedle nich jsou k dispozici také další atomické desktopy, spiny a laby. Podrobný přehled novinek v samostatných článcích na stránkách
… více »fork() modulu _stackless. Co tahle funkce dělá? Inu přesně to, co její jmenovkyně z pravého Unixu, jen nevytvoří nový proces, ale korutinu (takové lehkotonážní vlákno, které nemá preempci a musí se přepínat explicitně).
Funkce se tedy vrátí "dvakrát". Po vyvolání zůstane provádění v hlavní korutině a tato korutina dostane referenci na nově vytvořenou synovskou korutinu. V synovské korutině vrátí fork hodnotu None.
K čemu je to dobré? Představte si, že zavoláte nějakou funkci a dostanete její návratovou hodnotu. Nějakou dobu s touto návratovou hodnotou počítáte, ale pak zjistíte, že tato návratová hodnota se vám nějak nehodí do krámu. Vyvoláte tedy výjimku a program se vrátí v čase až do volání inkriminované funkce a tato funkce se pokusí vám poskytnout lepší návratovou hodnotu.
Sci-fi? Mrkněte na následující příklad.
# this is pyfork.py from _stackless import fork, coroutine, clonable class Fail(Exception): pass def zero_or_one(): subcoro = fork() if subcoro is not None: try: subcoro.switch() # in the parent: run the child first except Fail: pass return 1 # then proceed with answer 1 else: return 0 # in the child: answer 0 def f(): num = zero_or_one(); if num == 0: print "zero is not good enough!" raise Fail print "we got ONE: ", num def main(): #just because fork() is not enabled in main routine coro = clonable() coro.bind(f) coro.switch() print "Done" main()Funkce
zero_or_one vrací nulu nebo jedničku. Řekněme, že se nám ve funkci f nula ani trochu nelíbí. Vyvoláme výjimku Fail nastane návrat do minulosti. (Mimochodem, BTTF a Michaela J. Foxe mám fakt rád.)
Samotná funkce zero_or_one funguje následovně. Fork vytvoří novou korutinu a reference na ni se uloží do proměnné subcoro. Provádění pokračuje v hlavní korutině (taže následující podmínka se vyhodnotí jako True). Jenže pak následuje přepnutí na synovskou korutinu, a funkce nakonec vrátí nulu. Když se ve funkci f vyvolá výjimka, tak se propaguje až do místa, kde synovská korutina započala svůj běh (tedy subcoro.switch()). Synovská korutina de-facto končí a výjimka se propaguje až do rodičovské korutiny (tohle je asi největší magie). Tam je výjimka ošetřena a funkce vrátí jedničku.
$ python translate.py --stackless --gc=framework --batch targetpypystandalone.pyPak se to pustí příkazem
$ ./pypy-c pyfork.pya vypíše
zero is not good enough! we got ONE: 1 Done
Tiskni
Sdílej:
Ale čím jsou odlehčenější, tím líp.