Show HN: NES Contra (1987) port (ASM –> C and then C –> WebAssembly)
A browser-based port of the 1987 NES game Contra converts its assembly code to C and then WebAssembly. It supports solo play and online two-player games. (epoyraz.github.io)
Redox’s ring-buffer project adds an asynchronous communication path between applications and userspace system services, adapting ideas from Linux’s io_uring to Redox’s microkernel design. Applications and services share submission and completion queues plus a shared memory pool, so requests and data can pass without copying or blocking the application. The new redox-ring API, modeled on liburing, supports request batching, shared-buffer allocation, and custom protocols that can also serve general inter-process communication. RamFS and the NVMe driver gained ring support, with tests demonstrating file writes; an asynchronous executor lets drivers process requests as tasks and cleanly cancel pending work when a session ends.
The project reports that ring-based I/O benchmarks run 14-15 times faster than synchronous system-call I/O. Because IPC remains a performance bottleneck, the team also expanded latency benchmarks and made kernel changes that remove redundant locks and lookups and provide a lower-overhead IPC call. Another optimization avoids saving and restoring vector registers during syscall-driven switches, instead zeroing them in accordance with the calling convention. Together, these changes target faster transitions between applications and services as well as more efficient I/O. The work establishes the first ring-buffer implementation in Redox; multi-thread-per-core support for the driver executor remains in progress, and additional device drivers are expected to adopt it.
Summary generated by AI from the linked article. hn.today is not affiliated with Hacker News or Y Combinator.
A browser-based port of the 1987 NES game Contra converts its assembly code to C and then WebAssembly. It supports solo play and online two-player games. (epoyraz.github.io)
PostgreSQL’s TOAST storage made the table much smaller, and counting or scanning rows was faster than with the larger uncompressed table. But reading a field inside every toasted value required far more buffer reads, showing that TOAST can trade space savings for slower access to large values. (pgedge.com)
Large GROUP BY hash tables cause frequent slow RAM accesses, leaving CPUs stalled even when monitoring shows 100% usage. Processing data in smaller chunks can improve cache use and speed up aggregation, even if it requires more CPU work. (pivotlake.io)
Enlightenment 0.28 adds initial NetBSD support, a NetworkManager module, and native PipeWire mixer support while retaining PulseAudio compatibility. The release also improves window management, display handling, and X11 and Wayland support, alongside numerous fixes and code cleanups. (phoronix.com)
Nonna is a TypeScript dependency-injection framework and ahead-of-time compiler that avoids reflection and runtime dependencies. It supports Node.js, Deno, Bun, edge runtimes, and major frontend frameworks, with request scoping and deterministic lifecycle hooks. (nonna.nodeboot.io)
Jepsen found 96 bugs in ParticleDB versions 1.1.4 through 1.1.18.11.rc-22, including crashes, data loss, and serious transaction anomalies. Most issues were fixed, but committed writes could still disappear and serializable transactions still had anomalies; Orkes says a later release resolves the remaining problems. (jepsen.io)
Today's best Hacker News stories, summarized and screenshotted, one email a day.