CHANGELOG 0.3.2.md — Notepad

Added

  • Complete sxgui: a Win9x-style widget toolkit. From 5 basic controls to a full toolkit, keeping the allocation-free retained-mode model: focus traversal, a textfield with a real caret, scrollbar and scrolling listbox, action reasons (CLICK/CHANGE/ACTIVATE), radio groups, a combobox drawn inside its own backbuffer, a menu bar with on_command(id), modal dialogs as a state machine in the same main loop, groupbox, progress bar and textview.

  • The sxgui_app app frame. It encapsulates the gfx session and the main loop every widget app repeated (input polling, RESIZED, gated repaint, present, 16 ms throttle), with optional on_key/on_paint/on_resize hooks.

  • widgetsdemo grows into a reference gallery of the whole toolkit.

Changed

  • aboutapp and filesapp ported to sxgui. aboutapp becomes declarative; filesapp keeps its filesystem logic but delegates the list, preview, menu bar and status bar. Both lose their static 8 MiB backbuffer and manual event loop.

  • The SDK's malloc arena drops from 48 MiB to 8 MiB by default. The static heap lives in the BSS and the kernel maps the whole BSS at exec, so each app cost ~50 MiB resident and three of them exhausted physical memory. External builds keep 48 MiB through -DSX_HEAP_SIZE for heavy apps like Doom.

Fixed

  • Physical memory leak on fork from section view pages. vm::clone_address_space copied every present user page and only then discarded the section view ones, without freeing the copy. Since the desktop maps every client surface's view, each launch lost ~4 MiB per view and after a few of them no exec worked until reboot.

  • desktop_client.path stored the pointer received at launch, which for client-requested launches pointed at the request's stack buffer: the window title and the logs read dangling memory. The client now keeps its own copy.

Version 0.3.22026-07-035 changes