Oficiálně byl vydán Android 16. Detaily na blogu a stránkách věnovaných vývojářům.
Byla vydána nová verze 14.3 svobodného unixového operačního systému FreeBSD. Podrobný přehled novinek v poznámkách k vydání.
CSIRT.CZ upozorňuje, že na základě rozhodnutí federálního soudu ve Spojených státech budou veškeré konverzace uživatelů s ChatGPT uchovávány. Včetně těch smazaných.
Ač semestr ve škole právě končí, bastlíři ze studentského klubu Silicon Hill neodpočívají a opět se jako každý měsíc hlásí s pravidelným bastlířským setkáním Virtuální Bastlírna, kde si můžete s ostatními techniky popovídat jako u piva o novinkách, o elektronice, softwaru, vědě, technice obecně, ale také o bizarních tématech, která se za poslední měsíc na internetu vyskytla.
Z novinek za zmínku stojí Maker Faire, kde Pájeníčko předvedlo … více »Na WWDC25 byl představen balíček Containerization a nástroj container pro spouštění linuxových kontejnerů na macOS. Jedná se o open source software pod licencí Apache 2.0 napsaný v programovacím jazyce Swift.
Do 16. června do 19:00 běží na Steamu přehlídka nadcházejících her Festival Steam Next | červen 2025 doplněná demoverzemi, přenosy a dalšími aktivitami. Demoverze lze hrát zdarma.
Apple na své vývojářské konferenci WWDC25 (Worldwide Developers Conference, keynote) představil řadu novinek: designový materiál Liquid Glass, iOS 26, iPadOS 26, macOS Tahoe 26, watchOS 26, visionOS 26, tvOS 26, nové funkce Apple Intelligence, …
Organizátoři konference LinuxDays 2025, jež proběhne o víkendu 4. a 5. října 2025 v Praze na FIT ČVUT, spustili přihlašování přednášek (do 31. srpna) a sběr námětů na zlepšení.
Po roce byla vydána nová stabilní verze 25.6.0 svobodného multiplatformního multimediálního přehrávače SMPlayer (Wikipedie).
DNS4EU, tj. evropská infrastruktura služeb DNS založená na vysoce federovaném a distribuovaném ochranném ekosystému, byla spuštěna v testovacím režimu [𝕏]. Na výběr je 5 možností filtrování DNS.
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: