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.
Pocket Tank je malé kapesní virtuální akvárium postavené na vývojové desce ESP32-S3-Touch-AMOLED-1.8. Na dvoujádrovém mikrokontroléru ESP32-S3 s 8 MB PSRAM a 16 MB flash paměti běží jak simulace akvária, tak i malý jazykový model určující chování rybiček. Lokální model o velikosti 7,56 MB se 14 miliony parametrů vznikl destilací modelu Gemma 4 26B, tedy učitele s 26 miliardami parametrů. Kromě firmwaru pro skutečný modul s AMOLED
… více »Open-source nástroj Jevstiller vytváří (destiluje) malý lokální model, který se průběžně učí z odpovědí komerční služby Jev. Běžné dotazy vyřizuje přímo na vlastním hardware, čímž může řádově zkrátit čas odezvy a snížit provozní náklady díky menšímu využívání zpoplatněného API. Nejisté požadavky Jevstiller posílá do Jevu, rovněž průběžně kontroluje náhodná dvě procenta dotazů Jevem. Pokud se lokální model začne s Jevem rozcházet,
… více »Konference LinuxDays 2026 proběhne již tento víkend 3. a 4. října v Praze v areálu ČVUT v Dejvicích na FIT. Konference LinuxDays 2026 znamená desítky přednášek a workshopů, zástup zajímavých osobností, místo pro setkání, spoustu nových nápadů a informací a stánky řady různých projektů: Fedora, openSUSE, vpsFree.cz, Mozilla, MacGyver - bastlíři SH, OpenAlt a mnoho dalších. Vstup je volný.
Microsoft oznámil, že WSL kontejnery (WSLC) aneb linuxové kontejnery ve Windows Subsystem for Linux (WSL) jsou již obecně dostupné. Současně popsal jejich architekturu.
/proc/sys/dev/cdrom/info, bohužel se mi nedaří. Soubor je otevřen POSIX funkcí open() s přístupem O_RDONLY. Soubor se otevře (tj. funkce nevrátí -1). Poté v cyklu načítám bajt po bajtu (v souboru nelze seekovat a zjistit tak jeho velikost):
while( read( fd, (void*)&bajt, 1 ) == 1 )
{
....
}
Problém je v tom, že se načte pouze první znak. Pro další pak funkce vrátí 0 (ne -1, což by znamenalo chybu). Zajímalo by mě, jak takový soubor načíst.
open a read s tím rozdílem, že tam byl buffer něco přes 8000. Poprvé bylo vrácen počet přečtených bajtů a v druhé 0 (tj. EOF). Tak mě napadá, jestli se celý soubor nemusí přečíst najednou????? Nějak se mi kvůli tomu nechce prasit můj kód, takže se radši ptám. Pokud nikdo vědět nebude, tak to asi vyzkouším. Následuje výstup strace -r, kde se načte jen první znak C ze souboru. Zajímavé je, cat vypíše soubor celý (že by dostatečný buffer?). Další zarážející věcí je, že funkce getline() si klidně čte po řádcích. Jak jsem ale řekl, chtěl bych použít funkci open() a read() - kvůli jiným možnostem otevírání, než mi nabízí funkce fopen().
0.000040 write(1, "Debug: Application constructor -"..., 40) = 40
0.000491 write(1, "Debug: Application contructor - "..., 37) = 37
0.000170 brk(0) = 0x804a000
0.000027 brk(0x806b000) = 0x806b000
0.000043 open("/proc/sys/dev/cdrom/info", O_RDONLY|O_LARGEFILE) = 3
0.000073 write(1, "File opened", 11) = 11
0.000069 write(1, "\n", 1) = 1
0.000081 read(3, "C", 1) = 1
0.000041 write(1, "Debug: something readed\n", 24) = 24
0.000088 read(3, "", 1) = 0
0.000028 write(1, "C", 1) = 1
0.000059 write(1, "\n", 1) = 1
0.000073 read(3, "", 1) = 0
0.000031 write(1, "Debug: Application::run() - begi"..., 35) = 35
0.000088 close(3) = 0
Zde je část kódu programu:
int main( ... )
{
...
File cdroms;
File stdOut;
stdOut.openStdOut();
if( cdroms.open("/proc/sys/dev/cdrom/info", fmReadOnly ) )
{
stdOut.writeLine("File opened");
String line;
while( cdroms.readLine(line) )
{
stdOut.writeLine(line);
}
cdroms.close();
}
...
}
bool File::open( const String& fileName, FileMode mode, Permission perms )
{
close();
m_pHandle = ::open( fileName.cStr(), mode | O_LARGEFILE, (mode_t)perms );
return opened();
}
Int64 File::read( Byte *data, Int64 size ) const
{
if( size <= 0 ) return 0;
if(!opened()) return -1;
Int64 totalReaded = 0;
Int64 readed = 0, toRead = 0;
do{
toRead = MIN(size-totalReaded,SSIZE_MAX);
readed = (Int64)::read( m_pHandle, (void*)data, (size_t)toRead );
if( readed == 0 ) break; //EOF
if( readed < 0 ) return readed; //error
totalReaded += readed;
data += readed;
} while(totalReaded < size);
return totalReaded;
}
bool File::readLine( String& str ) const
{
bool somethingReaded = false;
str.clear();
Char chr;
if( read( (Byte*)&chr, 1 ) == 1 )
{
somethingReaded = true;
do{
if( chr == 0 ) break;
else if( chr == '\r' ) {
prevR = true;
break;
} else if( chr == '\n' ) {
if(prevR) {
prevR = false;
continue;
} else break;
} else {
prevR = false;
str.append(chr);
}
} while( read( (Byte*)&chr, 1 ) == 1 );
}
return somethingReaded;
}
Tiskni
Sdílej: