This is the changelog for ReactOS™ version 0.3.14 (released 7 February 2012), an open-source operating system designed to be binary executable – and device driver-compatible with Microsoft™ Windows NT™ and subsequent Microsoft operating systems such as Windows 2000™ and Windows XP™. ReactOS is written by the ReactOS development team, and the last previous version of ReactOS was version 0.3.13.
- Giannis Adamopoulos
- Johannes Anderwald
- Aleksey Bragin
- Dmitry Chapyshev
- Thomas Faber
- Benedikt Freisen
- Jérôme Gardou
- Dmitry Gorbachev
- Cameron Gutman
- Rafał Harabień
- Kamil Horníček
- Gabriel Ilardi
- Alex Ionescu
- Amine Khaldi
- Eric Kohl
- Timo Kreuzer
- Matthias Kupfer
- Michael Martin
- Roel Messiant
- Ged Murphy
- Sylvain Petreolle
- ReactOS Portable Systems Group
- Daniel Reimer
- Gregor Schneider
- Pierre Schweitzer
- James Tabor
- Christoph von Wittich
- Art Yerkes
- Carlo Bramini
- Elton Chung
- Vincenzo Cotugno
- HansH (hans at atbas dot org)
- Adam Kachwalla
- Mario Kacmar
- Edijs Kolesnikovics
- Nathan Lineback
- Lioncash (mathew1800 at gmail dot com)
- Nikolay Myltsev
- David Quintana
- Lee Schroeder
- Samuel Serapion
- Anton Yarotsky
Third Party Attribution
- Alexandre Julliard
- Alexander Law
- Shinobu Maehara
- Owen Rudge
- Michael Stefaniuc
- Dmitry Timoshkov
- Wine Project
- Jan Blomqvist-Kinander
- congruwer at yahoo dot co dot uk
- Song Fuchang
- Ștefan Fulea
- Radek Liška
- Mario Kacmar
- Igor Paliychuk
- Jeisson Toscano
- Yurij Vodkin
- Michael Wu
- Angel M. Vazquez
- Mike Gray
- Colin Finck
- Ziliang Guo
- Olaf Siejka
Generic 0.3.14 Changes
- CMake and MSVC efforts continue and a variety of linking bugs have been resolved due to differing strictness between GCC and MSVC.
- Service control manager events are now logged in the system log.
- Service startup and shutdown has been cleaned up significantly.
- The pagefile has been limited to 2 GB in size due to FAT limitations.
- Services will now always return ERROR_SUCCESS when they have successfully started.
- Both the VBE and VGA drivers are being marked as VGA compatible as a hack due another bug preventing VirtualBox's video driver from loading when the VBE driver is installed.
- Wireless network support has been merged into ReactOS. Currently ReactOS is able to join unsecured and WEP secured wireless networks.
- There exists a memory manager bug that consistently occurred when attempting to install ReactOS using the VirtualBox 4.x series. The issue manifests as a hang when the installer attempts to copy over the mshtml.dll file. A hack was applied that appears to eliminate the issue, but users who encounter it can also use VirtualBox 3.x or another virtual machine platform.
- Skype and TuxPaint both crash right now.
- 3DText: Rotation is now independent of computer speed.
- Calc: Buttons have been realigned to better match calculator in Windows XP.
- CharMap: Skeleton for advanced view implemented. Font zoom when scrolling and changing fonts has been fixed.
- Cmd: File IO functions have been replaced with memory IO functions for batch files.
- Device Manager: New device manager using ATL has been begun. Main window focus defaults to treeview to allow easier navigation by keyboard.
- MSPaint: Cut function implemented.
- Notepad: Notepad is now marked as unicode.
- Ping: Option parsing has been made stricter and more robust.
- Rapps: Links have been converted from FTP to HTTP until underlying Wine library starts supporting FTP.
- Regedit: Ability to parse and display REG_RESOURCE_LIST values added. User is now prompted when importing from commandline. Fixes to handling of REG_MULTI_SZ values.
- SndVol32: Application to control setting the volume in ReactOS.
- Spider: Yes/No dialog is now used for exiting the game instead of Okay/Cancel.
- Taskmgr: Terminating an application now uses 1 as the exit code.
Control Panel Applets
- A variety of translation and memory usage fixes.
- Appwiz: Directories can now be passed to the create shortcut wizard.
- Desktop: The wallpaper and desktop background is only applied when they have been changed. Color scheme selection has been fixed.
- Sysdm: All hardware profiles are now displayed. Homepage link control now correctly shows the focus window. GPL license is now properly displayed.
- FAT32 boot sector pointer arithmetic fixed, resolving error when installing FAT32 boot sector.
- Floppy disk is now correctly formatted to FAT12 before the bootloader is installed and booting from floppy works again.
- OemName in boot sector is no longer overwritten.
- Volume Boot Record only is now an install option so that the MBR will not be overwritten.
- Input/output parameters are now probed when a request comes in from user mode.
- Status codes of unhandled IRPs are no longer modified.
- Reading along non-aligned blocks has been fixed.
- A leading period in front of a file name no longer causes asserts as it is valid for long filenames.
- Verification code moved so that they are in the codepath for more functions.
- FsRtlIs*InExpression functions are now working after backtracking was implemented.
- Interruption of waits have been reworked to avoid potential deadlocks and corruption.
- CCB access is now managed using reference counting, elimination a race condition and corruption during 2nd stage.
- IRP_MN_QUERY_POWER and IRP_MN_SET_POWER are now sent to all enumerated devices when a power state change occurs.
- A volatile device tree is created during 1st stage booting so that the HAL loaded during 2nd stage will not have to deal with phantom devices.
- ACPI is now automatically enabled when the ACPI HAL is loaded, and disabled when the standard HAL is loaded.
- ACPICA updated to 20110922.
- Special devices are now identified with unique IDs.
- Physical address retrieval has been implemented.
- Reading and writing PCI configuration mistakenly interpreted a value representing bits as representing bytes, causing memory corruption and overreads. This issue is now resolved.
- Support for Scatter/Gather DMA operations has been added.
Plug n Play
- IRPs sent to PnP devices during enumeration are now compatible with XP/2003/Vista.
- Duplicate loading of drivers is now properly resolved.
- Device removal has been reworked so that the remove command will propagate down to the children of devices. When any device in the top level fails to honor the remove request, the remove command is canceled for all devices that received the original remove command.
- Time setting functions are now implemented.
- Trap handling code continues to be separated into architecture specific blocks as needed.
- Processor number count is now defined in one place instead of having a different version for each architecture.
- Debug trace code has been cleaned up to avoid crashes in certain situations.
- More Interlocked functions have been converted into C from assembly, improving portability.
- Trap handling for user-mode traps has been fixed.
- Text display using bootvid is now disabled after phase 1 initialization, eliminating graphical glitches when debug to screen is enabled.
- A variety of internal data structures have been fixed thanks to the new kernel mode unit tests.
- Resource acquisition now returns the correct boolean value depending on whether the caller wishes to wait for the resource to be available.
- Assembly trap handlers have been moved so that a 32bit relative jump is always to ensure consistency now that a wider range of interrupt values may be used.
- Execution yielding has been modified to match behavior on Windows, including attempting to locklessly check the processor control block.
- The kernel now correctly reports whether there are pending APCs during a KiSwapContextExit call.
- Names for internal IO functions have been renamed to match those on Windows.
- IopDecrementDeviceObjectHandleCount, IopInterlockedIncrementUlong, IopInterlockedDecrementUlong, IopNotifyAlreadyRegisteredFileSystems, and IoEnumerateRegisteredFiltersList functions implemented.
- Additional I/O device registration and removal functions relating to storage devices have been implemented.
- The kernel now handles unexpected device removals.
- Removal of locks when debug information is associated is now fixed.
- The correct number of serial ports is now registered in the global configuration table.
- Output after doublefaults improved.
- The mouse is now disabled when reading from keyboard.
- Output counting fixed so that new commands will show even after previous command created large amounts of output.
- Kernel debug pool implemented. The debug pool is designed to help driver developers find memory usages errors in their code.
- Session space address layout initialization has now been separated on a per-architecture basis.
- Continued work on memory management on AMD64 platform.
- SEH usage has been streamlined to avoid an infinite loop when locking an address space.
- Working set balancer code has been reworked to trim pages during low memory situations.
- Alignment of memory blocks fixed up to make sure operations are done on page-sized blocks.
- Traversal of virtual address tree has been fixed and optimized.
- Mapping of memory sections has seen fixes to support the new loader.
- A variety of locking related fixes.
- CC now will flush dirty pages if it cannot satisfy a memory request from available free pages.
- LWIP has been incorporated into ReactOS to serve as the TCP/IP driver.
- Inflight disconnect IRPs are now canceled during socket closure.
- Cancellation of operations and shutdown of connections has been reworked considerably. This included waiting for all pending requests to be fulfilled, issuing correct signals to initiate shutdown, and cleaning up lingering operations to make sure all data is delivered.
- Data is no longer corrupted when the receive buffer is smaller than the incoming data.
- Events whose conditions have already been fulfilled before a wait operation was called are immediately notified now.
- AFD now immediately listens for new connections instead of waiting for the current connection to be accepted, helping increase throughput.
- Arbitrarily large socked addresses are now correctly handled.
- SO_LINGER and SO_DONTLINGER support is now implemented.
Network Driver Interface Specification
- NDIS now reports itself as 5.1 conformant.
- Memory allocations are now done at correct interrupt levels or have been made safe to do at lower interrupt levels.
- A variety of DMA functions have been implemented, granting drivers access to Scatter/Gather functionality.
- Addressing of slave DMA devices that do not support 32bit addresses has been fixed.
- PnP issued IRP handling has seen fixes.
- The default packet and buffer pools have been increased to help deal with high network traffic situations.
- IPPacket usage has been overhauled to fix a variety of memory issues and performance improvements when using third party network drivers.
- IPv4 packets with headers larger than 20 bytes no longer cause a buffer overflow.
- Thread handles for startup processes in Run and RunOnce keys are now properly closed, fixing ghost command prompts on first startup of Explorer.
- Network connections start menu item now opens the network connections folder.
- Hotkeys that require the Windows key are now supported.
- Explorer returns 1 when it exited without error.
- Custom positioning is now possible, making positioning of icons look more like that of Windows.
- Start menu initialization has been improved to better show what fails.
- A ReactOS registry key is used for ReactOS specific features.
- FreeLoader now splits the memory it needs into two different heaps, one that is preserved and passed onto the kernel and one that is discarded once booting is complete. This helps reduce the memory footprint of the OS when it first starts up.
- FreeLoader no longer allocates entire pages for every small memory allocations, reducing fragmentation and overall memory usage during booting.
- A variety of fixes for dealing with bios memory maps. These maps could have a range of problems including invalid entries, overlapping regions, and not aligning entries along page boundaries. FreeLoader also no longer overwrites itself when loading the HAL due to invalid memory maps.
- Wine-like debug macros ERR, FIXME, WARN, and TRACE have been introduced.
- Boot drive and partition is now stored in shared memory instead of a register due to register value being erased during switch to long mode for 64bit booting.
- FreeLoader is now able to switch back and forth between realmode and long mode on 64bit platforms.
- FreeLoader no longer attempts to load referenced DLLs from directories other than system32.
- Interrupt Descriptor Table setup is now in C instead of assembly.
- Page entries are offset on ARM platforms to eliminate wasted entries that represented unusable addresses.
- A variety of changes were made to where data was placed in low address memory to conform with Windows 2003 expectations.
- A hack was added to support booting with "exotic" languages.
- The VESA bios signature is now checked before VESA extensions are reported as being present.
- Support for booting from ramdisks further improved.
- A problem booting with Award BIOSes has been resolved.
- Filesystem drivers used by the boot process have seen various fixes.
- The disk geometry has been changed to be 63 sectors per track and 255 tracks per cylinder to match modern conventions.
- Synced to 0.41b2.
- Timing values and sending of ATAPI commands has been modified to better deal with VirtualBox.
- Initialization and resetting of the floppy controller have been reworked to prevent deadlocks in certain situations.
- The count of floppy driver has been increased, fixing an issue where the drive would not show in Explorer.
- Hotplugging of PS/2 mice now supported if one was present at boot time.
- Extended mice keys are no longer always treated as power keys.
- All interrupts are enabled at the same time to avoid the controller going unresponsive.
- Timing changes for better performance when transmitting output.
- A specific serial port can now be specified.
- A hack was added to bind all keyboard devices to the same keyboard class device when no default setting is present.
- False interrupt resources are no longer reported.
- Additional IRPs relating to device removal have been implemented, including ones that inform the PnP manager a device cannot be disabled or removed.
- Backoff mechanism has been added to the buffer allocation operation.
- Resource cleanup has been fixed to not attempt to free resources that were never allocated.
- Initial implementation of Special Administration Console driver begun.
- Initial transfer of data transfer and related DMA operations, very preliminary.
- Linking of queueheads and cleanup of used resources has been fixed. Queueheads identify a list of queued transfer descriptors.
- usbdriver has been renamed to usbdrv.
- The status is now correctly set to not be STATUS_PENDING, which caused the keyboard driver to wait indefinitely. Keyboard input using usbdrv should now work.
- Mesa's 3D driver is now recognized as HW_VENDOR_SOFTWARE.
- Legacy resources are correctly reported to the PnP manager.
- All PCI buses are now checked instead of just the first eight.
- Minor code cleanup to avoid usage of magic numbers.
- A hack that resulted in the device object's name differing from what was stored in the registry has been removed, fixing mouse integration in VirtualBox.
- Various AMD64 related fixes.
- Mode index 12 and video mode 12h are no longer confused, permitting ReactOS to boot once more when VGA mode is selected.
- RtlGenRandom has been hacked to be less dependent on the current time, producing better random values. This fixes non-unique RPC IDs that were causing problems for services.
- Start arguments are also passed to ANSI services now.
- Querying of service statuses has been fixed.
- Registry query values have been fixed to avoid memory leaks and corruption.
- The command packet transfer code between the service control manager and the service dispatcher has been rewritten.
- Forwarders have been added for functions implemented in setupapi.dll.
- Subclassing is currently disabled when themes are disabled. This is a hack due to bugs in subclassing and requires the user to reboot if they wish to turn themes on.
- All CRT DLL entrypoints have been normalized.
- Floating point class has been reimplemented and pass all related winetests.
- Object attribute support completed.
- The entire TDI entity database and interface table are no longer leaked after calls to query interfaces.
- Path related functions have been rewritten, taking into account a variety of encoding conversions and buffer usage.
- Beep has been refactored to follow the same chain of operation as on Windows.
- Manual INF selection has been fixed by fixing retrieving of an environment variable and properly null terminating the string returned by GetDllLoadPath.
- Functions handling environment variables have been reworked to perform better.
- Pending I/O is now supported.
- Pointer probing functions have been fixed.
- Stack creation has been fixed to behave more like in NT 5.2 and later.
- Heap allocation functions have been cleaned up with additional parameter checks, error checks, and failure cases.
- System information functions have been reworked, removing unsupported architectures and some preparation work for WoW64 support in the future.
- The time API now does its own conversions instead of relying on an external API.
- Setting and retrieving handle contexts has been implemented.
- Setting of the last error code has been fixed.
- Fiber support has been greatly expanded, along with underlying thread support.
- Several synchronization and event related bugs have been fixed, along with a new set of macros.
- A major winesync took place in kernel32 of all code imported from Wine. Most of the major changes occurred in locale/language functions.
- Loader related functions in kernel32 have been rewritten as part of the overall loader rewrite.
- Conversion between ANSI and Unicode API objects has been fixed, resolving many longstanding bugs.
- Mailslots has been fixed to use static unicode strings in the TEB for conversions.
- The LSA object database has been implemented.
- Required policy attributes are now initialized during database creation.
- Work has been done to create a database of serial ports on a computer and name them appropriately.
A new loader has been implemented, which respects more complex loader options and is better able to resolve dependency issues between various DLLs.
- Security cookie initialization now correctly creates a 16bit cookie when asked, instead of always creating a 32bit cookie.
- Thread Local Storage initialization has been fixed.
- SEH has been applied to more parts of the new loader to protect against errors.
- DLL loading has been improved, including optimizing checks for known DLLs.
- ME_CharFromPoint has been fixed to not rely on Wine's incorrect implementation of GetTextExtentExPointW and a patch has been sent upstream.
- Difference between Wine's implementation has been greatly reduced.
- The network address is now taken into account when trying to create a named pipe and correctly fails if the address is invalid.
- A new heap manager with better support for various heap allocation flags has been implemented.
- New path functions that handle differing types of encoding have been implemented.
- Device installation no longer fails if an INF file already exists, which fixes VirtualBox additions installation.
- Property sheet handling has been improved, eliminating memory leaks.
- When creating device driver keys, ReactOS now checks to see if the device already has a key and uses that one instead of creating a new key.
- A new C++ implementation of shell32 has been merged in. The C++ implementation was done to make implementing the COM aspects of shell32 easier and cleaner.
- Shell extension registration still uses the implementation from the old shell32 due to as yet unresolved issues in the new shell32's implementation.
- A variety of path parsing related fixes to help correctly display paths and volumes.
- The install date is now correctly set in the registry.
- A random computer name is now generated in setup. Computer name is also now limited to 15 characters instead of 63.
- System installation no longer relies on functions from setupapi that should not be exported.
- A variety of string encoding conversion updates and fixes.
- Class window procedure checks have been fixed, which prevents misbehaving applications from calling wrong class procedures.
- Bitmap leaks when dealing with icons have been fixed.
- A variety of drawing bugs in menus, buttons, and other regions have been fixed.
- Usage of arrow keys in menus has been fixed.
- Work continued on right to left language support.
- Scroll bar controls have been been improved and pass significantly more winetests.
- A reference leak when GuiConsoleOpenUserRegistryPathPerProcessId failed to open registry keys has been fixed, resolving ghost console processes in the LiveCD.
- The keyboard and mouse input threads have been merged into a single CSRSS thread.
- Desktop class rewrite completed, fixing several window drawing issues.
- CSRSS is currently hacked to allow connecting back to itself.
- Hard error messages are now formatted as ANSI strings.
- Initial implementation of Sound Sentry CSRSS API, nonfunctional right now due to missing winsrv.dll.
- CSRSS now properly creates shared memory sections to attach to every client to transfer static data.
Kernel-mode subsystem server (Win32K)
- Theme support has been merged in.
- Path drawing has been fixed and now passes all related winetests.
- Keyboard layout loading has been fixed.
- All top level windows are now forced to update the size and position of their non-client areas.
- Mode enumeration when a second video adapter is present has been fixed.
- Timer resolutions now match those in Windows.
- A variety of additional timer fixes to resolve input message handling.
- Retrieving the current process' window station has been simplified and fixed.
- A variety of hotkey registration fixes have been made, including corrected error codes and not permitting the overriding of special combinations.
- Significant reworking of TrackMouseEvent API, due to added requirements imposed by themes.
- Debug channels are now supported, permitting the activation from user mode extended debug output.
- The GDI handle manager has been rewritten, fixing major memory leakage with a new GDI pool. Synchronization is now handled using a lock-free reference counter.
- GetKeyState has been rewritten based on Wine's implementation. State is now dependent on whether a keyboard message has been processed or not instead of the current state of the keyboard.
- Message callbacks have been fixed.
- Additional set active window tests have been fixed.
- SxS support has been added for window classes.
- Keyboard input processing now matches behavior on Windows.
- Clipboard implementation has been rewritten to match Windows design.
|Changelogs / Versions|
|0.0.x Series||0.0.8 | 0.0.9 | 0.0.10 | 0.0.11 | 0.0.12 | 0.0.13 | 0.0.14 | 0.0.15 | 0.0.16 | 0.0.17 | 0.0.18 | 0.0.19 | 0.0.20 | 0.0.21|
|0.1.x Series||0.1.0 | 0.1.1 | 0.1.2 | 0.1.3 | 0.1.4 | 0.1.5|
|0.2.x Series||0.2.0 | 0.2.1 | 0.2.2 | 0.2.3 | 0.2.4 | 0.2.5 | 0.2.6 | 0.2.7 | 0.2.8 | 0.2.9|
|0.3.x Series||0.3.0 | 0.3.1 | 0.3.2 | 0.3.3 | 0.3.4 | 0.3.5 | 0.3.6 | 0.3.7 | 0.3.8 | 0.3.9 | 0.3.10 | 0.3.11 | 0.3.12 | 0.3.13 | 0.3.14 | 0.3.15 | 0.3.16|