• v1.3.0 aa58d049e6

    v1.3.0 Stable

    boranseckin released this 2026-03-28 22:40:05 -04:00 | 10 commits to main since this release

    Raw console & line editor

    The shell now uses a full line editor (user/src/line.rs) with cursor movement, word editing (Ctrl-A/E/U/W), 16-entry history, and Ctrl-C/D support. The kernel console gains raw mode and foreground PID tracking to support this. Ctrl-C now delivers a kill signal to the foreground child process rather than panicking.

    A new ioctl syscall (23) provides the mode-switching interface, with device commands grouped under a single Ioctl struct in the ABI.

    User-space I/O is refactored around new Read and Write traits (mirroring std::io), with Stdin, Stdout, Stderr, and Fd all implementing them. User programs updated to use the trait methods and print!/println! macros throughout.

    Downloads
  • v1.2.0 26695d6ba6

    v1.2.0 Stable

    boranseckin released this 2026-03-26 20:06:41 -04:00 | 24 commits to main since this release

    Lazy page allocation

    sbrk() now advances the process break without immediately mapping physical pages. Pages allocated on first access via the store/load page fault handler. This avoids wasting physical memory on heap regions that are never touched.

    Copy-on-write fork

    fork() no longer copies the parent's physical pages into the child. Instead, both processes share the same pages, marked read-only with a COW bit (RSW bit 8 in the PTE). On the first write, the faulting process gets its own private copy. Reference counting in the physical page allocator ensures pages are freed only when the last reference is dropped.

    Both features share the same page fault handler (vmfault) and are covered by dedicated test programs (sbrk, cow).

    Downloads
  • v1.1.0 e4a016e4a9

    v1.1.0 Stable

    boranseckin released this 2026-03-19 22:13:55 -04:00 | 35 commits to main since this release

    uart::write_sync() bypassed UART.lock() entirely, allowing kernel print and panic output to interleave with interrupt-driven user-space writes on the wire.

    Fix by acquiring UART.lock() in write_sync(), and aborting uart::write() on panicking so the lock is released promptly.
    The panic message is pre-formatted into a stack buffer so UART.lock() is held for the entire message in one write_sync() call.

    Downloads
  • v1.0.0 d5bc2a6765

    v1.0.0 Stable

    boranseckin released this 2026-03-04 20:11:43 -05:00 | 37 commits to main since this release

    Downloads