This is the changelog for ReactOS™ version 0.3.13 (released 22 March 2011), 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.12 (released 20 October 2010).
- 1 General
- 2 Core Functionality
- 2.1 Audio/Video Stack
- 2.2 Filesystems
- 2.3 Hardware Management
- 2.4 Kernel
- 2.5 Memory Management
- 2.6 Network Stack
- 2.7 Shell
- 2.8 Startup/Shutdown
- 2.9 Storage Stack
- 3 Drivers
- 4 Libraries
- 5 Client/Server Runtime
- Giannis Adamopoulos
- Johannes Anderwald
- Aleksey Bragin
- Dmitry Chapyshev
- Benedikt Freisen
- Jerome Gardou
- Cameron Gutman
- Kamil Hornicek
- Amine Khaldi
- Eric Kohl
- Timo Kreuzer
- Matthias Kupfer
- Michael Martin
- Ged Murphy
- Sylvain Petreolle
- ReactOS Portable Systems Group
- Daniel Reimer
- Gregor Schneider
- Pierre Schweitzer
- James Tabor
- Christoph von Wittich
- Art Yerkes
- Damir Aliev
- Oleg Baikalow
- Carlo Bramini
- Vincenzo Cotugno
- Rafal Harabien
- Katayama Hirofumi
- Adam Kachwalla
- Radek Liška
- Roel Messiant
- Love Nystrom
- Igor Paliychuk
- Samuel Serapion
- Víctor Martínez
- Colin Finck: Release Enginner, Build Tools Maintainer
- Danny Gotte: Web Developer.
- Ziliang Guo: Release Engineer, Web Content Maintainer.
Generic 0.3.13 changes
- A wide range of updates were made to the various development kits in ReactOS to support the new drivers and APIs that have been implemented and added.
- Conversion of empty argument lists in C functions to (void) is currently underway.
- Calc: Initialize next field for security hardening.
- CharMap: Text copy field is now a richedit control.
- Cmd: When building the commandline for CreateProcess, the full name that SearchForExecutable returns is used.
- DosKey: Conversion from TCHAR to WCHAR underway, MSVC complication fixes.
- Findstr: Ported from FreeDOS project.
- FTP: Major effort to clean up function prototypes and definitions.
- Notepad: Hardened against possible buffer overflow bugs and fixed rendering of status bar after changing line wrap.
- Nslookup: String operations have been modified to ensure null terminator is never lost.
- Paint: Generalize changes related to mirroring rectangular selections to free form selections, solve problem regarding selection contents update.
- Ping: Localization support added.
- Rapps: Various broken links, descriptions, and localization updated.
- Regedit: "Load Hive..." and "Unload Hive..." menu items implemented, support added for import/export of v5 registry files, "go" button added to address bar, various bugs and resource leakages fixed, conversion to Unicode encoding.
- Solitaire: Resource cleanup and compilation fixes.
- Taskmgr: Support added for DELETE key to processes and applications list
- Winmine: Synced and forked from Wine 1.3.5 winemine.
- Xcopy: MSVC fixes.
Control Panel Applets
- Correctly calculate the size several buffers used during the installer to avoid overreads and the like for strings.
Service startup and shutdown code is now synchronized using critical sections. The end result is that all services are now started one by one instead of in parallel. Additional checks have been added to ensure services do not try to use invalid resources. Attempting to start a service multiple times is also now prevented.
- EventLog: Renaming of variables to better match their usage patterns.
- LsaSrv: Service initialization has been stubbed and function calling conventions have been changed to stdcall.
- UmPnpMgr: Remote Procedure Call endpoints now use XP/Vista compatible pipe names.
Third party libraries
- DejaVu Fonts Documentation updated to 2.31
- RedHat Liberation Fonts updated to 1.06
- Tahoma Fonts undated to Wine HEAD
- bzip2 updated to 2.06
NCI tool has been removed.
- I/O completion routines have been added for audio.
- Event handle leaks in audio stack have been resolved.
Pin/Node allocator creation requests are now compatible with Windows XP and the ReactOS KS code is able to create audio pins on XP. Playback however is not yet working.
- Correct error code is now returned for various property access failures.
- Various fixes have been made to setting the property of nodes.
- Device enumeration implemented.
Filter/pin/node handling has been improved, with a new common dispatcher for property requests and fixes for a variety of memory and resource leaks. Buffering of audio has also been improved, along with interrupt handling for completed buffer operations. Sound recording using ReactOS portcls on Windows XP is also working.
- Data stream context implemented. Data stream context hold additional information about data being read off disks and are often used by anti-virus programs to scan file open operations.
- Preliminary work has started on supporting wildcard expansions through using expressions to search a directory.
- Multiple incorrect buffer usages dealt with in filename handling.
- Duplicate code for opening volumes has been removed.
- Creation of files improved.
- Support for relative path names for pipes added.
- Waiting on a pipe in the root directory has been fixed.
- Read/write IRPs are now correctly failed based on what the caller is.
- Multiple entries can now be returned in a single request and returning values correctly deal with buffers that are too small.
- Interrupt pins are checked to make sure they are not 0 or 255, which fixes an assert with ATI Rage graphics cards.
- A broken loop that resulted in multiple COM ports being registered for the KDCOM driver has been fixed.
- HalStopProfileInterrupt has been implemented.
- Port numbers and ranges have been fixed in HalpDefaultIoSpace.
Plug n Play
- When translating an interrupt resource, the vector the HAL returns is now checked to ensure it is valid.
- Plug n Play notification now gracefully handles interfaces that have not yet been registered yet.
- Support for Advanced RISC Computer format names has been implemented in the kernel. Boot paths were provided by the bootloader to the kernel are in ARC format. Previously the kernel needed to translate them. Now the kernel is able to understand ARC formatted paths and use them natively.
- The kernel is now aware of the existence GUID Partition Tables on harddrives. This is one of the steps to adding EFI support in ReactOS. Not all functionality of GPTs is usable by the kernel yet.
- Support for creating protective Master Boot Record for GPT formatting has been added.
- Pre/post syscall debug hook support has been added.
- Various CPU feature detection fixes and improvements.
- Support for translating between ISA IRQ to system IRQ has been added.
- Alternative workaround for the Pentium lock errata has been added. Instead of relying on the page fault handler, the IDT page is marked as Write-Through if the bug is present.
- When loading drivers at startup, the loader block is made available to the drivers.
- A process is now checked to make sure it is not being terminated to eliminate the possibility of trying to destroy a process' resources twice.
- Resources are now cleaned up after failing to create a thread.
- Fixes have been made to the loading of system DLLs and their resources.
- TrapFrame segment selectors are now initialized in KiEnterTrap as the C trap handlers depends on valid values.
- Resource assignment has had conflict checks added to it.
- Packet type calculation has been fixed according to the PS/2++ specification.
- ARM3 Paged Pool manager is now the default.
- Various 64bit portability fixes and extensions.
- Zero/Free pages are removed from their respective lists first before they are used.
- Initial implementation of colored pages has been added.
- Major fixes how zero pages are organized, listed, and mapped.
- NT Section functions have all been moved into ARM3 and rewritten to provide same paramater validation checks and protection masks as Windows does.
- Work continues to allow ARM3 to handle page faults against its pagefile instead of the old memory manager's pagefile.
- Reserving and releasing system page table entries has been rewritten. Now PTEs are delivered zeroed to their requestors and fragmentation of PTE blocks should be significantly reduced.
- Stage 0 of memory manager initialization is now completely handled by ARM3.
- Regression that resulted in the leaking of PTEs and addresses has been dealt with.
- A variety of edge cases in NtQueryVirtualMemory has been dealt with, including attempts to query illegal addresses or non-existent address spaces.
- Support for user mode virtual address descriptor faults have been added.
- An arry has been added that holds the conversion between memory manager/page table entry protection values to Win32 protection flags.
The initial implementation of a new Common Cache has been integrated into ReactOS. Its functionality and usefulness is still limited, but sets the stage for removal of the old, buggy Cc and in the future will allow greater compatibility with Installable Filesystem Drivers. The current implementation is capable of demand paging, though its data structures remain segregated from the main memory manager due to incompatibilities and the MM's reliance on the old Cc design. Using the new Cc during installation also nearly succeeds and a workable filesystem is written to disk, but booting is still not working.
The ReactOS heap manager was originally derived from Wine, which was itself based on the Windows 95 heap manager's design, hence its architecture was more suited to a DOS environment than NT. This release sees the implementation of a rewritten heap manager based on Windows 2003/Vista, which support for considerably more functionality in determining how memory allocations are made. In addition, a second new heap manager was added, one specifically designed to help detect overflows and the like from memory that it allocates. This debug heap manager can turned on or off at an application level and promises to help considerably in detecting mistakes in memory operations.
- Various memory bugs fixed.
Network Driver Interface Specification
- Failure cases now have their locks properly released.
- Work has been done to better match NDIS 5.1 characteristics.
Transport Device Interface
- TDI function exports have been updated based off of Windows Driver Kit 7.
- Various visual problems in the taskbar has been fixed.
- Various out of bounds array accesses have been fixed.
- Displaying of seconds in the tray now added.
- Querying of version information has been implemented.
- Opening context menu through right-click has been implemented.
- Resizing of work area has been implemented.
- Checksum calculation of CDs has been fixed.
- The majority of trap and bluescreen code has been converted from assembly to C, with the remaining assembly converted to Intel syntax.
- Debug, analysis, and statistics features in freeloader heap manager have been disabled on the ARM platform due to performance concerns. These features are now only enabled by conditional defines.
- Initial OMAP Zoom2 board support has been added, along with access to various interfaces available on the Zoom2 board.
- Different input options are now accounted for between various ARM boards and assumptions of what methods are available have been refined.
- Bluescreen converted to black on ARM.
- Preliminary work on fixing NTFS driver used by freeloader.
- Notifications from win32k to sound system beep are now received.
Preliminary work has been done to deal with GUID Partition Tables, which are needed to support booting from EFI systems. While some of the data structures for GPT have been implemented, more work will need to be done before ReactOS can truly boot off of GPT disks.
- The Windows XP DDK CD-ROM driver example has been imported into ReactOS.
- Various updates have been made to make the driver more compatible with Windows 2003.
- The Windows XP DDK ClassPnP driver example has been imported into ReactOS.
- Interrupt information is not duplicated for two different interrupts to the same device.
- Partial implementation of two DMA channels.
- Support added for differing number of devices attached to different channels.
- AHCI support code updated but not yet ready for usage.
- NMI driver is now enabled in boot/livecd.
MME Buddy is a driver helper library for sound support.
- MIDM_OPEN, MIDM_CLOSE, MIDM_START, MIDM_STOP, MODM_OPEN, MODM_CLOSE messages implemented.
- MIXER, MIDI_IN, and MIDI_OUT device type support implemented.
- Opening of mixer devices implemented.
- Wave pause, restart, and resetting implemented.
- Topology enumeration has been rewritten to correctly take into account sum/mux nodes, avoid assigning nodes to multiple mixer lines, and avoid creating cycles of nodes.
- Support routines for node state changes added.
- Support for topologies with no intermediary nodes has been implemented.
- Enumeration and usage of MIDI devices has been implemented.
- Locks are released during error cases.
- Initialization of driver has seen multiple fixes.
- Continued development of PCI bridge support.
- A bug that resulted in only half of the keyboard data being copied has been fixed.
- Resetting of the port no longer resets the device as well.
- Various fixes to initialization and configuration of devices by the EHCI driver.
- Various fixes to how data is transferred between the USB device and the driver.
- The provided waveformat now has its size checked to make sure it is at least the size of a WAVEFORMAT struct.
- Additional information needed for playback are now computed from the provided waveformat.
- I/O completion handle is now backed up before the audio buffer is committed due to the chances if the structure already having been released.
- Registration of event routines for topology node changes has been implemented.
- MIDI devices can now be detected by WDMUAD and listed.
- Rounding error has been fixed when calculating display size.
- The miniport driver for the new VGA driver has been added.
- Various fixes to avoid buffer misuse.
- Palette is currently limited to 16 colors as 256 color palette is disabled.
- Various fixes to use of synchronization.
- Event implementation is now shared with Win32k.
- Buffer calculation fixed for strings.
- Enumeration of registry values now correctly handles cases where the return buffer is too small.
- Managing accounts through the Local Security Authority has been implemented.
- Forwarders added for functions exported by setupapi.dll.
- Work has been done to try to fix bitmap resources that resulted in broken icons.
- Considerable progress made in passing refcounting Wine tests.
- Palette creation has been implemented.
- Code for creating compatible bitmaps (DDBs) from DIB color data has been rewritten.
- Variety of fixes to bitmap transforms and other operations.
- Name server enumeration functions have been rewritten.
- Static DNS entries are checked before dynamic DNS entries.
- Section object creation is now correctly flagged.
- SetLastError() implemented in kernel32.
- A variety of unicode to ansi and back conversion functions have been implemented and fixed.
- Various memory corruption issues found by debug heap resolved.
- Preliminary work on unifying Find* functions.
- FlushFileBuffers now also is able to flush the console input buffer if it is passed a console handle.
- GetFullPathName has been modified to be closer to Windows behavior, fixing all GetFullPathName Winetests.
- A new generic printf implementation has been added and enabled. This implementation serves as the basis for all the other ANSI and unicode printf and sprintf functions.
- Reading of static DNS entries fixed.
- Switching between static DNS and DHCP fixed.
- Storing and loading of image execution global flag options has been fixed. Querying image execution options no longer results in the heap being used.
- Processes being debugged now have debug heap flags applied.
- Various additional fixes to image loading.
- Querying of objects will return the required buffer size if the provided buffer is too small.
- An actual DLL entrypoint is used to record the instance handle needed to access various resources.
- Macros are used instead of attempting to carry out pointer calculations repeatedly.
- Thread specific data is now reset on thread detach calls.
- Ability to switch between native and PSEH SEH macros/handlers has been added.
- CRC32 checksum calculation has been fixed.
- RTL heap code now uses new locking mechanism instead of the RTL_CRITICAL_SECTION.
- ROUND_UP/DOWN macros have been fixed.
- NtFreeVirtualMemory now correctly interprets the pointer handed to it as a pointer to the address that needs to be freed, not the actual address itself.
- Additional page code markers have been added for Unicode functions.
- Various MSVC fixes.
- A variety of fixes to memory functions dealing with correctly tracking used and free blocks in the heap along with updates to take better advantage of the new heap manager's functionality.
- Process parameter block is now correctly zeroed out when its memory is allocated using the new memory manager.
- Locking of boot status data has been modified.
- PACKAGEINFO struct is now initialized regardless of whether there are packages in order to compensate for behavior in Wine's rpcrt4.
- Property and system information retrieval functions have seen fixes and updates. Changes range from returning desired buffer sizes to returning the correct error response in failures.
- Shortcuts and executables are not added to recent files list anymore.
- More code enabled thanks to IOCTL_DISK_GET_LENGTH_INFO being implemented.
- Drawing shortcuts now use a different raster operation than previously.
- URLCACHE is no longer initialized for a system process.
- A variety of undocumented definitions have been gathered into a single place.
- Initial implementation of client thread information has begun to support QS flags and signaling synchronization messages.
- Major work has been done to deal with global hooks and the various message passing functions used by them.
- A large number of winetests related to window regions and parents have been fixed.
- Error setting now correctly uses the winsock specific function instead of errno.
- Attempts to reserve memory ranges now uses the correct flags for the new memory manager.
- CSRSS suffers from an interesting problem in its initialization phase wherein it tries to map address 0xA0000. The problem was this area of memory may already have been allocated and reserved by the SMSS for the CSRSS. The current solution is to release all memory that was allocated beforehand to ensure 0xA0000 is free.
- A new function GetTempFile() that returns an identifier used for creating temporary files has been added.
Kernel-mode subsystem server (Win32K)
Work continues to fill in missing drawing functionality in Win32k and fix existing implementations. These range from tweaking calculations used in drawing bitmaps to implementing entirely new data structures that were previously missing in ReactOS. The integration of the yarotows branch especially has brought about several new APIs and data structures associated with display drivers. Additions include the physical and logical device objects and their associated APIs and a new locking mechanism for devices. With yarotows now merged in, ReactOS is capable of supporting dynamic mode changes without the need to reboot.
- UserSetCursorPos now passes all Winetests.
- Support functions for setting and getting the default layout in a process have been added.
- Timer callback validation has been fixed.
- A hack that allowed ReactOS to post messages that contain pointers has been removed as it is no longer needed.
- Keyboard messages are now added to the hardware list, not the post messages list.
- The default window position is no longer the top left corner of the screen.
- Win32k now catches attempts to call null hook procedures and avoids crashing.
- Attempts to call an invalid hook fail later during the search for the hook instead of immediately checking if a hook is active.
- Dependency on the RTL has been eliminated.
- GDI debug has been disabled to reduce memory usage.
- All Init functions are now NTAPI instead of FASTCALL and return NTSTATUS.
- Hooks are no longer cleaned up unconditionally due to any window associated with a specific thread being destroyed.
- Mouse and keyboard input no longer results in every message queue being woken, only the thread that the input is intended for is woken.
- Various optimizations to how messages are passed to processes, reducing duplication of information and unnecessary operations.
- Exclusive Device Context locks are no longer held when calling Nt/Gre functions. In the case of bitmaps, an InterlockedCompareExchange is used to check and exchange bitmap device context.
- Get/PeekMessage tests are now fixed after the correct message posting functions are being called.
- A variety of places have had their exception handling improved and simplified to increase performance.
- Issues with drawing icons, such as them being pink in color, have been dealt with through fixes to the GDI and bitmap code.
- A new window structure is now used and old Window Object has been deprecated.
- ANSI to unicode and unicode to ANSI conversions between various message passing functions is undergoing work to fix issues uncovered by global hook development.
- The desktop window object currently has a hack to mark it as the desktop object for the time being.
|Changelogs / Versions / Community Changelogs|
|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 | 0.3.17|
|0.4.x Series||0.4.0 | 0.4.1 | 0.4.2 | 0.4.3 | 0.4.4 | 0.4.5 | 0.4.6 | 0.4.7 | 0.4.8 | 0.4.9 | 0.4.10|