Vývojáři open source operačního systému ReactOS (Wikipedie), jehož cílem je kompletní binární kompatibilita s aplikacemi a ovladači pro Windows, se na síti 𝕏 pochlubili, že ReactOS zvládne počítačovou hru Half-Life.
Byla vydána nová verze 4.8 multiplatformního integrovaného vývojového prostředí (IDE) pro rychlý vývoj aplikaci (RAD) ve Free Pascalu Lazarus (Wikipedie). Využíván je Free Pascal Compiler (FPC) 3.2.2.
Apple container dospěl do verze 1.0.0. Jedná se o open source nástroj pro spouštění linuxových kontejnerů na macOS postavený nad containerization. Napsaný je v programovacím jazyce Swift a optimalizovaný pro Apple silicon.
Bylo vydáno Eclipse IDE 2026-06 aneb Eclipse 4.40. Představení novinek tohoto integrovaného vývojového prostředí také na YouTube.
Asterinas (GitHub) je v Rustu napsané jádro operačního systému poskytující s jádrem Linux kompatibilní ABI. Vydána byla verze 0.18.0. První distribucí postavenou nad jádrem Asterinas je Asterinas NixOS. Nejedná se o oficiální projekt NixOS a nemá nic společného s NixOS Foundation.
Podrobně byla rozebrána kritická zranitelnost v nf_tables (CVE-2026-23111). Další lokální eskalace práv na Linuxu. V upstreamu byla zranitelnost již v únoru opravena. Ve zdrojovém kódu stačilo odstranit 1 vykřičník.
Evropská komise (EK) nařídila americké společnosti Meta, že musí znovu umožnit bezplatný přístup konkurenčním obecně zaměřeným asistentům umělé inteligence (AI) k WhatsAppu a tento přístup musí zachovat až do ukončení antimonopolního šetření. Opatření je dočasné a má zabránit vážnému a nevratnému poškození konkurence na rychle rostoucím trhu s obecnými AI asistenty. Meta uvedla, že se proti rozhodnutí odvolá.
Společnost Anthropic představila AI modely Claude Fable 5 a Claude Mythos 5. Claude Fable 5 je první model třídy Mythos určený pro běžné použití.
Byla vydána nová stabilní verze 3.24.0, tj. první z nové řady 3.24, minimalistické linuxové distribuce zaměřené na bezpečnost Alpine Linux (Wikipedie) postavené na standardní knihovně jazyka C musl libc a BusyBoxu. Přehled novinek v poznámkách k vydání.
Na čem pracují vývojáři v Rustu napsaného mikrokernelového unixového operačního systému Redox OS (Wikipedie)? Byl publikován přehled vývoje za květen. Vypíchnout lze nový scheduler EEVDF nebo port desktopového prostředí Xfce na Redox OS.
)
tinyhello.c:
#include <stdint.h>
int sys_write(int fd, char const* text, uint32_t length) {
uint64_t retval;
asm volatile (
/* SYSCALL instruction invokes the kernel */
"syscall"
/* return value will be read from rax */
: "=rax"(retval)
/* where the input arguments should be placed */
: "a"((uint64_t)1), /* eax = syscall number */
"D"(fd), /* argument 1 (fd) goes to rdi/edi */
"S"(text), /* argument 2 (text) goes to rsi/esi */
"d"(length) /* argument 3 (length) goes to rdx/edx */
/* registers that may contain garbage after the call - for syscalls, they are rcx, r11 */
: "rcx", "r11"
);
return retval;
}
void sys_exit() __attribute__((noreturn));
void sys_exit() {
asm volatile (
"syscall"
:
: "a"((uint64_t)60), "D"((uint32_t)0)
: "rcx", "r11"
);
for(;;); /* emergency stop */
}
void _start() {
sys_write(1, "Hello world!\n", 13);
sys_exit();
}
Lze přeložit jednoduše s gcc tinyhello.c -o tinyhello --static -nostdlib s tím, že výsledný ELF obsahuje hodně balastních sekcí a má cca 9 KiB nestripnutý. Pro zahození sekcí, které tady nejsou potřeba, linker script:
tinyhello.lnk:
OUTPUT_FORMAT(elf64-x86-64)
ENTRY(_start)
SECTIONS
{
. = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS;
.text : {
*(.text);
*(.rodata*);
}
/DISCARD/ : {
*(*);
}
}
Překládá se potom s gcc tinyhello.c -o tinyhello --static -nostdlib -Ttinyhello.lnk a výsledek má 880 bajtů nestripnutý.
Tiskni
Sdílej:
Tato varianta je pro x86-64, protože inline assemblerDá se to napsat i tak, že to podporuje více platforem zaráz. Před nějakou dobou jsem si s tím hrál a zde je výsledek, který podporuje x86-64 a ARM (nebo aspoň 'běžné' ARMy, nějaký specielní možná fungovat nebude):
#include <stdint.h>
const uint64_t _start[] __attribute__((section(".text"))) = {
0xe3a00001909032eb, 0xe3a0200ce28f1014,
0xef000000e3a07004, 0xe3a07001e3a00000,
0x6c6c6548ef000000, 0x0a214d5241202c6f,
0x18ec834800000000, 0x4800000045058b48,
0xa20fc03148240489, 0x0c24548908245c89,
0x142444c710244c89, 0x01c0c74800000a21,
0x0001c7c748000000, 0x480124748d480000,
0x050f00000015c2c7, 0x480000003cc0c748,
0x6c654820050fff31, 0x00000000202c6f6c,
};
Kompiluje se pomocí gcc -static -nostdlib
Přeji příjemnou zábavu :)
Tato varianta je pro x86-64, protože inline assemblerU prvni verze jsem si rikal, jestli by to nebylo citelnejsi psat rovnou v assembleru... Ale napad vzit binarku a prelozit ji s gcc na binarku je dost originelni, to uznavam. ;-]
Ale napad vzit binarku a prelozit ji s gcc na binarku je dost originelni, to uznavam. ;-]Ten není můj, ten je odsud :) Můj je jen ten s tou platformní vidličkou...
supr stromeček žlutej :P :D ;D ;D
- ale DOS byl taky celkově jednodušší a měl méně schopností.
Koncepční otázka ovšem je, zda po něm chtít, aby se spustil
.text
.code64
.globl _start
_start:
movb $1, %al /* syscall num */
movw $1, %di /* file descriptor */
movq $hello_str, %rsi /* text */
movq $(hello_str_end - hello_str), %rdx /* length */
syscall
movb $60, %al
xorw %di, %di
syscall
.data
hello_str:
.ascii "Hello, World!\n"
hello_str_end:
as -64 hello.S -o hello.o && ld --omagic -s -x -static -T script.ld hello.o(tj. x86_64, ne debugovací symboly, strip a statické) Linker script stejný, jenom místo
.rodata tam je .data.
| Tvoj kód/preklad | 864 B |
| + moje úpravy/preklad | 736 B |
| Ušetrene: | 131 B (14,8 %) |
tttttssss echo má nějakejch 40kb :O ;D
tttttssss echo má nějakejch 40kb :O ;DU mě taky... Ale ten se pravděpodobně nepoužije, typicky se použije
echo zabudovaný přímo v shellu...
kde jakoby vubec končí c a začíná asm :O :O
V čem je problém? Kdybys chtěl programovat tímhle způsobem, tak bys vyzobal/reimplementoval různé části standardní knihovny a řešil by sis přenositelnost sám. Teoreticky kdyby standardní knihovna byla moc velký moloch a potřeboval bys z ní jen nějakých 10 %, tak by to třeba smysl dávalo, ale typicky z ní budeš potřebovat větší část a navíc je tu ta přenositelnost… řešit tyhle věci v kódu aplikace mi přijde nesmyslné. Jako ukázka je to fajn, ale… jinak už by dávalo větší smysl to řešit na úrovni jazyka (tzn. úplně obejít céčko a místo něj mít něco jiného, co se napojuje na systémová volání).