Protože je už po aprílu, můžou strahováci opět zveřejnit program další Virtuální Bastlírny, aniž by připravená témata působila dojmem, že jde o žert. Vězte tedy, že již v úterý 7. dubna od 20:00 proběhne VB, kde se setkají bastlíři, technici, učitelé i nadšenci do techniky a kde i vy se můžete zapojit do družného hovoru, jako by všichni seděli u pomyslného piva. Co mají bastlíři tento měsíc na srdci? Pravděpodobně by nás musel zasáhnout meteorit
… více »Byla vydána verze 26.1 aneb čtvrtletní aktualizace open source počítačového planetária Stellarium (Wikipedie, GitHub). Vyzkoušet lze webovou verzi Stellaria na Stellarium Web.
VOID (Video Object and Interaction Deletion) je nový open-source VLM model pro editaci videa, který dokáže z videí odstraňovat objekty včetně všech jejich fyzikálních interakcí v rámci scény (pády, kolize, stíny...) pomocí quadmaskingu (čtyřhodnotová maska, která člení pixely scény do čtyř kategorií: objekt určený k odstranění, překrývající se oblasti, objektem ovlivněné oblasti a pozadí scény) a dvoufázového inpaintingu. Za projektem stojí výzkumníci ze společnosti Netflix.
Design (GitHub) je 2D CAD pro GNOME. Instalovat lze i z Flathubu. Běží také ve webovém prohlížeči.
Příspěvek na blogu herního enginu Godot představuje aplikaci Xogot přinášející Godot na iPad a iPhone. Instalovat lze z App Storu. Za Xogotem stojí Miguel de Icaza (GitHub) a společnost Xibbon.
Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za březen (YouTube).
ESP-IDF (Espressif IoT Development Framework), tj. oficiální vývojový framework pro vývoj aplikací na mikrokontrolérech řady ESP32, byl vydán v nové verzi 6.0. Detaily na portálu pro vývojáře.
DeepMind (Alphabet) představila novou verzi svého multimodálního modelu, Gemma 4. Modely jsou volně k dispozici (Ollama, Hugging Face a další) ve velikostech 5-31 miliard parametrů, s kontextovým oknem 128k až 256k a v dense i MoE variantách. Modely zvládají text, obrázky a u menších verzí i audio. Modely jsou optimalizované pro běh na desktopových GPU i mobilních zařízeních, váhy všech těchto modelů jsou uvolněny pod licencí Apache 2.0. Návod na spuštění je už i na Unsloth.
Cursor (Wikipedie) od společnosti Anysphere byl vydán ve verzi 3. Jedná se o multiplatformní proprietární editor kódů s podporou AI (vibe coding).
Průkopnická firma FingerWorks kolem roku 2000 vyvinula vícedotykové trackpady s gesty a klávesnice jako TouchStream LP. V roce 2005 ji koupil Apple, výrobu těchto produktů ukončil a dotykové technologie využil při vývoji iPhone. Multiplatformní projekt Apple Magic TouchstreamLP nyní implementuje funkcionalitu TouchStream LP na současném Apple Magic Trackpad, resp. jejich dvojici. Diskuze k vydání probíhá na Redditu.
Linus zpočátku nebyl změně nakloněn a dal najevo, že práce na snížení využití zásobníku jádra musejí pokračovat. Ale i Linusovi nakonec došlo, že hrát si s přetečeními zásobníku na schovávanou problém nevyřeší spolehlivě.To, ze systemu prokazatelne staci zasobnik pro vsechny mozne cesty volani, je zakladni pozadavek na spolehlivost systemu a bez toho muze Linux na jakoukoliv rozumnou certifikaci zapomennout. CONFIG_FRAME_WARN/checkstack.pl/CONFIG_DEBUG_STACK_USAGE jsou jen berlicky.
rekl bych ze na tvoji "rozumnou" certifikaci s*re pes..Linux je kvuli tomu diskvalifikovan z cele rady aplikaci, kde se pak musi pouzivat QNX nebo VxWorks. Jinak snahy o to byly, MeeGo tam temer bylo.
a casto je to proste v realnem svete nutne.Jak často vidíš systém crashovat, protože mu došlo místo na jaderném stacku? Podle mě je kolem milión pravděpodobnějších bugů.
.
Osobně si ale myslím, že komunita by s vývojem typu OS do družice, moc kompatibilní nebylaFreeRTOS to zvladl..
The kernel itself consists of only three or four C files.Tak určitě by šlo osekat kernel, ale taky bych chtěl být schopen pustit si v takovém OS Minecraft
.
Druzice? - Tohle vynesou Indove za par supu (prevazne FreeRTOS, nekde Linux): zde , zde ci zde - i s Nexus-One telefonem.Tak já nevím, tys nepsal, na co přesně nemůžete Linux použít.
Tak já nevím, tys nepsal, na co přesně nemůžete Linux použít.Cokoliv, co vyzaduje i mininalni SIL.
Cokoliv, co vyzaduje i mininalni SIL.Nebyla právě tohle motivace sýmensů, aby vyvíjeli Jailhouse?
Linus také sdělil, že nemá zájem měnit velikost zásobníku v Linuxu 3.15.
Hm, tak to mu to přesvědčení dlouho nevydrželo… :-(
Na zásobníku jsou především návratové adresy a lokální proměnné. Příliš malý zásobník je problém, pokud dojde k jeho přetečení, což znamená hodně vnořených úrovní volání a hodně lokálních proměnných. Abych pravdu řekl, nevím, co je na kódu filesystémů tak specifického, že mají s 8KB zásobníkem problémy. U síťového kódu jen zřídka vídám, že by se nevešel do 4 KB. Větší zásobník naopak znamená větší overhead procesu a potenciálně i problémy, není-li dost paměti a je-li fragmentovaná (potřebujete alokovat souvislý blok čtyř stránek místo dvou).
Obecně je kód jádra díky těm 8KB zásobníkům mnohem disciplinovanější, než je zvykem v userspace (zejména v glibc jsem viděl strašidelné věci), kde je běžné mít zásobník velký 256 KB nebo dokonce 8 MB a výrazně menší se používá jen u masivně multithreadových aplikací. Právě proto se trochu bojím, že přechod na 16 KB vývojářům "rozváže ruce" a přestanou si zásobník tolik hlídat, takže (katastrofický scénář) za pár let budeme tam, kde jsme byli. Případně že pokud 16KB zásobník bude jen na x86_64, začnou se objevovat problémy s přetečením zásobníku na ostatních architekturách, které nejsou tolik testované.
V každém případě je velkým - a nepříjemným - překvapením, že Linus takovou zásadní změnu vzal do RC8 (které IIRC možná původně ani nebylo v plánu) místo toho, aby počkal na 3.16-rc1 a byl čas nechat to aspoň trochu uzrát a prověřit.
Právě proto se trochu bojím, že přechod na 16 KB vývojářům "rozváže ruce" a přestanou si zásobník tolik hlídat, takže (katastrofický scénář) za pár let budeme tam, kde jsme byli.Prave. Mne to spise vyznelo tak, ze "my vime, ze 8KB neni nekde asi dost a tak tam dame 16KB a budem doufat, ze se to snad vyresi".
hodí na zásobník poll_wqueues a skoro kilobajt je pryč.AFAIK, to je dusledek teto optimizace (SUSE
), coz by slo IMHO opravit snadneji nez prekopat XFS.
Kdyz si vezmes, ze 32bitovym systemum staci 8KB, je mirne naivni si myslet, ze to bude stacit i 64bitovym
Tohle je logicky úplně chybná úvaha. Kdybyste míst "32-bitovým systémům stačí 8 KB" napsal "32-bitovým systémům nestačí 4 KB", tak by to sice pořád nebyl dostatečný argument, ale aspoň by to dávalo trochu smysl.
Každopádně z těch řečí o zásobníku podle mě plyne ponaučení "nepoužívat autorekurzivní funkce v kernelu" (nebo autorekurzivní konglomeráty více funkcí). A nepoužívat zbytečně mnoho lokálních funkcí = alokovat všechna větší data (např. rozsáhlejší structy) zásadně na heapu.
). Třeba na Microblaze se registry ukládají do struktury ručně v assembleru. Jsou tam "vtipný triky", jak si uložit registrovou sadu včetně ukazatele na tu registrovou sadu.
než je zvykem v userspace (zejména v glibc jsem viděl strašidelné věci), kde je běžné mít zásobník velký 256 KB nebo dokonce 8 MBTak ono tomu vydatne pomaha gcc a spousta programatoru o tom ani netusi.. Jsem videl kdesi funkci s masivnim switchem, ktera kvuli tedle drobnosti sezrala >3KB na volani...
alloca(), to na gcc svedete jen s velkou dávkou fantazie. :-)
Abych pravdu řekl, nevím, co je na kódu filesystémů tak specifického, že mají s 8KB zásobníkem problémy.Neni to ciste filesystemovy kod, ale to v jakou chvili a z jakeho kontextu se filesystemovy kod muze volat, kdyz ma zapsat stranky. V tu chvili uz muze byt neco ze stacku sezraneho. Dale pokud si filesystem v tu chvili usmysli, ze k tomu potrebuje jeste par bajtu pameti (aby nezral stack), tak nasledny kmalloc muze spustit dalsi retez akci, ktere mu tu pamet zajisti. V nejhorsim pripade je to direct reclaim, ktery uz nema moznost sahnout pro nejakou rychle uvolnitelnou pamet, a zkusi neco odswapovat. Zapisy na zarizeni si taky kousek stacku vemou, zalezi na typu, ale nebyva to moc. Pokud je device poskladan z vice vrstev (MD-RAID, LVM, LUKS, multipath), tak se to nacita. Nebo pod tim jeste iscsi. Z druheho konce se taky da lepit, NFS nebo eCryptfs. U xfs byly reportovany problemy prave v kombinaci s MD-RAID a NFS, to neni nic neobvykleho, ani to ze se treba pouzivaji i ty zanorene raidove levely na vetsich polich. Samotne xfs je uvnitr dost komplexni, nektere operace se zurnalem si dovedou vzit vyznamy kus. Pred casem museli offloadovat cast operaci do worker threadu, aby sehnali misto na stacku. Co bezneho uzivatele trapit nemusi, jsou zapnute debugovaci volby (pro zamky, alokator). S temi se da stack prekrocit snadneji a je zahodno, aby to i s nimi jakz takz fungovalo.
void function(void)
{
function();
}
Což je hloupé.
long function(long l)
{
if (l < 10000000) {
return function(++l);
}
return l;
}
function(10);
Podceňujete kompilátor. :-)
Upravil jsem to na
int main()
{
function(10);
return 0;
}
a dostal
(gdb) disassemble main Dump of assembler code for function main: 0x0000000000400410 <+0>: xor %eax,%eax 0x0000000000400412 <+2>: retq End of assembler dump. (gdb) disassemble function Dump of assembler code for function function: 0x0000000000400500 <+0>: mov %rdi,%rax 0x0000000000400503 <+3>: cmp $0x98967f,%rdi 0x000000000040050a <+10>: mov $0x989680,%edx 0x000000000040050f <+15>: cmovle %rdx,%rax 0x0000000000400513 <+19>: retq End of assembler dump.
To první je podle očekávání, ale to druhé potěší.
Tohle jde ještě trochu dál, protože kompilátor vyhodnotil, že ani cyklus není potřeba, a rovnou si to převedl na
return (l <= 9999999) ? 10000000 : l;
Tiskni
Sdílej: