by vicmarcal | April 14, 2018
The ReactOS Project is pleased to announce the release of version 0.4.8 as we continue to work on releasing every three months.
As you may know, our previous 0.4.7 version was the first one developed in our Git/GitHub repository. 0.4.8 is the nice sequel and a good way to measure the GitHub impact on the ReactOS project. Since ReactOS reached GitHub, it has been forked 248 times. A nice amount understanding ReactOS is not a framework or a library, but a final product. These forks represent a nice amount of newcomers: translators, designers, coders and testers. Thanks to all of them, and the ReactOS regular devs, 209 new Pull Requests and 1094 commits have made it through to this 0.4.8 version.
ReactOS keeps pushing to bring the best possible user experience. Therefore the ReactOS User Interface in 0.4.8 has received extra care.
Taskbar settings and dialogs have been rewritten by Giannis so now the auto-hide, toggle lock and always on top options work. These settings were visible before but as you might have noticed they've never been working at all. Meanwhile, David fixed several bugs and glitches of the notification area. Thanks to him, Giannis and Hermès, now balloon notifications are properly supported, queued and shown while a range of tooltip problems have been solved.
Talking about the notification tray, due to Ged’s work, icons of killed and finished process are now automatically removed, even when apps crash. This is something that Windows doesn't even provide with Win10, and many Windows users may have noticed.
Selecting multiple desktop icons was impossible prior 0.4.8. Enjoy it now thanks to Giannis’ work. His amazing work doesn't stop there, bugs related to property dialogs have been squashed, like the one preventing drive and folders capacity from being shown. Deletion and renaming of folders and files should work reliably after Pierre fixed a major leak.
Additional new features included in this release should also boost the user experience, such as the shell autocompletion brought to you by Mark, a nice bonus on top of the improved relative path handling done by Stanislav. Also, now Network drives can be dismounted directly from explorer due to Pierre’s work, and Eject and Disconnect menu items are now implemented thanks to Katayama.
From the visual point of view, several glitches related to the redrawing of static text elements, scrollbars, button captions, fonts and text background colors were fixed in this version. As a bonus, now ReactOS also detects more themes and is much faster when rendering big amounts of text.
Regarding internationalization, now when changing the language in ReactOS, the font substitution settings are properly overwritten thanks to Katayama, and time is now correctly set due to Doug’s work.
Combine all these features with the Kernel and Filesystem fixes that 0.4.8 is bringing and you'll understand why the ReactOS team is so excited regarding this new release.
NT6+ Software support and Games
With software specifically leaving NT5 behind, ReactOS is expanding its target to support NT6+ (Vista, Windows 8, Windows 10) software. Colin, Giannis and Mark are creating the needed logic in NTDLL and LDR for this purpose. Giannis has finished the side-by-side support and the implicit activation context, Colin has changed Kernel32 to accept software made for NT6+, and Mark keeps working on the shim compatibility layer. Although in a really greenish and experimental state, the new additions in 0.4.8 should start helping several software pieces created for Vista and upwards to start working in ReactOS. Microsoft coined the term backwards compatibility, ReactOS the forward compatibility one.
A new tool, a DrWatson32 alike, has been created by Mark and added to 0.4.8, so now any application crashing will create a log file on the desktop. This crash dump details the list of modules and threads loaded, stack traces, hexdumps, and register state. Therefore, this new tool should help us understand what went wrong when the software crashed. Adding these reports, plus the debug logs, will provide ReactOS developers a good amount of information to understand what went wrong and how to create the needed fixes.
In 0.4.7, several games were having trouble initializing properly when using native graphics drivers. Jérome has not just fixed this issue but also a palette regression in DirectX which was garbling colors when playing games.
Kernel Stability and new features
Kernel stability in this version comes from the Memory Manager, File system and Cache Manager fixes. The latest Coverity scan, which tracks old and detects new issues, shows a great evolution since 0.4.7.
Several bugs have been squashed in the ReactOS CC and Freeloader, allowing it to boot in 96MB hardware (smaller RAM need than our 0.4.7 release). Talking about hardware, Pierre has fixed several bugs when writing the bootloader to disk and Serge has updated ACPI with extended features, that should bring some extra compatibility.
In 0.4.7 the initial Cache Manager bugfixing was a great step forward in terms of stability. From 0.4.7 to 0.4.8, Cache Manager has gone under a massive review lead by Thomas and Pierre. This work revealed several bugs thanks to the tests specifically created to ensure this review doesn't introduce new regressions. Among others, a 17-year-old bug which was introducing corruption in the file system and which is now finally fixed.
However, the Cache Manager work hasn't just been focused on bug-hunting, but also adding new and needed features. Now the ReactOS 0.4.8 Common Cache supports Lazy Writing and Read Ahead, which are major steps toward a performant operating system by reducing file access latencies.
The other major component, the ReactOS Memory Manager, has also received many fixes thanks to Timo, some revealed by Coverity and others due his work on the x64 ReactOS port which enforces a pointer-size agnostic Memory Manager.
Hardware support, NTFS and other drivers
One of the main objectives of each new ReactOS version is to improve the compatibility with hardware. In case you find any issues running ReactOS in your real hardware, please don't hesitate to file a bug report at the ReactOS bugtracker.
Thanks to these logs, we've discovered that old hardware and some virtual machines were failing to boot when an empty floppy drive was detected. This bug has now been fixed and these hardware rigs are now enjoying ReactOS. Also these logs helped to detect several issues in PNP IRP handling which has been fixed by Thomas for this new version.
Aside from fixing bugs in drivers, ReactOS includes some new ones in this version, such as a virtual floppy driver and a virtual CD-ROM driver. Also the CDFS driver has been replaced with the MSPL’ed original one after a full review. This review, as a curiosity, has revealed at least one bug, which has been sent upstream to Microsoft GitHub with its proper fix.
The NTFS driver coded by Trevor, during GSOC 2016/2017, has been finally added. The NTFS driver has been an ongoing effort started by Hervé and Pierre, and which needed 2 different Google Summer Of Code to reach its current state. Under the mentoring of Pierre, Trevor Thomson has been coding and documenting his titanic NTFS coding efforts. If you're interested in file systems or how NTFS works and the tools needed to understand its behavior, you shouldn't miss the blog posts of Trevor. Thanks to these efforts ReactOS is able to read NTFS partitions in a more robust way, covering NTFS specific cases, and since 0.4.8, ReactOS introduces initial NTFS writing support. The NTFS writing feature is disabled but can be enabled through registry to test its experimental support.
ReactOS, as part of the open source ecosystem, also uses bits of several projects. 0.4.8 has been synced with Wine 3.0, Freetype 2.9 and Ext2 0.69, among other projects.
General notes, tests, and changelog for the release can be found at their respective links. A less technical community changelog for ReactOS 0.4.8 is also available.
ISO images are ready on the ReactOS Download page.
The oldest bug reported in Jira and fixed was CORE-5127 (advapi32: OpenTraceA (Sysinternals DiskMon2.01 dies with unhandled exception upon startup). Since 0.4.7, 340 bugs have been resolved: 211 marked as fixed, 37 as duplicates, 42 as won't fix, 21 as incomplete, 29 as cannot reproduce. 320 bugs fixed were directly related with the operating system, 10 from ReactOS online services, 5 from ReactOS test suite and 5 from ReactOS Build Environment. Pull Requests committed: 209 Forks: 248