ChangeLog-0.3.14

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.

Graphics

Support Staff

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.

Known Issues

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.

Applications

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.

HAL

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.

Kernel

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.

I/O

Names for internal IO functions have been renamed to match those on Windows.

The correct number of serial ports is now registered in the global configuration table.

KDBG

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.

Memory Management

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.

Common Cache

CC now will flush dirty pages if it cannot satisfy a memory request from available free pages.

Network Stack

LWIP has been incorporated into ReactOS to serve as the TCP/IP driver.

MSAFD

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.

TCP/IP

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.

Custom positioning is now possible, making positioning of icons look more like that of Windows.

Explorer-New

Start menu initialization has been improved to better show what fails.

A ReactOS registry key is used for ReactOS specific features.

Startup/Shutdown

FreeLoader

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.