The ReactOS team is proud to present the release of ReactOS version 0.3.12.
This release cost the team a lot of effort, not only because it includes a huge amount of changes and improvements, but also due to significant progress in the system architecture, stability and bringing more modern features of the NT kernel into ReactOS.

Almost a year has passed since the last issue. And, although this, of course, a considerable period of time, the time spent was necessary for the stabilization of the OS due to the nature of the work done. Which, at the beginning, was focused on one single field - the trap handler mechanism - which ultimately resulted in its complete rewriting. This step made even greater changes necessary, developed in the processing of many other areas, the development of new technologies and their implementation in the core. What together allowed us to get a much more modern kernel, containing much less code than the previous one. In turn, this required a long phase of testing in order to achieve a level of stability and compatibility higher than in the previous implementation.
In the process of preparing this release, 259 errors were corrected, including 61 regressions, some of which originated back in ReactOS 0.3.7. Ten of the corrected errors were registered more than three years ago; The oldest bug fix is ​​# 969, which was discovered five years ago.
The list of the most significant changes:
- Memory Manager - The ARM team continues to work hard on the memory manager, replacing each component, brick by brick, while maintaining the functionality of the old controller. And, although version 0.3.12 did not completely switch to the use of the new dispatcher, the increase in speed, stability and compatibility of the new model is obvious.
- Nonmaskable Interrupt Support (NMI) - ReactOS is now capable of handling nonmaskable interrupts and displaying Red Screen of Death, which is extremely useful for tracking hardware errors detected by a processor or chipset. In addition, support for non-standard calls for non-masked interrupts was introduced, which is important for some server systems. And to top it off, support for creating crash dumps in the event of non-maskable interrupts has been partially added: the function can be useful when the machine hangs and the crash dump button is used.
- Trap handler rewritten - Almost all of the processor error handling code, traps, exceptions, and system calls are now written in C, not in assembler. Most of the obsolete and / or no longer used code blocks have been deactivated, and the code used for debugging and significantly reducing system performance is now disabled by default. In addition, system ports for x64 and ARM include much more such code. And finally, the code itself has become more readable and better structured, which allows the use of optimization in the compilation process to produce executable code optimized for the processor as much as possible, instead of using manually written assembler blocks specific to specific CPU models. Currently, work is underway to remove the last remaining assembler blocks.
- EMS - The Emergency Management System has been partially implemented. Download flags supported by Microsoft are supported, debugging data is sent to the serial port. Work is underway on adding EMS logging capabilities and replacing the legacy KDBG debugger with EMS. Work is also underway on the SAC driver (a dedicated administration console) to facilitate work with EMS.
- Compatibility with PnP - Various changes were made to the code to improve the work with the equipment and support for loading third-party drivers.
- ACPI Improvements - The ARM team developed the basic drivers needed to support batteries and UPS / third-party batteries, including support for the ACPI Composite Battery specification. In this release, ACPI support is disabled because the ACPI module is still in development.
- New PCI-X driver - The ARM team was slowly working on a new PCI bus driver. Previously, ReactOS used a very simple, and, for the most part, a PCI bus driver dotted with “stubs” with missing support for most of the functions of real PCI buses, PCI-to-PCI bridges, etc. With the new driver, both compatibility with real hardware (and not just with virtual machines) and system performance should increase significantly.
- SxS support - A joint (side-by-side) code was added, as well as functions for loading and searching manifest files. This is a big step forward to ensure compatibility with modern applications using this technology.
- Correction of damage to the pool - Perhaps the most serious of these alleged leaks was corrected thanks to the joint efforts of the key developers of ReactOS, who applied an integrated approach, including the use of a modified assembly of the QEMU virtual machine.
- Timer and message handling support have been rewritten. Incorrect processing of extraordinary system messages caused some applications to freeze, so the message handling code was rewritten. Also, this release contains rewritten timer implementation code, which solves many problems, the most famous of which is “the need to move the mouse to load pages in FireFox”.
- Build for x64 architecture - Although the port for the x64 platform is still at an early stage due to the limited capabilities of the kernel, most of the major problems with the build are resolved and all the necessary functionality has already been added to the kernel. All this, in turn, is added to the trunk, and now it can be compiled for the x64 target platform. Thanks to autobuilds, it became possible to quickly detect and fix possible code breaks. True, don't expect the system to get to the GUI launch stage when it boots!
The list of changes for version 0.3.12 is fundamentally different from the lists of changes from previous releases in that the main emphasis was placed on an understandable and concise statement of the main changes in the release. So instead of duplicating this list here, we invite you to review it and find out what has been achieved.
')
Despite the fact that the ReactOS team attended many public events and conferences in various parts of the world, we practically did not publish news, which could seem a period of calm, or even stagnation. We hope that this release will show you that all this time we have worked as never before.
Download systemTranslators: evilslon , dsp2003,
fox_anthony , smerch, aspotashev,
Jeditobe , uzver