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

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


  • Enabled DataBreakpoint(DABR)/INVZEROPAGE support for 970FX/MP CPUs


  • Fixed block continuation exit code generation to be skipped if exiting a block


  • Employ new exec TLS API
  • Open/Lock: fixed softlink support for relative links


  • Added TLS API. This API is used by libpthread and gcc threading
  • Added protection against broken applications calling CloseLibrary on ExecBase


  • Behavioural change: don't truncate names on LNFS file systems but return error. Non-LNFS file system behaviour is unchanged


  • Fixed a PushMethod flood while handling DisplayBeep screen bar background color effect
  • Fixed not to try to open an empty window depth popup when there's only one window opened on a screen


  • Fixed occasional bogus invalid SuperHandle debug


  • Put MMU pagesize to ObjDataSubBase instead of constant query


  • Added PCIXEnableMSI()
  • Give each interrupt Quark thread a unique name with the interrupt ID in it


  • Fixed file/directory name limit to be 127 chars (was 126 previously)
  • Restrict the disk stored fnsize to between 32 and 108 runtime
  • ACTION_KILL_EMPTY: fixed not to crash if performed on a softlinks or a hardlinks to a directory
  • ACTION_RENAME_OBJECT: fixed not to crash if softlink or hardlink to a directory is renamed into another directory


  • Report 64-bit offsets for TD_READ64 and TD_WRITE64 errors. Use unsigned formatting for offset and length and actual
  • ACTION_MAKE_LINK for existing softlink now returns ERROR_OBJECT_EXISTS instead of misleading ERROR_IS_SOFT_LINK


  • Fixed bogus use of DoSuperNew


  • Added the ability to name sensors as if they were gamepad inputs
  • Fixed HID report descriptor parser to make Microsoft Wireless Desktop 900 usable
MorphOS 3.14 Disk Changes

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


  • Fixed the asynchronous dispatch handling to retain source/destination objects. Fixes crashes when closing listers while icons are still loading, etc
  • Fixes in SVG icon file identification
  • Fixed window toolbars not working while the icon zoom slider was visible
  • Fixed Mime Type resolving code not to trash memory on abort or timeout
  • Fixed several memory leaks
  • Fixed a few bogus DoSuperNew calls


  • Disabled PrivateBrowsing by default
  • Implemented a per-URL ignoreSSL setting
  • Added support for mobile version of YouTube website
  • Certificate data from Mozilla as of: Tue Sep 15 21:28:56 2020 GMT


  • Use gnudb instead of the defunct freedb for CDDB lookups


  • Cleaned up gcc compiler defaults
  • Fixes in space handling inside the makefile generator


  • Fixed a ReadArgs leak
  • Avoid writing to read only memory


  • Fixed a bogus CloseLibrary call


  • Don't try to print 32-bit integer as float


  • Updated to libpoppler 20.9.0 (1-Sep-2020)
  • Use stccpy instead of strncpy
  • Activate fit-to-page and n-page layout settings


  • Fixed bogus string truncation for LoadSeg


  • FORCE/S will now temporarily modify parent directory RWED if Deletefile() fails due to read, write or delete protection errors


  • Don't print generic error message on CTRL-C


  • Fixed to preserve file comment when saving a file


  • Added support for preserving directory attributes, comments and time stamps
  • Error out of too deep recursion or out of memory instead of dropping files or collecting wrong entries
  • Error out instead of misbehaving if path grows too large
  • Fixed a zeropage read hit with NULL fname
  • Extract will now make the target directories RWED before extracting files to them
  • comparenames: fixed comparing against directory entries


  • Fixed error reporting


  • Added support for delayed setting of directory protection modes and modification times
  • Fixed couple of out of bounds memory accesses


  • Fixed a bug in the framework startup glue which caused it to fail if a framework has had any new classes included


  • Overloading contextMenuAdd automatically sets MUIA_ContextMenu to true underneath
  • Added a possibility to set Window_Active object via special value
  • Renamed 'new' to 'titleNew' to avoid a conflict with an ObjC reserved 'new' keyword
  • Added an isInObject variant to imsg mouse coord checks
  • Added an entries getter to MUICycle
  • Added new constructors for MUIScrollbar
  • Fixed noNotify string/long/float setters to actually not issue a notify
  • Force MCCListtree to always overload the MUI class internally
  • Implemented MCCListtree drag & drop support with extra callbacks to notify client on node re-arrangement
  • Make sure to handle CONST_STRPTR like STRPTR (as OBString) in method return values
  • Deprecated all Pop hooks. Added convenience contructors for Popstring and Popasl
  • Fixed a small memory leak in MUIMenustrip (would only be freed on quit)
  • Cleanups to make sure constructor class methods use 'self alloc' instead of referencing class names explicitly. Allows for easier overloading
  • ObjectiveC Fast Enumeration support on all MUIFamily subclasses
  • Fixed string conversion issues in classes unable to support MUIA_Unicode


  • Implemented mutableDeepCopy / OBMutableDeepCopying protocol
  • Fixed a bug where [OBMutableSet setWithObjects:...] would try to call 'alloc' on its instance
  • Fixed a bug where OBMutableSet's init didn't initialize the hash table correctly
  • Added protection against adding/removing a nil object to a OBMutableSet
  • Added Cocotron's NSURL port, OBURL
  • Added clipboard support to OBString
  • Added mutable containers copy and removed mutableCopy from OBObject


  • Implemented MUIA_Unicode support


  • Fixed a bug in class LibClose that could result in system instability


  • Fixed scrolling the graph with a partially obscured window while not using Enhanced Display


  • Allow overriding attrs on OM_NEW


  • Implemented the "duplicate last character # times" escape sequence
  • Tweaked the esc sequences generated by arrows+shift on emulators other than Amiga


  • Fixed getting MMA_Sound_Mute attribute


  • Fixed reentrancy issues


  • Enable the reception of unicast and broadcast packets
  • Disable receiver gating where necessary
  • Added an alternative way to read the MAC address


  • Fixed reentrancy issues


  • Added support for directory comments


  • Support LP171WU1(TL)(A2) and compatible FHD panels in 17 inch PowerBooks


  • Fixed a long standing issue where reading to EOF with two reads, seeking backwards and reading again would return wrong data


  • Fixed GetVLayerAttr VOA_FrameBase1: due to a bug it used to return value for VOA_FrameBase0 instead


  • Upgraded to openssl 1.0.2u


  • Upgraded to harfbuzz 2.7.2


  • kill: Added support for using MorphOS PIDs
  • AF_UNIX: implemented getsockopt(), setsockipt(), recvfrom() and sendto()
  • Fixed maximum stack usage tracking. ixstack -s now reports PPC stack usage and size if enabled
  • Fixed opendir() missing error checks and resource leaks
  • Fixed a race resulting in spurious SIGINT signals during network operations
  • Fixed mbrlen()/mbrtowc()/wcrtomb() to use per caller static data when called with NULL mbstate_t
  • Fixed ix_vfork_resume() to mark the vfork()ed thread as safe to call exit()
  • socketpair: better initialization order to avoid double free in error code path
  • SetExcept performace improvements
  • Fixed softlink support (softlink in path) for chmod()/chown()/mkdir()/rename()/ remove()/rmdir()/setxattr()/lsetxattr()/unlink()/utime()/utimes()
  • AF_UNIX: implemented recvmsg() and sendmsg()
  • getgroups: support querying the total number of groups
  • Corrected FindExecNode usage
  • Implemented sockpair()
  • Fixed a memory leak in PF_UNIX (PF_LOCAL) socket close
  • kill: Fixed a bug that prevented busy programs from being sent a signal
  • Fixed wcsrtombs(), mbsrtowcs() and wcstombs()
  • ix_close: added TLS support
  • Fixed dirname() and basename() to handle volume/device/assign in the path
  • Fixed process group signalling to work even when exec*()ing non-ixemul commands. This fixes a long standing bug where CTRL-C was ineffective when ixemul application was executing a non-ixemul command
  • Fixed a deadlock that could occur if a vforked() child would select() a file handle
  • Fixed memory corruption and leak when printf()ing floating point numbers with very large precision
  • Fixed fcntl() F_DUPFD to work with sockets
  • Fixed inconsistent and/or random st_ino. This would make grep randomly think the output was /dev/null and omit output
  • vfork: call TLS destructors before reaching ix_user_cleanup
  • ixprefs: block ix signals when calling OS functions
  • Now properly disables signal processing while in ix_panic()
  • ix_release_socket: set errno to ENOTSOCK if not DTYPE_SOCKET
  • Added missing rlimits, fixed MorphOS' RLIMIT_STACK
  • Reduced ACTION_WAIT_CHAR timeout from 10 seconds to 1 second
  • If exit() is called from vfork()ed process before exec*() or from an asynchron thread will now pop up a requested instead of crashing. Calling thread is suspended. exec*() fails with -1/EINVAL for asynchron thread now.
  • sleep: don't overwrite errno on successful call
  • Added pselect, poll and ppoll functions
  • Added missing signal locking to wbstartup code
  • Fixed mresident applications using vfork_setup_child() getting corrupted sdata/ sbss section pointers if the pointers are modified by the application before the vfork_setup_child() call. In the case of ksh this would result in corrupt char **environ pointer
  • usleep(): don't overwrite errno on successful call
  • Fixed wrong default FPU rounding mode. Now it's round to nearest as specified by ISO C standard
  • Fixed select() to return -1 and errno EBADF if invalid fds are passed in the file descriptor sets
  • Fixed select() to keep the file descriptor sets unmodified on errors
  • exit2: call TLS destructors before atexit() handlers
  • open(): fixed bogus errno in some error code paths
  • glob: if called from 68k app don't crash if errfunc returns 0


  • Fixed reentracy issues


  • Removed the "treat ftp links as ftp" and "treat mailto as mail links" configuration flags


  • Updated to libpixman 0.40.0
  • Added new API functions pixman_image_set_dither and pixman_image_set_dither_offset


  • Fixed reentracy issues
  • Upgraded to ffmpeg 4.3


  • Fixed reentracy issues


  • Load not just env:ttengine.database, but also MOSSYS:Prefs/ttengine.database first. User entries may overload ones from MOSSYS


  • Updated to libogg 1.3.4 and libvorbis 1.3.6
  • Included CVE-2017-14160 security fix


  • Implemented MUIV_Font_Huge
  • Fixed context menu exclude trigger handling
  • String: Masked RAWKEY_PAGEUP/DOWN and INSERT from being interpreted as string input
  • String: Fixed MUIA_String_Placeholder w/ MUIA_String_Secret
  • Listtree: Fixed an edge case where an item being dropped on the very top/bottom of the tree would disappear from view entirely
  • Popmenu: Implemented scrolling of very large menus
  • Popmenu: Fixed hbar layout code to respect the right edge of frame and its spacing
  • Implemented clipping text rendering to avoid Text/TT_Text bleeding from the right side
  • Localized the Colorring. Made Colorring slider/mode setup persistent
  • ASLFO_MaxHeight no longer defaults to 24 but 999
  • Menu: changes in attributes and family members weren't always carried to the parent menustrip leading to MUI using a stale state when displaying the window menu
  • MUI_Redraw: make extra sure that both mri and mri_RastPort are non-NULL before proceeding with any actual draw ops
  • Tweaked dead obj in pushstack error debug message to avoid dumping bogus data
  • Don't decode the alpha channel when loading backgrounds
  • Filter out special frame files from the background texture file panel
  • Fixed help bubbles to display their configured font attributes/colors/effects
  • Fixed Popmenu and Menudisplay not to open disabled menus
  • Fixed MUIA_Window_NoMenus, added GET support
  • Fixed TTFont setup in popup menus
  • Issue a MUIM_Menustrip_WillOpen before opening a menu. Lets apps update menu states without having adjust menu state all the time
  • Implemented MUIA_TextColor
  • Implemented MUIM_List_EndEdit
  • Cleaned up MUIA_Application_IconifyTitle and made it dup the string like other strings of the class
  • RootClass: Fixed a case where issuing OM_RETAIN/OM_RELEASE inside class' OM_DISPOSE implementation would lead to another OM_DISPOSE
  • Added a way to configure a path to a CSS user style sheet. This makes it possible to add a style sheet to a MUI default config
  • Implemented MUIM_InitResize, MUIM_ExitResize that make it possible to handle live resizing differently than regular hide/show
  • Settings: Don't nuke if spellchecker returns no languages
  • Tweaked RootClass' debug messages to be more verbose
  • Slave: fixed forwarding to exclude OM_RELEASE and similar methods


  • Added transparent per task static data: The data is initialized automatically for any application using the bsdsocket.library API functions. This removes the need to open SocketBase separately in each each sub-process


  • Removed the setting flags removed from openurl.library also from the prefs as well


  • Adds UI theme settings (scrollbars, checkboxes, radio buttons, text input fields) for Webkit-based applications that harmonize with the respective MUI settings


  • Fixed an issue with loading localizations
  • Fixed a crash when aborting defragmentation
  • Fixed memory leaks on window resize


  • Fixed to handle bsdsocket.library not being ready at launch time
  • Don't overwite user's ttengine.db anymore

Tools/ScoutNG New

Monitors and hacks system and MUI internals.


  • Fixed to find correct icon path even if launched from shell


  • Load the catalog before constructing the UI