Nové verze webových prohlížečů Chrome a Firefox jsou vydávány každé 4 týdny. Aktuální verze Chrome je 150. Aktuální verze Firefoxu je 152. V březnu bylo oznámeno, že od září přejde Chrome na dvoutýdenní cyklus vydávání verzí. To by znamenalo, že Chrome v číslování verzí Firefox brzy přeskočí. Vývojáři Firefoxu proto také od září přecházejí na dvoutýdenní cyklus vydávání verzí. :-)
Microsoft Comic Chat (Wikipedie), tj. grafický IRC klient z devadesátek, který převáděl konverzace na IRC do podoby komiksových panelů, a který zpopularizoval font Comic Sans, je dnešním dnem open source. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.
Byla vydána (𝕏) nová verze 26.7 open source firewallové a routovací platformy OPNsense (Wikipedie). Jedná se o fork pfSense postavený na FreeBSD. Kódový název OPNsense 26.7 je Xenial Xenops. Přehled novinek v příspěvku na fóru.
Na Seznam nepovolených internetových her (Wikipedie) se k 13. 7. 2026 dostala predikční platforma Polymarket.
Nová čísla časopisů od nakladatelství Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 167 (pdf) a Hello World 30 (pdf).
Byla vydána nová verze 3.22.0 grafického vývojového prostředí a platformy Gambas (Wikipedie) založené na interpretru programovacího jazyka Basic s rozšířením o objektově orientované programování. Přehled novinek v poznámkách k vydání. Zdrojové kódy jsou k dispozici na GitLabu.
FreeBSD odstranilo poslední GPL kód ze základního systému. Konkrétně dpv, libdpv, libfigpar a dialog. Instalátor před čtyřmi lety přešel z dialogu na bsddialog.
Sociální síti 𝕏 (dříve Twitter) má dnes 20 let. Pro veřejnost byla zpřístupněna 15. července 2006.
Insula Faktury je open source generátor faktur, který běží přímo ve webovém prohlížeči. Žádná registrace, žádné sledování, žádné omezení. Zdrojové kódy jsou k dispozici na Codebergu.
První Mobile Linux Hackday v Plzni, tj. komunitní setkání věnované Linuxu na mobilních zařízeních, proběhne 24. července od 10:00. Akce je otevřená všem zájemcům – od zvědavců po zkušené vývojáře. Dopoledne proběhnou přednášky Davida Heidelberga a Petra Hodiny o aktuálním stavu mobilního Linuxu: proč vůbec chtít tučňáka v kapse, jaké telefony jsou dnes dobře podporované a co taková podpora obnáší. Po obědě se zaměříme na konkrétní
… více »Aktuální vývojová verze jádra je 3.14-rc7 vydaná 16. března. Linus už z toho má lepší pocit. Jediný týden a jaké změny přinese. Před týdnem, když jsem vytvářel rc6, jsem neměl dobrou náladu: ve vydání byla spousta změn a vnímal jsem to tak, že rc8 a možná i rc9 by byly reálnou možností. Teď uběhl týden a rc7 vypadá mnohem lépe. Aktuálně říká, že může jít o poslední -rc ve verzi 3.14.
Stabilní aktualizace: řadu 3.12 nyní spravuje Jiří Slabý; jeho první vydání 3.12.14 vyšlo 14. března.
Na bezpečnosti mi záleží, měli bychom práci odvádět pořádně. Máme tu další velký skok v nezbytnosti zabezpečení, který bude přinejmenší stejně velký jako skok mezi internetem typu „univerzita, všichni jsou hodní“ a internetem dneška.
-- Alan Cox
Ano, je to tak trochu hack, ale je to jednoduché a přímé a explicitní a zjevné. Škodu páchá nenápadná hackovitost.
Obvykle, když někdo říká „nemůžu“, tak mi to spíš zní jako "Rozhodl jsem se přestat snažit přemýšlet o tom, jak to vyřešit."
-- David Miller
Rozhraní „smrskávače“ [shrinker] v jádře umožňuje subsystému pro správu paměti informovat ostatní subsystémy o tom, že se paměti nedostává a měla by být nějaká paměť uvolněna, pokud je to jen možné. Objevily se různé pokusy o to přidat podobný mechanismus, který by umožnil jádru požádat procesy v uživatelském prostoru, aby pročistily paměť, ale všechny narazily kvůli známým problémům se složitostí a obecnou obtížností začleňování změn ve správě paměti. To ale nezabránilo vývojářům v tom, aby se o to pokoušeli; nedávno byly zaslány dva nové patche podobného ražení.
Oba tyto patche implementují variaci na téma zvané volatilní rozsahy paměti. Tyto rozsahy představují oblasti v adresním prostoru procesu, které obsahují data, jež je možné v případě nutnosti regenerovat. V případě, že se jádru nebude dostávat paměti, tak si může vzít stránky z volatilního rozsahu, a to s jistotou, že se z toho proces používající danou paměť zotaví, třebaže se ztrátou výkonu. Dokud je ale paměti dostatek, tak nebudou volatilní rozsahy jádrem odebírány a data tam cachovaná mohou být volně používána aplikací.
Většina práce na volatilních rozsazích je motivovaná snahou o vytvoření náhrady pro mechanismus ashmem z Androidu, který je s hlavní částí subsystému pro správu paměti lépe integrován. Pro tuto funkčnost se ale najde i jiné využití.
Během uplynulých let se objevila spousta verzí patchů pro volatilní rozsahy. Někdy byly implementovány pomocí systémového volání posix_fadvise(); jindy byly dodány do fallocate(). Další verze je zase přidávaly jako dodatečnou funkci do madvise(). 11. verze patche pro volatilní rozsahy se ale vydává úplně jiným směrem. Namísto toho přidává nové systémové volání:
int vrange(void *start, size_t length, int mode, int *purged);
V této podobě vrange() pracuje s length bajty paměti začínajícími na adrese start. Pokud je režim mode nastaven na VRANGE_VOLATILE, tak tento rozsah paměti bude označen jako volatilní. Pokud je naopak režim VRANGE_NONVOLATILE, pak je označení jako volatilní odstraněno. V tomto případě ale některé nebo všechny stránky dříve prohlášené za volatilní mohly být odebrány jádrem; v takovém případě je *purged nastaveno na nenulovou hodnotu na znamení toho, že předchozí obsah paměti už není k dispozici. Je-li *purged nulové, tak aplikace ví, že obsah paměti není ztracen.
Proces může nadále přistupovat k paměti ve volatilním rozsahu. Pokud se pokusí přistoupit ke stránce, která byla odebrána jádrem, tak dostane signál SIGBUS na znamení toho, že stránka je pryč. Proto programy, které jsou na přijetí tohoto signálu připravené, mohou volatilní rozsahy používat bez potřeby volat vrange() před přistoupením k paměti.
Tato verze patche se od svých předchůdců liší dalším významným způsobem: fungují jen s anonymními stránkami, zatímco předchozí verze fungovaly pouze se systémem souborů tmpfs. Práce s anonymními stránkami pomáhá patch zjednodušit, jak je to jen možné, aby se zvětšila šance, že bude revidován a nakonec začleněn, ale bere si to svou daň: nemožnost pracovat s tmpfs znamená, že volatilní stránky nebudou vhodnou náhradou z ashmem. V plánu je podporovat případ, kdy se za pamětí skrývá soubor (což kód zesložiťuje), ale až jakmile bude panovat shoda ohledně zákadního patche.
Interně pracuje vrange() na úrovni virtuální oblasti paměti (virtual memory area, VMA). Všechny stránky v rámci VMA buď jsou volatilní, anebo ne; VMA mohou podle potřeby být při voláních vrange() slučovány nebo rozdělovány. Díky tomu by vrange() mělo být rozumně rychlé, jelikož není nutné procházet každou stránku v rozsahu.
Jiný způsob řešení podobného problému můžeme spatřit v patchi MADV_FREE. Tento patch přidává nový povel do stávajícího volání madvise():
int madvise(void *addr, size_t length, int advice);
Podobně jako vrange() také madvise() pracuje s rozsahem paměti určeným volajícím; to, co se dělá, je rozlišeno argumentem advice. Volající může použít MADV_SEQUENTIAL, aby řekl jádru, že ke stránkám v tomto rozsahu bude přistupováno sekvenčně, nebo MADV_RANDOM, aby řekl jádru pravý opak. Volání MADV_DONTNEED způsobí, že jádro okamžitě převezme určené stránky a zahodí jejich obsah.
Nová operace MADV_FREE se podobá MADV_DONTNEED, ale je tu jeden důležitý rozdíl. Namísto okamžitého odebrání stránek je toto volání označí k „pozdějšímu uvolnění“ někdy v budoucnu. Pokud by jádru začala docházet paměť, pak právě takto označené stránky by byly jádrem odebírány jako první; pokud se aplikace pokusí takovou stránku použít po jejím odebrání, tak jádro poskytne novou stránku plnou nul. Pokud je ale paměti dostatek, tak zůstanou stránky označené pomocí MADV_FREE na místě; další přístup k těmto stránkám odstraní příznak přidaný přes MADV_FREE a data budou ve stavu jako před voláním madvise().
Aplikace nemá jak zjistit, zda nebyl obsah stránek odstraněn, aniž by prozkoumala obsažená data. Proto by program mohl implementovat něco jako volatilní rozsahy tak, že si na začátek každé stránky před použitím MADV_FREE umístí strukturu, jež dovede poznat, a před přístupem k dalším datům by si ověřil, že je struktura stále na svém místě. To se ale nezdá být zamýšleným způsobem používání.
MADV_FREE se zdá být zaměřené na implementace alokátorů paměti v uživatelském prostoru. Kdykoliv aplikace uvolní sadu stránek, tak alokátor použije MADV_FREE, aby jádru oznámil, že na obsahu stránek už nezáleží. Pokud by aplikace ve stejném rozsahu rychle alokovala více paměti, tak se použijí stejné stránky, tudíž se vyhne režii uvolňování stránek a nulování nových. Ve zkratce je MADV_FREE způsobem, jak říci "Na datech v tomto rozsahu mi nezálěží, ale brzo možná tento rozsah opětovně použiji."
Stojí za zmínku, že MADV_FREE je již podporován na jádrech BSD, takže na rozdíl od vrange() by nešlo o funkci specifickou pro Linux. Pochopitelně by to znamenalo zlepšení přenositelnosti programů, které tuto funkci na BSD systémech používají.
V době psaní tohoto textu se žádnému z patchů nedostalo příliš reakcí. Ke skutečnému revidování pravděpodobně dojde až na letošním Linuxovém sumitu o systémech souborů a správě paměti, který začíná 24. března.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej: