Below you will find an extensive list of the work that went into MorphOS 3.16.
Please note that this is just an overview and does not mention or explain every new feature.
MorphOS 3.16 boot.img Changes

The following is a (probably incomplete) list of changes made between the 3.15 and 3.16 release of MorphOS to the ROM (boot.img) based components.


  • Implemented PermMemTrack memory tracking which may be enabled with MemTrack=PermMemTrack/S boot argument. This triggers crashes in many buggy applications and should only be used for development and testing
  • dprintf() logs are now time stamped


  • ReadArgs: Fixed a buffer overflow
  • Fixed several bugs in softlink handling
  • RemDosEntry: Fixed an illegal memory read
  • ErrorReport: Fixed a race condition


  • Improved FPU emulation compatibility


  • Implemented permanent memory tracking for debugging
  • Fixed RawDoFmt and NewRawDoFmt to prefix %p with 0x
  • TLSFree: Fixed to zero the index values for all tasks
  • Tasks now have 3 more signals available


  • Fixed a use-after-free bug


  • Reimplemented handling of monitors with multiple outputs, enabling mouse movement between displays
  • Implemented window close/open/activation fade in/out effects
  • Improved screen switching code to avoid unnecessary flicker
  • Extended Monitor APIs
  • Added New Shell menu entry to the screen depth bar, appears with control pressed and opens the legacy SYSCON: window
  • Fixed a crash when closing the last screen on a monitor
  • Fixed string gadget rendering


  • Fixed an initialization-time race condition that would in some cases cause the laptop lid sensor handler to fail


  • Added opacity transitions to support intuition's fade effects
  • Handle LAYERS_NOBACKFILL in legacy/off-screen clipping mode
  • Fixed not to try to blend alpha bitmaps onto CLUT screens
  • Fixed a potential race condition when closing a screen
  • Improved performance when closing screens


  • Fixed a race condition in library subprocess initialization


  • Fixed access to uninitialized memory if ELF loading fails for example due to a truncated file
  • Added validation for the symbol and reloc target section numbers
  • Files with out of bound target section numbers will fail to load now instead of crashing
  • Ensure that string tables are always '\0' terminated (invalid file might lack the '\0' termination)
  • Added safe lookup functions for section and symbol names that check for valid section/symbol index and range in the string buffers
  • Corrected wrong size of the .sdata section in the legacy seglist


  • Fixed an illegal memory read in notification handling
  • Improved permission handling


  • Fixes the long standing random bug of "duplicate entries in Ram Disk"
  • Avoid using reserved SeqNum values for objects
  • Improved permission handling


  • Improved permission handling


  • Shell now passes the last command return code as the shell return value. This makes it possible to use NP_ExitCode to get the return value of the command executed in dos/SystemTags() when SYS_Asynch is TRUE


  • Resident: Fixed the return code when aborted with a CTRL-C


  • Fixed the transfer length to update the port change status
MorphOS 3.16 Disk Changes

Following is a (probably incomplete) list of changes made to the disk based components of MorphOS.


  • Added missing total system memory to system details tab.
  • Re-enabled saving panels from prefs
  • Fixed use-after-free bugs in icon handling code
  • Fixed resource leaks in error code paths
  • Fixed a resource leak with SVG icon resize
  • Fixed rendering issues related to deficons zooming
  • Fixed duplicate entries appearing to My MorphOS view on volume removal or unmount
  • Fixed multiple unterminated taglists
  • Fixed use-after-free bug in IconInfo ARexx command
  • Fixed several potential buffer overlow issues as different places.


  • Fixed a memory corruption issue


  • Fixed memory leaks
  • Fixed potential crash on exit
  • Fixed SCSI command timeout
  • Fixed sub-command piping


  • Fixed busylooping when opening a file into a new tab while automatic spellchecking is enabled
  • Fixed several buffer overflows and memory leaks
  • Default scintilla keyboard shortcuts updated to work with all keymaps
  • Fixed not to switch to UTF-8 encoding when enabling TTEngine fonts
  • Fixed an illegal memory read

Applications/Iris New

Iris is a modern IMAP based email client for MorphOS. While it is now included with the OS, it will follow an independent release cycle. Check for updates.


  • Worked around an issue with failing ISO generation when a directory named "C" was included
  • Fixed memory leaks
  • Fixed potential crash on exit
  • Fixed SCSI command timeout
  • Fixed sub-command piping


  • Added notification support
  • Iconify on Play settings option
  • Fixed several edge cases where memory corruption would occur
  • Improved error checking


  • Fixed dos.library calls with bogus arguments


  • Updated to version 1.9
  • Fixed a bogus FreeVec() call
  • Refactored tooltypes handling
  • Worked around an issue with broken 24-bit cursors


  • Refuses to run under emulation to avoid confusion


  • Updated to OpenSSH 8.8p1


  • Updated to liblcms2 2.13


  • Fixed a memory corruption issue
  • Fixed circle drawing


  • Implemented Barrier server support in both client and server applications
  • Client: Additional setting to issue a left or right command key when pressed together with control
  • Client: Switched to openssl3.library


  • Fixed a memory corruption issue
  • Improved notification support
  • Fixed an illegal memory read


  • Updated libpoppler to 22.02.0
  • Fixed a use-after-free bug
  • Updated to liblcms2 2.13

Applications/Wayfarer New

Replaces Odyssey as the system's default web browser. Wayfarer follows an independent release cycle, check for updates.


  • Improved error handling
  • Fixed the return code when aborted with a CTRL-C


  • Fixed a buffer overflow
  • Can be used as project default tool now


  • Fixed wrong return code on success
  • Added support for writing large files


  • Dumps DosType both as character string and 32-bit hex identifier


  • Layer effects settings support


  • Fixed a bug stripping device name from path that could lead to duplicate entries being added to archives on update command


  • Added support for listing a locked file


  • Fixed a use-after-free bug


  • Improved error output

C/Quote New

Command to quote strings in various ways. Supports encoding for standard DOS commandline argument, DOS pattern matching, ARexx script string, URI components, sh shell argument, javascript string, C strings, hex and base64.

C/SendBeacon New

Tool to send notifications via shell and scripts.


  • Fixed several stack buffer overflows


  • Fixed a buffer overflow in error code path


  • Worked around an issue with menu shortcuts caused by a switch to UTF-8
  • -(LONG)flagsOf: was always returning 0
  • Implemented drag & drop for the MUITitle class
  • Fixed a use-after-free bug


  • Don't create OBNotificationCenters for subthreads - they were never used
  • Fixed a potential double-free of OBNotificationCenter in ob_debug.framework
  • Calling OBRunLoop perform no longer blocks the caller if the callee's runloop is currently performing on its OBPerformQueue
  • OBURL is a little less strict when parsing url's query component, fixes cases where Wayfarer would be unable to display a URL address in its URL bar
  • Fixed a use-after-free bug
  • Fixed a signals issue where a broken app could free other task's signals


  • Fixed a bug in cleanup code


  • Added support for SVG icons


  • Updated various links and IRC information


  • Fixed an illegal memory read


  • Call Release from the platform class destructor to avoid leaking resources
  • Fixed text encoding issues when rendering with ttengine.library


  • Added AltGR key support
  • Qualifier is now correctly handled and doesn't lock up the virtual keyboard anymore
  • Multiple capital letters may now be emitted
  • Fixed shift button logic by implementing correct left/right shift handling


  • Support rewinding with MMM_SEEK_BYTES 0.


  • Bugfixes


  • Fixed a major flaw rendering the input port unusable


  • Fixed a crash due to an uninitialized variable
  • Added checks for seek errors or partial code segment reads
  • Fixed incorrect pattern parsing


  • Bugfixes


  • Added support for interlaced PNGs


  • Fixed CMYK conversion bugs


  • Added a missing task name


  • Fixed lockup caused by adding a ':' to a non-existing bar label string


  • Added notification support
  • Added clipboard support
  • Fixed save image error path, added error notifications
  • Fixed an illegal memory read
  • Fixed a crash closing the preview window with the ESC key


  • Bugfixes


  • Fixed to kill the window from outside of the event handler


  • Added several new Xbox controller product IDs


  • Bugfixes


  • Fixes in Italian and Dvorak keymaps


  • Fixed RadeonDMA_UnmapMemory() for Evergreen and Northern Islands cards
  • Evergreen card support fixes
  • Fixed R300/R400/R500 untiling
  • Added iMac G5 17" iSight compatibility


  • Fixed DDC support for ADC port on Apple Rage128Pro cards


  • Fixed a system lockup when rebooting the wireless chip due to TX errors


  • Added additional device id 8161
    (e.g. TP-Link 3468 V4)
  • Increased auto negotiation timeout
  • Fixed link speed detection for newer Realtek 8168/8111 cards


  • Fixed uninitialized return value in connect


  • Fixed a possible deadlock


  • Reworked channel/event mask filtering. Realtime messages now flow correctly
  • Fixed double MidiLink detection
  • Improved internal time stamping
  • Semaphore usage fixes
  • NextMidiLink wasn't traversing list correctly from the second node


  • Passes video layer attachment updates to intuition.library
  • Added VOA_ColorKeyFill tag to disable layer area colour fill with enabled colour-keying


  • ConvertTagList: Significantly improved conversion performance from one byte MIBs


  • Fixes in WriteClipSound


  • Added LockBrokerList() and UnlockBrokerList() functions


  • Improved file saving strategy, configurable with CST_CloseRollback tag
  • CryptoStorageFetch: Don't return CSS_BAD_PASSPHRASE if out of memory when decrypting


  • Updated to libexpat 2.4.6


  • Fixed a bug in ChangeMode that always resulted in the change to be of CHANGE_FH type, regardless of the requested type
  • Fixed handling of the PRIORITY tooltype


  • Updated to FreeType 2.11.1


  • Updated to harfbuzz 3.3.2


  • Ixemul now uses true PIDs instead of task pointers, avoiding an identity confusion that could happen when a new task appears at the same address as already terminated one
  • exec*(): Fixed a potential crash that could occur if application using exec thread-local storage somehow managed to exit in an uncontrolled way
  • _exit(): Changed to behave like exit() when called from the main application
  • atexit(): Fixed a crash if out of memory
  • Added extra call of TLS destructors right before releasing malloc memory. This fixes a potential use-after-free in some situations
  • realloc(): Fixed a double ixremove() resulting in subtle memory corruption issues and crashes
  • getrlimit(): Fixed RLIMIT_STACK
  • Improved the crt0.o to use ix_get_long(IXID_USER,0) to get user data pointer
  • wcsrtombs(): Fixed with NULL destination
  • *printf(): Added %ls and %lc support
  • wcrtomb(): Fixed return value with NULL buffer pointer
  • strftime(): Added %F, %u and %z support
  • Implemented wcsftime()
  • ioctl(): Fixed FIOCLEX and FIONCLEX
  • setjmp()/longjmp()/sigsetjmp()/siglongjmp(): Now preserve and restore AltiVec registers when available


  • FormatString(): %p includes the 0x prefix by default now, just like regular printf()
  • Updated to tzdb 2021e
  • Improved support for being called from a task


  • Updated to liblzma 5.2.5
  • Avoid unexpected memory deallocations by always using the global memory pool
  • Fixed to handle potential allocator overflows

Libs/Magicbeacon New

Application interface library for notification support.

Libs/OpenSSL3 New

Shared OpenSSL library based on OpenSSL 3.0.1 release.


  • Fixed illegal memory write on low memory situation


  • Improved random seed saving


  • Updated to libvoikko 4.3.1 and voikko-fi 2.5


  • Updated to ffmpeg 4.4.1
  • Reduced stack memory usage
  • Fixed memory leaks


  • added various glBlend#?() functions
  • Fixes in GL_BGRA->GL_RGBA conversion code


  • Fixed rendering to WA_HasAlpha windows
  • Fixed TT_TextFit swapped width and height parameters
  • Improved performance
  • Implemented TT_Encoding_System and TT_DestAlpha


  • Fixed an issue with intuition menus text encoding
  • Added MUIA_Dtpic_FreeVert/Horiz
  • Added ARGB / Alpha support to Pendisplay, Coloradjust and Popcolor
  • Improved handling of styled fonts across MUI
  • Implemented MUIC_Popcolor, MUIA_Pendisplay_XRGB, MUIA_Coloradjust_XRGB
  • MUI_CreateCustomClass: Corrected check for instance data size overflow
  • MUIA_Unicode wasn't carried from Menustrip.mui when creating popup menu titles
  • Fixes in MUIA_Unicode support
  • Dtpic: Exposed image raw data so that one can overload MUIM_Draw
  • Ensured the object triggering a notification cannot go away while the notification is pending
  • Signals live resize mode before hiding root object
  • Spellchecking fixes in String.mui/StringU.mui classes


  • Added window fade effects settings


  • Fixed indication of MemTrack debug


  • Fixed an illegal memory read

Prefs/Notifications New

New preferences panel for notifications handled by MagicBeacon.


  • Fixed a use-after-free crash on exit


  • The Mac Auto-partioner will now reject drivers smaller than 2GB instead of silenting failing
  • Removed Odyssey provisions


  • Corrected to display IP address if the interface has no IP address
  • No longer hogs a signal while applicaiton has the library open.

Tools/WebFontInstaller New

Replaces OWB's DownloadFonts

Utilities/Commodities/Expose New

Application switcher. Press Command+Tab to switch between applications.

Utilities/Commodities/MagicBeacon New

Notification management system.


  • Improved input parameters handling


  • Added notification support


  • Added support for drivers with multiple outputs supported


  • Can be quit with CTRL-C now
  • Increased default window dimensions
  • fixed TAB handling


  • Fixed an illegal memory read when pasting images
  • fixed TAB handling for standard text files

Utilities/MIDI/MIDI Logger New

MIDI events inspector.