Please note that this is just an overview and does not mention or explain every new feature.
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.
Quark
- 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
Dos
- ReadArgs: Fixed a buffer overflow
- Fixed several bugs in softlink handling
- RemDosEntry: Fixed an illegal memory read
- ErrorReport: Fixed a race condition
Emulation
- Improved FPU emulation compatibility
Exec
- 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
FatFS
- Fixed a use-after-free bug
Intuition
- 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
Keylargo
- Fixed an initialization-time race condition that would in some cases cause the laptop lid sensor handler to fail
Layers3d
- 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
Mount
- Fixed a race condition in library subprocess initialization
Objdata
- 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
PFS3
- Fixed an illegal memory read in notification handling
- Improved permission handling
RamFS
- Fixes the long standing random bug of "duplicate entries in Ram Disk"
- Avoid using reserved SeqNum values for objects
- Improved permission handling
SFS
- Improved permission handling
Shell
- 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
ShellCmd
- Resident: Fixed the return code when aborted with a CTRL-C
USB HUB
- Fixed the transfer length to update the port change status
Following is a (probably incomplete) list of changes made to the disk based components of MorphOS.
Ambient
- 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.
Applications/Apdf
- Fixed a memory corruption issue
Applications/Flacapella
- Fixed memory leaks
- Fixed potential crash on exit
- Fixed SCSI command timeout
- Fixed sub-command piping
Applications/FlowStudio
- 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 iris-morphos.com for updates.
Applications/Jalapeno
- 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
Applications/Jukebox
- Added notification support
- Iconify on Play settings option
- Fixed several edge cases where memory corruption would occur
- Improved error checking
Applications/Kryptos
- Fixed dos.library calls with bogus arguments
Applications/RDesktop
- Updated to version 1.9
- Fixed a bogus FreeVec() call
- Refactored tooltypes handling
- Worked around an issue with broken 24-bit cursors
Applications/RegTool
- Refuses to run under emulation to avoid confusion
Applications/RemoteShell
- Updated to OpenSSH 8.8p1
Applications/ShowGirls
- Updated to liblcms2 2.13
Applications/Sketch
- Fixed a memory corruption issue
- Fixed circle drawing
Applications/Synergy
- 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
Applications/Transfer
- Fixed a memory corruption issue
- Improved notification support
- Fixed an illegal memory read
Applications/VPDF
- 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 wayfarer.icu for updates.
C/Dir
- Improved error handling
- Fixed the return code when aborted with a CTRL-C
C/Ed
- Fixed a buffer overflow
- Can be used as project default tool now
C/FileWrite
- Fixed wrong return code on success
- Added support for writing large files
C/Fslist
- Dumps DosType both as character string and 32-bit hex identifier
C/IPrefs
- Layer effects settings support
C/LhA
- Fixed a bug stripping device name from path that could lead to duplicate entries being added to archives on update command
C/List
- Added support for listing a locked file
C/Play
- Fixed a use-after-free bug
C/Protect
- 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.
C/Tasklist
- Fixed several stack buffer overflows
C/Type
- Fixed a buffer overflow in error code path
Classes/Frameworks/mui.framework
- 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
Classes/Frameworks/ob.framework
- 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
Classes/Frameworks/ObjFW
- Fixed a bug in cleanup code
Classes/MUI/Aboutbox
- Added support for SVG icons
Classes/MUI/Aboutmorphos
- Updated various links and IRC information
Classes/MUI/Fontpanel
- Fixed an illegal memory read
Classes/MUI/Scintilla
- Call Release from the platform class destructor to avoid leaking resources
- Fixed text encoding issues when rendering with ttengine.library
Classes/MUI/VirtualKeyboard
- 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
Classes/Multimedia/Amossound.demuxer
- Support rewinding with MMM_SEEK_BYTES 0.
Classes/Multimedia/Bmp.decoder
- Bugfixes
Classes/Multimedia/Fir.filter
- Fixed a major flaw rendering the input port unusable
Classes/Multimedia/Multimedia.class
- Fixed a crash due to an uninitialized variable
- Added checks for seek errors or partial code segment reads
- Fixed incorrect pattern parsing
Classes/Multimedia/Normalize.filter
- Bugfixes
Classes/Multimedia/Png.decoder
- Added support for interlaced PNGs
Classes/Multimedia/Videopcm.decoder
- Fixed CMYK conversion bugs
Classes/Screenbar/Cpumonitor
- Added a missing task name
Classes/Screenbar/Eject
- Fixed lockup caused by adding a ':' to a non-existing bar label string
Classes/Screenbar/Grabber
- 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
Classes/Screenbar/Keyinput
- Bugfixes
Classes/Screenbar/Volume
- Fixed to kill the window from outside of the event handler
Classes/USB/Xbox360
- Added several new Xbox controller product IDs
Data/Printers/Gs:
- Bugfixes
Devs/Keymaps/
- Fixes in Italian and Dvorak keymaps
Devs/Monitors/Radeon
- Fixed RadeonDMA_UnmapMemory() for Evergreen and Northern Islands cards
- Evergreen card support fixes
- Fixed R300/R400/R500 untiling
- Added iMac G5 17" iSight compatibility
Devs/Monitors/Rage128
- Fixed DDC support for ADC port on Apple Rage128Pro cards
Devs/Networks/Bcm43xx_wl
- Fixed a system lockup when rebooting the wireless chip due to TX errors
Devs/Networks/Rtl8168
- 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
Devs/Scanners/Fujitsu
- Fixed uninitialized return value in connect
Devs/Scanners/Genesys
- Fixed a possible deadlock
Libs/Camd
- 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
Libs/CGXVideo
- Passes video layer attachment updates to intuition.library
- Added VOA_ColorKeyFill tag to disable layer area colour fill with enabled colour-keying
Libs/Charsets
- ConvertTagList: Significantly improved conversion performance from one byte MIBs
Libs/Clipboard
- Fixes in WriteClipSound
Libs/Commodities
- Added LockBrokerList() and UnlockBrokerList() functions
Libs/CryptoStorage
- Improved file saving strategy, configurable with CST_CloseRollback tag
- CryptoStorageFetch: Don't return CSS_BAD_PASSPHRASE if out of memory when decrypting
Libs/Expat
- Updated to libexpat 2.4.6
Libs/Filesysbox
- 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
Libs/Freetype
- Updated to FreeType 2.11.1
Libs/Harfbuzz
- Updated to harfbuzz 3.3.2
Libs/Ixemul
- 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
Libs/Locale
- 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
Libs/Lzma
- 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.
Libs/Png
- Fixed illegal memory write on low memory situation
Libs/Random
- Improved random seed saving
Libs/Spellchecker
- Updated to libvoikko 4.3.1 and voikko-fi 2.5
Libs/Thumbnails
- Updated to ffmpeg 4.4.1
- Reduced stack memory usage
- Fixed memory leaks
Libs/TinyGL
- added various glBlend#?() functions
- Fixes in GL_BGRA->GL_RGBA conversion code
Libs/TTEngine
- Fixed rendering to WA_HasAlpha windows
- Fixed TT_TextFit swapped width and height parameters
- Improved performance
- Implemented TT_Encoding_System and TT_DestAlpha
MUI
- 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
Prefs/Compositing
- Added window fade effects settings
Prefs/Debug
- Fixed indication of MemTrack debug
Prefs/Network
- Fixed an illegal memory read
Prefs/Notifications New
New preferences panel for notifications handled by MagicBeacon.
Prefs/Preferences
- Fixed a use-after-free crash on exit
Tools/IWizard
- The Mac Auto-partioner will now reject drivers smaller than 2GB instead of silenting failing
- Removed Odyssey provisions
Tools/NetStat
- Corrected to display IP address 0.0.0.0 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.
Utilities/Fileimagectrl
- Improved input parameters handling
Utilities/Grabber
- Added notification support
Utilities/GraphicBoards
- Added support for drivers with multiple outputs supported
Utilities/More
- Can be quit with CTRL-C now
- Increased default window dimensions
- fixed TAB handling
Utilities/Multiview
- Fixed an illegal memory read when pasting images
- fixed TAB handling for standard text files
Utilities/MIDI/MIDI Logger New
MIDI events inspector.