Přímý přenos (YouTube) z konference LinuxDays 2026, jež probíhá tento víkend v Praze v prostorách FIT ČVUT. Na programu je spousta zajímavých přednášek.
Byla vydána nová verze 0.17.0 programovacího jazyka Zig (Codeberg, Wikipedie). Přispělo 206 vývojářů. Přehled novinek v poznámkách k vydání.
Open-source projekt OpenDLSS-NR je 'bitově přesná reimplementace' neuronové rendrovací sítě DLSS 5 od společnosti NVIDIA, jenže pro grafické API Vulkan (DLSS slouží k vylepšování klasickým způsobem vyrendrovaných snímků pomocí lokálních modelů umělé inteligence, a to v reálném čase). Projekt není nijak spojen se společností NVIDIA, je pouze pro OS Windows a natrénované váhy modelu si uživatelé musí obstarat sami. Zdrojový kód je k dispozici na GitHubu, pod licencí MIT s výjimkou pro komponenty třetích stran.
Společnost Cloudflare představila Clef a Clef-Flash, open-source rozhodovací modely určené pro rychlou a konzistentní klasifikaci vstupů. Na rozdíl od klasických LLM vracejí tyto modely deterministické striktně typované strukturované odpovědi s exaktními pravděpodobnostmi, tedy odpovědi ve stylu přelomového modelu Jev.
… více »Byla vydána beta verze Ubuntu 26.10 s kódovým názvem Stonking Stingray. Přehled novinek v poznámkách k vydání. Dle plánu by Ubuntu 26.10 mělo vyjít 15. října 2026.
Byla vydána verze 1.99.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.
Od 13. do 15. října proběhne v Praze OpenSSL Conference 2026. Na YouTube lze zhlédnout videozáznamy přednášek z loňského roku.
Eben Upton oznámil další zdražení jednodeskových počítačů Raspberry Pi. Tentokrát 2 GB varianty o 12,50 dolarů. Nově 2 GB Raspberry Pi 4 stojí 67,50 dolarů a 2 GB Raspberry Pi 5 stojí 77,50 dolarů.
OpenMandriva ROME, tj. průběžně aktualizovaná (rolling) edice linuxové distribuce OpenMandriva, byla vydána ve verzi 26.09. Vedle Flatpaku také s podporou Snapu.
Edison Design Group po více než 30 letech zveřejnil zdrojový kód svého EDG C/C++ front-endu. Ten proslul širokou podporou standardů C++ a kompatibilitou s dialekty kompilátorů od Microsoftu, GNU, Clangu, Sunu a dokonce i s prehistorickým cfrontem. EDG byl použit například v kompilátoru Intel C++ Classic, kompilátoru NVCC od firmy NVIDIA pro platformu CUDA nebo v našeptávači kódu IntelliSense v produktech společnosti Microsoft. Projekt nyní spravuje organizace The C++ Alliance a kód je dostupný pod licencí Apache 2.0, doplněnou o výjimky projektu LLVM.
Ve funkcionálních jazycích se spousta (většina?) algorimů zapisuje jako rekurze. Nejinak je tomu i u erlangu. Jenže rekurze je pro normální dnešní CPU fuj a tak se to řeší (a nejen ve funkcionálních jazycích) tzv. tail rekurzí. Prakticky jde o nahrazení rekurze cyklem a nealokuje se kvůli tomu další paměť na zásobníku, ale různé jazyky se s tím umí vyrovnat různě.
Například výpočet faktoriálu:
-module(fact). -export([fact/1, fact2/1]). fact(N) when N>0 -> N*fact(N-1); fact(0) -> 1. fact2(0) -> 1; fact2(N) when N>0 -> fact2(N-1, N). fact2(0, Res) -> Res; fact2(N, Res) -> fact2(N-1, N*Res).Varianta
fact bohužel v erlangu skončí skutečnou rekurzí, kdežto fact2 udělá cyklus kolem fact2/2 kódu. Například Haskel se tuším vypořádá dokonce i s ekvivalentem zápisu fact. Pokud si to chcete vyzkoušet, tak si zkuste vypočítat fact2(50000) a pak fact(50000). To druhé začne velmi záhy swapovat a následně to shodí BEAN pod nímž to spustíte (pokud máte opravdu hodně swapu a paměti, tak si zvolte ještě větší číslo
)
Tiskni
Sdílej:
gcc -O2 taky. (Možná pro někoho samozřejmost, ale mě to překvapilo.)
int fact (int n) {
if (n == 0) return 1;
return n * fact (n-1); }
a v assembleru je vidět krásná smyčka, žádný call.
Snad nikoho neurážím, že vám sem do funkcionálního programování tahám C
Snad nikoho neurážím, že vám sem do funkcionálního programování tahám CNene, dík za informaci. To se hodí vědět.
int foo (int a, int b);
int bar (int c, int a, int b)
{
return (0==b) ? a : foo(a, --b);
}
int foo (int a, int b)
{
return bar(1, a, b);
}
gcc -S -O2 --omit-frame-pointer test.c
foo:
subl $12, %esp
movl 20(%esp), %eax
movl $1, 8(%esp)
movl %eax, 4(%esp)
movl 16(%esp), %eax
movl %eax, (%esp)
call bar
addl $12, %esp
ret
bar:
movl 8(%esp), %eax
movl 4(%esp), %edx
testl %eax, %eax
jne .L8
movl %edx, %eax
ret
.L8:
subl $1, %eax
movl %eax, 8(%esp)
jmp foo
Jinými slovy, je to hezká optimalizace, ale plně bych se na ní při rekurzivním psaní programu nespoléhal (ostatně, norma C nic takového nepožaduje).