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

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


  • Improved segment lookup performance


  • Added Firewire debugging to bootargs on the Macs
  • Added SMU-config for some mac_ppc64 architectures
  • Added basic PMac12,1/PPC970FX frequency switching support
  • Fixed an out of bounds stack buffer access
  • Added Mac NVRAM support


  • Fixed a potential issue when scanning for ESC sequences


  • Implemented multi-head support
  • Optimised C2P and P2C routines used when blitting between LUT8 and planar bitmaps
  • Fixed a BltBitMap crash with RGB15PC to ARGB32 bitmaps
  • Improved BltBitMap: Any RGB bitmap can now be blitted to any other RGB format bitmap. Implemented fast path for copy between same pixel format bitmaps
  • Improved BltTemplate: Added support for BGR15, BGR15PC, BGR16, BGR16PC and RGBA32 bitmaps
  • Improved ReadRGBPixel and WriteRGBPixel: Added support for BGR15, BGR15PC, BGR16, BGR16PC and RGBA32 bitmaps
  • Improved Draw and BltPattern: Added support for BGR15, BGR15PC, BGR16 and BGR16PC bitmaps


  • Fixed DeleteFile to be able to delete items with softlink(s) in their paths
  • Fixed DateToStr DTF_SUBST to use "Future" for dates beyond tomorrow
  • Fixed RunCommand FPU state handling
  • Added new API to manage CLI numbers
  • Improved internal CLI number management


  • Improved Alert to allow extra debug with EDebugFlag Init
  • Improved Process ID management


  • Changed to use a lower task priority to -1 while the disk validator is running

G5 Thermal Management

  • Basic sensor support for PMac11,2/PMac12,1 models
  • Reduced SMU access tick interval to avoid cyclic fan spin-up
  • Added dynamic CPU frequency switching (full/half speed as supported by 970FX) for PowerMac12,1/iMacG5 based on CPU load statistics

Helios FireWire/IEEE1394 Stack New

  • Integrated Helios FireWire support for mac_ppc32/mac_ppc64 architectures


  • Implemented natural wheel scrolling direction (as in, swapping up and down)


  • Fixed sub-menu exclude handling with shortcuts
  • Fixed a possible hit in FindMonitorOutputID() for NULL screen


  • Improved SMU support


  • Minor speed optimisation in DoHookClipRects


  • Improved Alert handling of system critical tasks


  • Resource for reading / writing the NVRAM on Mac computers.


  • Fixed UHFF_NOSHORTPKT to work correctly


  • Fixed to avoid reading out of bounds memory when writing last partial block to a file
  • Fixed to print total bytes correctly even if total is larger than 2TB, other string formatting fixes
  • Fixed memory leaks in error code paths
  • Fixed a potential hang due to using stdio to talk to console file handle
  • Fixed illegal memory accesses from notifications when deleting directories


  • Mac resource that supports PMU I2C bus transfers.

PowerMac7 Fan Control

  • Added a mechanism for users to tune certain fan control parameters
  • Use drive bay temperature sensor to control the backside fan


  • Fixed the I2C channel for RevD PBooks (caused fan speed control to fail)


  • Raised max notifications to 8, added additional sensor placement strings
  • Fixed to not access random memory if sensor id is invalid


  • Adjusted to use the new dos.library CLI API


  • Added support for SMU I2C transfers


  • Improved segment lookup performance


  • Improved performance for local time functionalities


  • Ignore the new PS4 gamepad, letting xbox360 class take over
MorphOS 3.12 Disk Changes

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


  • Panels fall back to def icons when needed
  • Added function key shortcuts
  • Fixed cross-fade issues
  • Improved file copy
  • Fixed internal commands to work if preceded by a single quote
  • Added mailto: support in commands
  • Added a "Comment" column to the search results view, it is possible to search for comments now
  • Fixed rename from the icon context menu
  • Fixed an overlap issue with icon labels on desktop
  • Fine-tuned the Matroska media file entry in recognition.db
  • Added a context menu item to clear the current entry or the whole list
  • Fixed disk eject via the main Ambient menu, added a hotkey
  • Opening a lister which is already open, brings the lister to the front
  • Fixed inconsistent viewer behaviour
  • "Open Parent" from the context menu of a panel button brings the lister to the front, if its already open
  • Added an option to enable transition effects in panels


FlowStudio has seen major improvements across the whole application. The most important changes are listed below. In addition, various bugfixes and smaller improvements have been made.
User Interface
  • Improved Fullscreen mode. It is now a proper backdrop window
  • Support for bold and italic for TTEngine rendering for default (non-lexed) text
  • FlowStudio now uses TTEngine requesters if that font backend is used
  • Updated default colors for various filetypes
  • Control+space is no longer a magic key combo for autocomplete but is now a configurable menu shortcut. (a user reset of menu shortcuts might be needed to activate the new default)
  • Lua scripts that are launched from within FlowStudio now use a C-based implementation (based on the Scite one). This has several benefits but most importantly, allows callbacks and interactive Lua functionality. event_tests.lua, TicTacToe.lua and HexEditor.lua demonstrate this functionality. The Lua-over-Arexx bridge should still be used to control FlowStudio from external tools.
  • Lua scripts can add lexing functionality. A simple example is provided in Scripts/LexTest.lua
  • Added 'Step Into' and 'Step Over' functionality
Filetype and programming language support
  • Added Hollywood language support, including context sensitive lexing, autocomplete, call tips, case corrections, function lister, documentation lookup, compiler output with jump-to-error links.
  • Filetypes are now largely configured through external text files located in FlowStudio/FileTypes/. This allows the user to modify/update e.g. keywords and API files.
  • Templates are now filetype-specific and located in e.g. FileTypes/C/Templates/.
  • A Lua script can now be automatically launched depending on filetype. Script path is specified in e.g. FileTypes/CPP/TypeConfig
  • Added Code sense and API files for Arexx, C, CPP, FreeBasic, Hollywood, Javascript, Lua, Pascal, Perl and Python.
  • Added function lister support for Hollywood, Pascal, Lua, Perl, Python, Javascript, Bash and Freebasic files (on top of C, CPP, ObjC, ObjCPP and AmigaE that already had such support)
  • Added a simple fallback autocompleter that works on words in the current file. It kicks in if no automplete word is found in the active API file but can also be launched directly (the default shortcut is ctrl-shift-space)
  • Added a way to build a project without either creating or invoking a makefile. Useful for simple projects or languages like Hollywood.
  • Improved C (and derivatives) project indexing through the new flowindex.library (shipped with the SDK).


User Interface
  • Added ability to save user choices made via the "view" menu so users can now permanently enable or disable UI elements such as the quicklinks or status bars, thus properly customize the browser user interface based on their personal preferences
  • Migrated website status icons from the lower left corner to the URL input field to improve visibility for important user information such as whether a website uses a secure connection or not
  • Merged the formerly separate button toolbar and url / search bar to greatly optimize the screen space used up by the essential browser UI and to maximize the visible content area
  • Combined "reload" / "stop" buttons to further save space so the "stop" button is only visible when a page is loading and "refresh" is only visible when a page has finished loading
  • Moved the "new tab" toolbar button to the right side as new tabs are inserted on the right as well and this helps to establish a visual connection between the button itself and the action or behavior it causes
  • Removed old loading animation from the toolbar as it merely duplicates the functionality of the newer and more informative tab-based loading animations
  • Minimized window margins to further increase the visible content area
  • Fixed: "about:" and "topsites:" pages are now correctly identified as local content
Core Technologies
  • Upgraded to use the new MorphOS spellchecker library
  • Implemented support for HTTP/2 and TLS 1.3
  • Improved to allow up to 32 simultaneous connections to a single host
  • Updated curl, openssl, sqlite, ffmpeg, libxml2, libxslt and other components
  • Updated the TLS cipher config to match modern Firefox
  • Avoid AHI audio issues by downsampling audio to maximum 48000 Hz
  • Fixed several buffer overflows, race conditions, use after free issues and memory leaks
  • Fixed a CURLE_WRITE_ERROR with for example
  • Fixed a potential crash related to web sockets
  • Disabled attempts to use AltiVec on CPUs lacking a compatible vector unit
  • Fixed the fonts downloader


  • Added a Discogs cover source
  • Use HTTPS for networking


  • Fixed memory leaks


  • Updated the core from the latest RDesktop sources
  • Updated to use OpenSSL 1.1.1, added TLS 1.2 support
  • Added basic 32-bit/pixel support
  • Fixed RDP printer extension crashes
  • Added support for TLS Version selection
  • Added some 16:9 predefined resolutions to display list
  • Fixed a security vulnerability. The vulnerability existed in RDesktop versions from MorphOS 3.4 onwards.


  • Updated to OpenSSH-7.8p1 and OpenSSL 1.1.1


  • Added option to set firmware file from the preferences for drivers which need it


  • Fixed not to use AltiVec code on CPUs lacking the vector unit


  • Fixed adding servers
  • Fixed OpenSSL use
  • Fixed several buffer overflows, race conditions, missing error checking and memory leaks
  • Fixed several UI issues
  • Fixed a crash when disconnecting from FTP servers
  • Updated to libssh2 1.9.0, enabling use of ECDSA and ED25519 key types for SFTP


  • Updated to libpoppler 0.80.0
  • Fixed a NULL read access if PS output file can not be opened


  • Fixed to return an error if setting the time fails


  • Fixed a memory corruption bug


  • Fixed to return (delayed) error if any delete operation fails for some reason


  • Added natural scrolling direction support


  • Added support for listing formats that do not have date stamps


  • Improved to set the system domain if provided by DHCP. Domain will not reset when DNS servers are adjusted


  • Fixed a long standing bug where Search would hang when searching softlinked files
  • Fixed to limit the initial buffer size to 512KB to enable CTRL-C to work on very large files


  • Use new sysdebug.library seglist query API
  • Fixed FIND option
  • Removed MAPFILE option


  • Updated to libssh2 1.9.0, enabling use of ECDSA and ED25519 key types


  • Adjusted to use the new dos.library CLI API


  • Improved output layout


  • Improved code generation performance


  • Improved softlink handling
  • Added NOLINE/S which inhibits adding the last newline if it is missing in the original file


  • Fixed Which NAME: (volume, device or assign) to work correctly


  • Fixed a memory corruption bug


  • Added Unicode support to most of the classes


  • Added support of the ObjFW runtime
  • Enabled the use of Lightweight Generics on all containers when the compiler supports them
  • Reduced the amount of signals needed by the RunLoop
  • Fixed OBMutableArray::-mutableCopy
  • OBString::-stringByAddingPathComponent: return self if component is nil
  • Fixed __weak support
  • Reworked cxx constructor/destructor handling to work with both gnu runtime and objfw runtime

Classes/Frameworks/ObjFW New

  • ObjFW is a portable, lightweight framework for the Objective C language. Its shared runtime library enables ObjectiveC ARC on MorphOS.


  • Added a Hollywood lexer
  • Fixed TTEngine font support
  • Improved call tips and their visuals
  • Enabled Scintilla autocompleter
  • Uses the new prindex.library (from the SDK)
  • Added basic support for ObjectiveC code completion


  • Rewritten and added again

Classes/Reggae/bzip2.demuxer New

  • Demuxer for uncompressing bzip2 streams

Classes/Reggae/gzip.demuxer New

  • Demuxer for uncompressing gzip streams


  • Added HTTPS support


  • MMA_MimeType tag support added

Classes/Reggae/xz.demuxer New

  • Demuxer for uncompressing xz streams


  • Fixed illegal memory access when displaying the low battery info bubble


  • Fixed a memory corruption bug


  • Display N/A instead of invalid sensor readouts
  • Added more sensor placements


  • Made it possible to enable a specific amplifier plugin and customised equaliser parameters for PMac Cube speakers


  • Added more Xbox360 compatible gamepads and the new PS4 gamepad
  • Fixed the int > double divider value for analog triggers on x360 gamepads
  • Dissociate the XB1 gamepad from the wireless endpoint (fixes the controller talking to the console via WiFi despite being connected to a MorphOS host via USB)


  • Dual-head support for selected Radeon R3xx setups (PowerMacG5 with AMD / ATI R96xx as well as PowerBook 5,x via external DVI)
  • Other improvements and bug fixes


  • Fixed a configuration update bug when setting system time backwards


  • Force app binding for all USB scanners, helps with scanners with many interfaces already bound to other classes
  • Fixed memory leaks


  • Added more than 150 EPSON scanner models as supported
  • Updated to the latest SANE version

Devs/Scanners/Snapscan.device New

  • New driver for scanners based on Snapscan chipset.


  • Support for querying the amount of pending data in the pipe


  • Convert UTC timestamps to local time using current system time zone


  • Convert UTC timestamps to local time using current system time zone


  • Convert UTC timestamps to local time using current system time zone


  • Convert UTC timestamps to local time using current system time zone
  • Fixed multiple memory leaks
  • Fixed several crashes in error conditions
  • Handle corrupt filesystems more gracefully
  • Fixed a bug that could cause issues with multiple simultaneous NTFS mounts


  • Support for querying the amount of pending data in the pipe


  • Support for profiles for GS related printing
  • Added built-in Ghostscript 8.70


  • Fixed a memory leak
  • Fixed missing error checking
  • Fixed a memory corruption bug


  • Convert UTC timestamps to local time using current system time zone


  • Fixed illegal memory accesses


  • Updated to libcairo 1.16.0


  • Fixed a crash when a buggy monitor driver is used


  • Added support for CEA Extension Version 3


  • Fixed a buffer overflow
  • Fixed a memory leak


  • Updated to expat 2.2.7


  • Convert object timestamps between UTC time and local time based on currently configured system time zone


  • Updated to libfreetype 2.10.1


  • Fixed a stray character after the parsed date string


  • Updated to harfbuzz 2.5.3


  • Fixed vfork() to clone the parent PPC stack size
  • Added support for calling utime()/utimes() on a open file descriptor. The file time is restored on close()
  • calloc: return ENOMEM on integer overflow
  • Fixed getcwd(NULL, n) memory leaks in some error code paths
  • Fixed getcwd(NULL, 0) to allow longer than 256 char paths
  • Fixed getfsstat() to return only filesystems that respond to ACTION_DISK_INFO
  • Fixed statfs()/fstatfs() to handle errors more gracefully and to properly lock the signals when holding the doslist lock
  • Improved SAS/C math compatibility by adding pow2/pow2f/pow2l
  • Updated to include the BSD extensions: lgammal_r, sincos, sincosf and sincosl (old incompatible sincos was renamed to __obsolete_sincos)
  • Enabled protos for all long double versions of ISO/POSIX math functions
  • Added ccosl, ccoshl, cexpl, csinl, csinhl, ctanl and ctanhl; cot/cotf/cotl are available when !__STRICT_ANSI__
  • Added support functions for threading


  • Fixed ParseDate() whitespace handling
  • Fixed DateToStr() DTF_SUBST to use FUTURESTR for dates beyond tomorrow
  • Updated the time zone database to 2019c


  • Prefer left analog stick to left hat switch. Can be reversed by setting LOWLEVEL_XBOX_USEHATSWITCH environment variable. As the result, games using lowlevel.library will treat the left analog stick of an Xbox360 compatible gamepad as the main joystick


  • Added LuaOpenLibs() which on MorphOS only opens 'package'


  • Updated to lzma 5.2.4


  • Rewrote the library core to be more reliable


  • Updated to pixman 0.38.0


  • Fixed loading of very large images


  • Bugfixes


  • Added support for profiles handling in all drivers
  • Added PPD files for Samsung printers New
  • Added PPD files for Epson ESC-PR printers New
  • Fixed crashes in some rare conditions
  • Added driver for Samsung and Xerox printers (splix based) New
  • Added driver for Epson ESC/P-R printers New
  • Added driver for HP PCL5 printer New


  • Fixed invisibility not working in string gadgets


  • Rewritten to use libhunspell / libvoikko as the spelling engine
  • Spellchecker is now Unicode aware
  • Added several default dictionaries to the system - all dictionaries must be in Hunspell format, UTF-8 encoded
  • Fixed several miscellaneous bugs


  • Updated to ffmpeg 4.0.4
  • Fixed the playback frame rate


  • Added support for generic vertex arrays
  • Vertex program inputs are now correctly mapped
  • Supports the new texture/generic inputs in vertex programs
  • Fixes non-power-of-2 textures
  • Added support for the npot textures. Support for the vertex attributes for sp
  • Fixed varying to pass over all 4 components instead of just the first 2
  • Support GBR and BRG swizzling in fragment programs
  • Fixed initial texture state for texture 0
  • Only normalise array input if the normalise flag is passed
  • Added sanity checks to the texture integer settings code
  • Added the missing INPUT_TEX4 that caused everything after it to fail
  • Fixed some glitches when using a R300/R400/R500 without DMA support


  • Improved performance
  • Ported TTEManager to MorphOS, making use only of native MUI classes
  • Fixed several memory and semaphore leaks


  • Bugfixes


  • Fixed a ZIP parsing bug that could lead to incorrect file sizes being reported


  • Updated to zlib 1.2.11


  • Added Unicode support to all Area subclasses. Enables Unicode support in MUI applications
  • Implemented spell checking in String
  • Fixed MUIV_List_????Hook_StringArray support in subclasses
  • List.mui asynchronous drag & drop support
  • Added a placeholder string to String.mui
  • Fixed function key filtering in String.mui
  • Fixed incorrect string concatenation
  • Added a flag to disable drag shadows
  • Fixed a broken MatchIX replacement


  • Fixed several minor bugs


  • Added a 1080p@60Hz CVT RB2 mode, to be used on hardware that has issues with pixel clocks close to 165MHz on DVI (like the Mac mini)


  • Support for natural scrolling direction
  • Fixed to hide Pegasos specific PS/2 options on other machines


  • Added an Iris configuration
  • Fixed several UI quirks


  • Added automatic configuration of Epson and Samsung USB printers


  • Implemented Boot Chime volume settings on Macs


  • Resolve the Home: path on save


  • Fixed to preserve Odyssey blocked.prefs on upgrade
  • Changed to use "https://" for ISO download URL
  • Removed the obsolete Odyssey update check


  • Refresh the partition list if a selected device entry is selected/clicked again
  • Added support for MacroSystem Casablanca partition scheme


  • Fixed displaying corrupt object names in the progress bar


  • Fixed a potential deadlock with some file systems


  • Updated to use Objective-C ARC