ChangeLog-0.3.12

From ReactOS Wiki
Revision as of 23:57, 6 October 2010 by Z98 (talk | contribs)
Jump to: navigation, search

TODO: Need a list compiled for apps updated/added to the rosapp list. We'll stick this under the Generic Changes section. -Z98

TODO: Document all the hacks that go into this release to cover up, issues. This information may not yet be available. -Z98

NOTE: List of names are supposed to be organized based off of last name, not first. Only if there is not a last name available do we use the first name. -Z98

This is the changelog for ReactOS™ version 0.3.12 (date yet to be determined), 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.11 (released 16 December 2009).

Contents

General

Contributors

Core Developers

  • Giannis Adamopoulos: Applications, Win32.
  • Johannes Anderwald: Kernel, sound.
  • Aleksey Bragin: Filesystem, kernel, Win32k.
  • Colin Finck: Build tools, translations, release engineer.
  • Jérôme Gardou: Win32.
  • Stefan Ginsberg: Kernel.
  • Dmitry Gorbachev: Applications.
  • Cameron Gutman: Networking, PnP.
  • Kamil Horníček: 3D Graphics, Win32.
  • Amine Khaldi: Build tools.
  • Eric Kohl: Kernel, Win32.
  • Timo Kreuzer: Win32k.
  • Matthias Kupfer: Applications, Win32.
  • Michael Martin: Kernel, USB.
  • Jeffrey Morlan: Applications, Win32.
  • Filip Narava: USB.
  • Sylvain Petreolle: Applications.
  • Hervé Poussineau: Kernel.
  • ReactOS Portable Systems Group: ARM porting, drivers, kernel.
  • Daniel Reimer: Build tools, translations.
  • Gregor Schneider: Win32.
  • Pierre Schweitzer: Filesystem, kernel.
  • James Tabor: Win32.
  • Christoph von Wittich: Win32.

Patch Submitters

  • Andrea
  • Carlo Bramini
  • James Edmeades
  • Benedikt Freisen
  • Rafal Harabien
  • Katayama Hirofumi
  • Kusanagi Kouichi
  • Radek Liška
  • Roel Messiant
  • Andrew Nguyen
  • Samuel Serapión
  • Seungju
  • Dmitry Timoshkov
  • Henri Verbeet

Localization

  • forenkrams [AT] tuxproject [DOT] de
  • Edison Henrique Andreassy
  • Egon Ashrafinia
  • Arturs B
  • Maciej Bialas
  • CCTAHEB
  • Paolo Devoti
  • Andrew Faulds
  • Javier Fernandéz
  • Katayama Hirofumi
  • Gabriel Ilardi
  • Mario Kacmar
  • Tomoya Kitagawa
  • Igor Paliychuk
  • Javier Remacha
  • Olaf Siejka
  • Andres Traks
  • Maikel Wever
  • Sakara Yevhen
  • Marcelo Zamperetti

Support Staff

  • Danny Gotte: Web Developer.
  • Ziliang Guo: Release Engineer, Web Content Maintainer.

Generic 0.3.12 Changes

  • Hardware IDs for the following processors have been added to the internal hardware list.
    • Cyrix
    • Pentium MMX, Pro, II, M, 4
    • Core Solo, Duo, Extreme, i3, i5, i7
    • Atom
    • AMD K6, K6-3, Athlon 64, Turion64, Sempron
    • Via Nehemiah, Esther, Nano
  • NTVDM is now only built on x86 builds.

Applications

  • Calc: Units and conversion factors added.
  • Cmd: Line breaks follow DOS/Windows style (CRLF) now and various fixes to tab completion.
  • IPconfig: Media detection is now fixed.
  • MSCUtils: Column names now use resource strings instead of hardcoded strings.
  • Netstat: UDP packets are only displayed when the correct argument is passed to netstat at startup.
  • Paint: Initial selection support and angle rounding for lines and edges.
  • Regedit: Fix searching the registry.
  • Taskmgr: Usability fixes to remove outdated information and improve performance of information updates.

Control Panel Applets

  • Console: Store changes when buffer/window size or color changes.
  • Desk: Fix theme switching and screensaver selection.
  • Input: Fix changing of keyboard layout.
  • Intl: Use resource strings for 'metric' and 'Imperial' strings.
  • Sysdm: Fix creation of paging file and place constraints on file size.

Installer

Various tweaks were made to the installer to ease installing ReactOS.

  • Provide ability to overwrite GRUB or LILO instead of failing to install Freeloader.
  • Fix reading of partitions created in non-standard formats by Linux.
  • Minimum space check notification improved. Minimum space value also made configurable through text file.
  • Creation of new partitions fixed by correctly writing values of the BIOS Parameter Block.
  • Installer does not restart in second stage if ESC is pressed.
  • PathName and SystemRoot registry key values are now written by the installer.

Services

  • Services no longer trample over other services when reporting their status.
  • DHCP: Service rewritten to be compatible with mswsock_new and not clobber network information stored in the registry. LiveCD now has working networking.
  • EventLog: Fixes to reading and displaying of log content.

Tests

http://www.reactos.org/testman/compare.php?ids=2123,4021

Translations

Bulgarian

  • 3dtext
  • doskey
  • explorer
  • ipconfig
  • mscutils/servman
  • rapps
  • shutdown
  • spider
  • usetup
  • winemine

Chinese

  • charmap
  • dxdiag
  • fontview
  • magnify
  • mmc

Czech

  • appwiz
  • devmgr
  • intl
  • netcfgx
  • netid
  • netshell
  • notepad
  • paint
  • regedit
  • setupapi
  • shell32
  • slayer
  • sndvol32
  • sysdm
  • userenv
  • usetup
  • winemine

Dutch

  • calc
  • usetup

English

  • advpack
  • dxdiag
  • rapps
  • usetup

Estonian

  • usetup

French

  • Add french translations for location overrides. (Sylvain Petreolle)
  • eventvwr
  • netshell
  • paint
  • spider
  • usetup

German

  • Added a German translation myself. (Daniel Reimer)
  • access
  • appwiz
  • calc
  • cmd
  • cmdutils/reg
  • console
  • desk
  • deskadp
  • deskmon
  • devmgr
  • doskey
  • downloader
  • dxdiag
  • explorer
  • explorer-new
  • fontview
  • format
  • hdwwiz
  • input
  • intl
  • ipconfig
  • joy
  • kernel32
  • liccpa
  • main
  • mmsys
  • modemui
  • mplay32
  • msconfig
  • mscutils
  • msgina
  • mstsc
  • netcfgx
  • netid
  • netshell
  • newdev
  • notepad
  • paint
  • powercfg
  • rapps
  • rasdlg
  • regedit
  • regsvr32
  • runonce
  • screensavers/3dtext
  • screensavers/logon
  • serialui
  • setup/reactos
  • shdoclc
  • shell32
  • shimgvw
  • sndvol32
  • solitaire
  • spider
  • sysdm
  • syssetup
  • tapiui
  • taskmgr
  • timedate
  • user32
  • userenv
  • usetup
  • usrmgr
  • vmwinst
  • welcome
  • winemine
  • winlogon

Italian

  • calc
  • explorer-new
  • intl
  • mscutils
  • netid
  • netshell
  • paint
  • rapps
  • regedit
  • shell32
  • sysdm
  • syssetup
  • usetup
  • win32csr

Japanese

  • cacls
  • charmap
  • magnify
  • mscutils/devmgmt
  • mscutils/servmgr
  • paint
  • rapps
  • runonce
  • shutdown
  • sndrec32
  • sysdm
  • syssetup
  • usetup
  • win32csr

Polish

  • calc
  • mscutils
  • usetup

Portuguese

  • syssetup
  • usetup

Russian

  • spider
  • sysdm
  • usetup

Slovak

  • calc
  • devmgr
  • explorer-new
  • intl
  • netshell
  • paint
  • rapps
  • regit
  • runonce
  • shell32
  • sndrec32
  • syssetup
  • usetup

Spanish

  • browseui
  • devmgr
  • notepad
  • paint
  • rapps
  • runonce
  • shell32
  • sndrec32
  • spider
  • sysdm
  • syssetup
  • usetup
  • usrmgr
  • welcome

Ukrainian

  • aclui
  • browseui
  • charmap
  • cmd
  • desk
  • dxdiag
  • explorer
  • explorer-new
  • freeldr
  • input
  • kernel32
  • mscutils/devmgmt
  • mscutils/eventvwr
  • msgina
  • mstsc
  • newdev
  • notepad
  • paint
  • rapps
  • regedit
  • runonce
  • setup
  • shell32
  • shimgvw
  • sndrec32
  • sndvol32
  • solitaire
  • spider
  • sysdm
  • syssetup
  • taskmgr
  • usetup
  • winemine

Wine Syncs

ReactOS relies heavily on Wine for many of its Win32 libraries and syncs these as Wine incorporates improvements into their releases. Most of these libraries are synched to versions 1.2 or 1.3.

Libraries Synced

  • activeds
  • actxprxy
  • amstream
  • atl
  • avifil32
  • cabinet
  • clusapi
  • comctl32
  • comdlg32
  • credui
  • crypt32
  • cryptdlg
  • cryptnet
  • cryptui
  • d3d8
  • d3d9
  • dbghelp
  • ddraw
  • dwmapi
  • faultrep
  • fusion
  • gdiplus
  • hhctrl.ocx
  • hlink
  • hnetcfg
  • iccvid
  • imm32
  • inetcomm
  • inetmib1
  • initpki
  • inseng
  • itircl
  • itss
  • jscript
  • localspl
  • localui
  • mapi32
  • mciavi32
  • mcicda
  • mciqtz32
  • mciseq
  • mciwave
  • mdi
  • mlang
  • mpr
  • mscms
  • mscoree
  • msctf
  • msdmo
  • msg711.acm
  • msgsm32.ac
  • mshtml
  • msi
  • msiexec
  • msimtf
  • msnet32
  • msrle32
  • mssip32
  • msvcrt20
  • msvfw32
  • msvidc32
  • msxml
  • msxml3
  • nddeapi
  • netapi32
  • obsel
  • odbc32
  • ole32
  • oleacc
  • oleaut32
  • oledlg
  • olepro32
  • pdh
  • postorec
  • qedit
  • quartz
  • query
  • riched20
  • rpcrt4
  • rsaenh
  • schannel
  • shdoclc
  • shdocvw
  • shlwapi
  • sti
  • tapi32
  • urlmon
  • usp10
  • uxtheme
  • version
  • widl
  • windowscodecs
  • wined3d
  • wininet
  • wintrust
  • xmllite

Third Party Libraries

  • DejaVu Fonts updated to 2.31
  • FreeType updated to 2.3.12
  • Liberation Fonts updated to 1.05.2
  • libjpeg updated to 8b
  • libpng 1.4.3 added
  • libtiff 3.9.4 added
  • libxml updated to 2.7.7
  • zlib updated to 1.2.5

Regressions

  • #4086 cdfs: Data inaccessible for view under Explorer
  • #4330 crashes upon restart after installing a driver for 3com Fast Etherlink network adapter
  • #4811 comctl32: dll winesync broke AbiWord toolbar
  • #5025 freeloader error while booting from GRUB with Ubuntu and Windows XP installed
  • #5035 Abiword: fonts listbox isn't shown properly
  • #5158 some keystrokes get lost if typing fast in VirtualBox
  • #5290 Slowness during file copying in 1st stage in VirtualBox
  • #5320 "Assertion 'FALSE' failed at subsystems/win32/win32k/ntuser/windc.c line 739", preceded by "Not POWNED or CLASSDC hwndCurrent" debugprint
  • #5372 "Failed to create directory L"%USERPROFILE%\\Local Settings\\" debug print in 2nd stage
  • #5443 Inkscape 0.43-2 crashes immediately upon start.
  • #5484 New windows are created on top of older ones
  • #5503 Far Manager 1.65 fails to start
  • #5504 Internet Explorer 6 errors out at setup
  • #5524 Displaced numbers on virtual desktop icons in 32bpp
  • #5530 COM ports not available anymore
  • #5554 Warning/error window is misplaced and misshaped
  • #5560 Acrobat Reader 7.1 crashes at start
  • #5569 App tray icons are not displayed
  • #5593 GDI REGION objects are leaked when Freeciv start window is being redrawn

Build Tools

LOG2LINES

  • Updated to version 2.2

RBUILD

RBuild is the build management system currently employed by ReactOS. The project is currently transitioning to cmake, but for the current release the project still relies on RBuild. However, a series of fairly serious flaws and issues have been uncovered during the transition and these are documented here.

  • Non-existent DLL functions can be exported.
  • Function export names are not properly decorated, allowing export names to not match the original function names.
  • If function targets are not found, RBuild will link the DLL to itself.

Some development on RBuild also took place before the decision was made to switch over to CMake.

  • Initial Visual Studio 2010 project file support.
  • Removal of code::blocks project file generation, as code::blocks is incapable of building ReactOS.

RosBE

  • Build environment now uses GCC 4.4.x as the compiler.
  • -fno-unit-at-a-time hacks have been removed.
  • Auto-export of all symbols has been turned off.

Core Functionality

Audio/Video Stack

The A/V stack has seen a great deal of enhancements and fixes since the last release. The work done has not only added features to better control sound playback, but preliminary support for streaming videos through various media frameworks has also been implemented.

BDA

The Broadcast Driver Architecture is the framework that allows use of TV-tuner cards in Windows.

  • Interfacing with broadcast devices implemented.
  • Filtering of broadcast frequencies implemented.

DSOUND

A library that bypasses some of the layers in the sound stack to try and speed up processing.

  • Starting and stopping audio implemented.
  • Initial implementing of sound mixing, currently does not work. Volume information can be retrieved but not set.

Kernel Streaming

The core kernel component that handles stream of media and serves as the foundation of much of the A/V functionality in NT.

  • Device initialization and registration implemented.
  • Objects allocated are placed onto a list for automatic reclamation.
  • Pin interface for controlling devices implemented, though issuing of commands still needs work.

KSPROXY

A DirectShow filter that relays media through the user mode kernel streaming library.

  • Enumeration of supported functionality on devices implemented.
  • Signal statistics from BDA devices are delivered by KSPROXY.
  • Media stream sampling is done to determine buffer allocation strategy.
  • Multiple media samples can be dispatched simultaneously.

PORTCLS

The driver that manages most of the audio functionality in NT.

  • Currently a "silent" buffer is used when no audio buffers are available for playback.
  • Play position is reset when an audio stream is stopped, fixing playback for when playback is stopped and started multiple times.
  • A get position request can arrive before the audio buffer is transferred. This situation is handled to avoid a divide by zero error.
  • Audio stream data is only copied to the common buffer when the pin owning it is in a running state.

Filesystems

ReactOS continues to use the FAT filesystem as its default, but work has been done to add the support needed for newer ones as well as fixing longstanding issues with the current FAT driver.

FSRTL

The filesystem runtime library provides a set of basic functionality for filesystem drivers and allows them to avoid duplicating shared functionality while also ensuring higher level libraries inappropriate for kernel drivers do not need be linked in. FsRtl for many years had very minimal documentation, but that is changing with this release.

  • Notification of changes to volume state has been implemented.
  • Initial groundwork for volume content change notifications begun.

CDFS

  • Media ejection added.
  • Various memory leaks and corruptions have been resolved.

FASTFAT

ReactOS uses the FASTFAT driver for the FAT filesystem. The current driver is fairly old and a new one is being developed, but until it is ready FASTFAT will continue to see updates.

  • Updated to use various functionality in the FsRtl library instead of reimplementing them inside the driver.
  • Driver is now Plug n Play aware but does not support any actual PnP commands.

FASTFAT_NEW

The new FAT driver is being implemented using the FullFAT library and wrapping its functionality inside a filesystem driver. It is currently incomplete but will replace the old FASTFAT driver in a future release.

  • Control blocks for files have been implemented.
  • Basic locking implemented.

CM

  • Implemented finding registry keys when the registry keys are not sorted.
  • Fix a bug that caused registry corruption when a registry key got too large.

Hardware Management

Progress has been made in efforts to give ReactOS better support for various hardware control specifications.

ACPI

A driver for the Advanced Configuration and Power Interface was implemented, providing most of the functionality of the standard. However, it does not conform to the NT architecture due to incomplete pieces in other parts of ReactOS.

  • Enumerate attached devices.
  • Receive commands from power buttons.

ACPI HAL

The Hardware Abstraction Layer that provides support for the ACPI standard. This is separate from the current HAL used in ReactOS and is the incomplete piece needed by a NT architecture conformant ACPI driver.

  • Resource querying implemented.
  • Separation of ACPI and non-ACPI bus handling.

Battery Framework

Implementation of the components needed to interface with batteries and retrieve information about power levels. This collection of drivers is dependent on several other pieces such as Plug n Play, ACPI, and general interface drivers, so is currently not functional.

  • Control Method Batter Driver: Initial implementation of cmbatt driver, with information and status queries implemented. ACPI and PnP interaction present but dependent on the respective interfaces in other parts of ReactOS.
  • Composite Battery Driver: Battery detection and PnP notification implemented.

Legacy HAL

The legacy HAL will continue to be used for hardware that does not implement the ACPI standard.

  • i8259A programmable interrupt controller initialization implemented in C.
  • HAL now detects EISA systems with the Edge/Level Control Register.
  • Various Interrupt Request Level functions are now implemented in C instead of x86 assembly.
  • Asynchronous and Deferred Procedure Call trap handlers are now implemented in C.
  • IRQL handling rewritten to use "lazy" raising and lowering of the interrupt mask.
  • HAL no longer relies on the memory manager for allocations.
  • Various debugging related functions implemented.
  • CMOS, ISA, and SYSTEM bus handlers are now registered.
  • HAL now can detect PCI and PCI-to-PCI bridges.
  • Checks for ABIOS have been removed as it is not supported by ReactOS or Windows.

Plug n Play

  • Writing of resource list has been fixed to avoid corrupting the registry.
  • Registry values for legacy devices are now written.
  • Detected devices are now reported in response to a IRP_MN_QUERY_DEVICE TEXT.

Memory Management

The memory manager saw several major improvements since the last release, including a new pool manager and major fixes to virtual memory management.

  • Page Table Entries work under x64.
  • Correctly report the amount of memory available to applications and drivers.
  • Massive fixes to page tables, page directories, and page frame numbers that are used for tracking virtual memory addresses and their physical memory address counterparts. Many corruptions, incorrect address resolutions, and improper usage of PTE, PDE, and PFN structures and values were dealt with.
  • Code refactored so architecture independent code can be shared across platforms.
  • Multiple logic fixes to page allocations, resolving several instances of non-free pages being allocated.
  • Global pages support removed due to currently broken code.
  • Working sets of memory use a bitmap instead of a linked list based on the Least Recently Used algorithm for organization. Only free pages use a linked list now.
  • Stubs have been added for various large page functions in case future work is done to add support.
  • Paging driver code and data implemented.
  • A check to detect potential corruption in contiguously allocated blocks of memory has been added.

ARM3

A new memory manager designed to be more conformant to the NT architecture and hopefully eliminate the instability caused by the current memory manager's corruption issues.

  • Virtual Address Descriptor data structures implemented.
  • Page table and directory entry initialization implemented.
  • Stack frames are allocated using ARM3.
  • Paged pool allocations can be done through ARM3.
  • Memory areas managed by ARM3 are kept separate from areas controlled by the regular memory manager.
  • Protected Freed Nonpaged Pool support added. This type of pool is a debugging feature.
  • Shared user data pages are handled by ARM3.
  • New AVL tree implementation used to manage Virtual Address Descriptors.
  • Creation of the process address space is now done by ARM3.
  • IsBadRead/CodePtr fixed to work with ARM3.

Network Stack

The network stack has seen considerable amounts of refactoring and additions as its components are implemented. Various parts are also currently undergoing a rewrite with varying levels of completion.

IP

  • Attempts to acquire the IP address now wait until after the DHCP service is running for dynamic addressing.
  • No attempt is made to close a socket already terminated by the remote peer.
  • Socket operations that can be completed immediately are carried out on a closing socket to avoid losing data in the receive buffer.

MSAFD

The current socket implementation on ReactOS.

  • Error codes are now properly reported, fixing many of the Winetests for this component.
  • Failures on operations are now reported instead of simply being left dangling.
  • Events are waited on instead of immediately being closed.
  • Socket information is now stored in a linked list instead of a static array, improving scalability and eliminating the risk of buffer overflows.
  • Socket information is now cleaned up after a socket is closed.
  • Support for connectionless sockets added.
  • Reading data using the peek functionality no longer causes corruptions.

NDIS

  • Timer queues have been disabled to prevent the VirtualBox Intel Pro/1000 emulated network card from crashing ReactOS.
  • Protocol bindings are refreshed after a new device is added, allowing network cards to be used even if they are added after boot.
  • Network adapter initialization and binding cleaned up to avoid duplicate entries.

OSKITTCP

  • Multiple wakeups are now prevented from occurring.
  • Sent/received reports are only sent if operation completed successfully.
  • A check was added to make sure accept is not called on a socket that is not listening.

WS2_32

  • Reading host files now supported.

Graphics

Development on ReactOS' graphics components continues, with increased compatibility and functionality. Several enhancements from the yarotows branch have made it into trunk and are now part of this release.

Kernel

  • IRP_MN_FILTER_RESOURCE_REQUIREMENTS responses are now correctly handled, allowing drivers to acquire needed resources.
  • FPU state is now correctly not saved when a kernel debugger is not attached.
  • Debug register clearing is now fixed, preventing random hardware breakpoints from triggering.
  • Trap handling code converted to C with minimal bits of assembly.
  • Interrupt handling in kernel converted to C to match conversion done in HAL.
  • System call handling now implemented in C.
  • Entrypoint of kernel moved to KiSystemStartup.
  • KeUpdateSystemTime interface is no longer Windows compatible. No third party code should ever call it however so change should not matter.
  • Interrupts are now handled when in Virtual 8086 mode.
  • Calling KiSystemService directly with interrupts enabled no longer corrupts the trap frame, fixing some failures on QEMU and real hardware.
  • Checks have been added to avoid drivers linked with user mode DLLs.
  • Dependency checking for driver unloading implemented.
  • When a driver fails to load, the kernel no longer attempts to unload modules that were never initialized.
  • The SYSEXIT code used for returning to user mode after a system call into kernel mode has been fixed, allowing the use of the SYSENTER/SYSEXIT combination instead of IRETD. This feature is only available on Pentium II and newer processors and should help decrease the time needed for such hopping between modes for system calls.
  • All trap handling code is now marked as no-return, allowing the compiler to better optimize them.
  • The Processor Control Block is no longer volatile in KeGetPcr, making the C code cleaner as the PCR no longer needs to be constantly reloaded. This also helps performance with the removed need for loading.

I/O

  • Device property retrieval now returns correct information for the device name.
  • IoReportDetectedDevice reimplemented, though a bug causes it to create a new device instance every boot.
  • Changes in device status are now reported.
  • New resource information is now reported.

Registry

  • A leaking reference that was resulting in incorrect registry name parsing and memory corruption has been fixed.
  • Opening registry values for symbolic links is fixed.
  • cmlib, newinflib and mkhive now use the Wine unicode library instead of the host_wcsfuncs library.

MKHIVE

The registry generator.

  • newinflib is now used instead of inflib.
  • Registry generation now uses the Unicode API instead of ascii.
  • Work has been done to properly free resources, as mkhive is suffering from several memory leaks.

NEWINFLIB

  • Unicode aware version of inflib added, newinflib.
  • String functions now use the str*W group instead of wcs* due to glibc on Linux builds using a 32bit wchar_t instead of 16bit. A wrapper has been added to allow continued use of wcs* functions on Windows builds.

Startup/Shutdown

Startup of ReactOS has seen considerable modification as effort is made to port it to other architectures and new developer-centric changes are added.

  • Progress bar during boot now displays correctly.
  • Logos now have the correct color palette and the correct logo is used for booting and shutting down.
  • Driver loading code used during booting has been switched to use low level Configuration Manager interfaces, decreasing boot time.
  • A crude timing mechanism has been added to see how many CPU cycles have passed between the first instruction of the kernel, the initialization of the registry by the SMSS, and the moment 12 processes have started up, which is approximately equivalent to getting to the GUI from boot.

BootVid

  • Broken initialization code removed and a correct implementation added.
  • 4bpp blitting code simplified.
  • x64 portability fixes.
  • Initialization of bootvid no longer requires a shift into real mode, allowing for faster booting.

FreeLoader

  • FreeLoader is now compiled into the Portable Executable format to allow for debugging.
  • FreeLoader no longer needs to be installed on the first partition of the first disk.
  • FreeLoader UI on ARM rewritten to slim down on resources needed.
  • Initial paging of memory on ARM is rewritten to be more efficient, now only using 1MB instead of 20MB.
  • x64 portability fixes.
  • Loading on the ARM platform has been changed to match EFI/Firmware model.

Session Manager Subsystem

  • SMSS can now add several system environment variables to the registry.
  • SMSS now creates a new default paging file if none exists.

Winlogon

  • Environment variables for user are now properly loaded upon login.

Security

  • NtAcessCheck fixed to account for various error cases and improper usage.
  • Security token is now checked for what level of authorization it is trying to impersonate.
  • Success is only reported if all access requests have been granted.
  • Attempts to duplicate security tokens fail if authorization level is too low.

LSA

  • A single table is now used for mapping privilege names to values.
  • Initial implementation of a lookup table for well-known SIDs has been added.
  • Account name lookup call chain implemented, but dummy names are still returned.

Shell

The code supporting the user interface in ReactOS is currently undergoing a rewrite. However, the old code remains in place and continues to see fixes and updates as the rewrite progresses.

  • Attempting to format a non-existent drive will now fail and return instead of prompting for a disk to be inserted.

Explorer

  • Clock is no longer clipped in its window.
  • 24bpp start menu icon added.

SHELL32

  • Confirmation dialog added for logging off.
  • Open With dialog now allows aborting of operation.
  • Localized error text now displayed as messagebox caption.
  • Success checking for ShellExecuteEx has been simplified, fixing instances where a dialog may be opened twice.
  • Alpha channels for icons are no longer destroyed when shortcuts are created, fixing overlay icons.
  • Initial file copy/move/delete dialog implementation added.
  • File association error texts added.

Storage Stack

The storage stack involves all the components of the operating system that deal with disk storage, excluding filesystems. These saw considerable modifications as the project continues to integrate the UniATA driver.

  • Logical units in extended partitions are visible but are not accessible yet.
  • Querying for Native ATA channels and configuring controller to use NATA implemented.

RAMDISK

  • Fixes for using ramdisk when booting on ARM.

SCSIPORT

  • x64 portability fixes.

UniATA

  • Reduce wait time from 10000 to 500 milliseconds for sending the ATAPI_RESET command.

USB

ReactOS currently has a USB driver based on the NT4 architecture, providing very basic functionality. However, a NT5-style USB stack consisting of the usbd library, usbehci driver, and usbhub interface has been started.

USBD

Helper library for third party USB drivers, used for querying information about USB devices.

USBEHCI

Driver for the ehci USB protocol, currently able to register attachment of new devices to the system and changes in their status.

USBHUB

Initializes USB devices and their associated driver objects and handles passing of interrupts and other signals to the driver. Utilizes the usbd library and usbehci driver to fill in information about devices.

USB Requests Implemented

  • USB_DEVICE_DESCRIPTOR_TYPE
  • USB_CONFIGURATION_DESCRIPTOR_TYPE
  • URB_FUNCTION_SELECT_CONFIGURATION
  • URB_FUNCTION_CLASS_DEVICE
  • USB_DEVICE_CLASS_HUB
  • USB_BUS_INTERFACE_USBDI_V2
  • USB_BUS_INTERFACE_HUB_V5
  • URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE
  • IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION
  • IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE
  • IOCTL_INTERNAL_USB_GET_HUB_COUNT
  • URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER_IN
  • USB_REQUEST_CLEAR_FEATURE
  • USB_REQUEST_GET_STATUS
  • USB_REQUEST_SET_FEATURE

USBDriver

The current USB driver, usbdriver provides simplistic support for USB keyboards and mice in very specific configurations.

  • Support for multiple EHCI controllers added, increasing compatibility with physical hardware configurations.
  • All PCI buses are scanned for USB controllers.
  • Cleanup of devices that crashed or failed to initialize properly.

Drivers

  • SWENUM, MPU401, CMIDriver, SPLITTER, STREAM drivers are no longer built and included by default as they are either not used or do not work.
  • ISAPNP driver has been removed from the set of drivers loaded during booting.

KDBG

  • Attaching to processes fixed.

Miniport

  • ASCII functions are now used instead of converting arguments to Unicode and calling Unicode functions.

NPFS

  • ReadEvent and WriteEvent have been changed to be notification events.
  • A race condition when a read IRP is cancelled has been fixed, reducing random crashes and hangs.
  • Various memory leaks have been dealt with.
  • Status information now correctly informs a reading/writing thread that a pipe is dead.
  • Various buffer checks have been added to prevent attempts to use a buffer that is too small for an operation on a named pipe.

PCI

A new PCI driver has been implemented, adding considerably more complete support for the interface and various other standards and protocols that build on top of it.

  • Interrupt Request routing implemented.
  • Handling of devices that incorrectly implement the PCI standard has been improved.
  • Querying and discovery of devices attached to PCI bus implemented.
  • Information about 176 different PCI devices and their associated errata have been added. These are needed to deal with any quirks a device may have.

PCMCIA

  • Driver has been stubbed so will require more work before any functionality is added.

Video

  • Initial implementation of a driver for the VMWARE SVGA-II Video Card added.
  • Various x64 portability fixes to the current VGA driver.
  • A unified VBE/VGA miniport driver has been added along with a new Framebuffer Display Driver.

VIDEOPRT

  • Proper error codes are now used.

Libraries

ADVAPI32

  • Resources for tracking services are created and destroyed as services start and stop.
  • Hardware profiles actually create GUIDs instead of hardcoding them to zero.
  • Computer name is used inside of eventlog.

CPORTLIB

  • ComPort library has been implemented, based off of the Microsoft whitepaper: Building Hardware and Firmware to Complement Microsoft Windows Headless Operation.

CRT

  • CRT is now linked statically for freeloader, rtl, bmfs, ftfd, and mini_hal.
  • CRT is dynamically linked for ntdll, crtdll, and included versions of msvcrt.
  • x87 assembly implementation of pow() function imported from glibc, replacing broken implementation in ReactOS.
  • Pointer comparison fixed in signal().
  • Various functions dealing with codepages and conversions between different encodings have seen fixes.
  • x64 implementations of various basic math and pointer functions added.

KERNEL32

The kernel32 library underwent some major fixes that decreased its size and increased its performance. The majority of these issues were due to improper behavior on the part of RBuild, detailed in the appropriate section.

  • Remove all Windows 95 function exports.
  • Stub all functions that kernel32 is supposed to export.
  • Inline set/get error macros and correctly forward them to the actual functions inside ntdll. This prevents calls to these macros from taking an indirect call path due to issues in RBuild.
  • kernel32 now always attempts to connect to the console server in applications in order to setup handling of Ctrl+C.
  • Initialization of command line arguments have been moved to DLL_PROCESS_ATTACH to make it thread safe.
  • Switching between fibers fixed.
  • Various x64 portability changes.
  • NT-style debug channels are now enabled and used.

GDI32

  • Leaking of regions temporarily fixed.
  • Batch support added for selecting regions for clipping.
  • Retrieving system palettes has been optimized to avoid unnecessary operations and no longer trashes the heap.

MSVCRT

  • Exports added for a variety of functions.

NTDLL

  • Various fixes to loading functions for libraries and executables.
  • Service status is now reported to the service manager.
  • Various x64 portability changes.

RTL

  • New implementation of the AVL tree, a self-balancing data structure used for tracking various resources in ReactOS.
  • Various fixes to functions that operate on strings.
  • x64 portability fixes for functions that operate on the byte level.

USER32

  • Setting of regions now behaves correctly.
  • Cursor icons follow correct call chain instead of calling functions that do not exist.
  • Various x64 portability changes.
  • Scrollbar tracking now ends if mouse capture is lost.
  • Window management code saw refactoring and fixes.
  • Start user handle manager rewrite.
  • Window text string converted from UNICODE_STRING to LARGE_STRING, fixing display of large text windows.

PSEH

  • A dummy PSEH implementation has bee added for CLANG.
  • x64 version of PSEH has been stubbed.

Client/Server Runtime

CSRSRV

  • Code from CSRSS has been moved into CSRSRV.
  • CsrTerminateProcess now destroys all CSR threads in a process, fixing the issue of processes never actually dying and their resources never being freed. Besides the resource leak, other processes that wished to use exclusive resources were also starved.
  • Basic user mode shutdown support added by exporting process/thread management functions for use by Win32CSR, allowing for shutting down of processes and cleaning up after them.
  • Second attempt shutting down of applications is now more forceful and processes are forcefully terminated in most situations.

Win32CSR

  • Hard error handling rewritten, now using Unicode strings and does not crash due to malformed arguments being passed to it.
  • Dynamic LineBuffer removed as it was not being properly resized and caused corruptions.
  • CsrFreeConsole now closes a process' console handles.
  • Locking simplified to having only one for a console.
  • Handles to a screen buffer is now tracked instead of references. When all handles have been closed, the buffer is deleted even if it is the "active" buffer.
  • RECT/SMALL_RECT structures are now used correctly/consistently. RECT uses pixel coordinates relative to the window client area and is endpoint-exclusive while SMALL_RECT uses character coordinates relative to the screen buffer and is endpoint-inclusive.
  • Text selection outside the visible window is now allowed.
  • Console pausing is now implemented.
  • Line input processing code now merged into one place instead of being duplicated in multiple places.
  • Basic line editing and line editing history implementation added.
  • Setting the console screen buffer size has been implemented.
  • CREATE_NO_WINDOW flag support added, allowing creation of invisible consoles.
  • Management of console windows moved to Win32CSR from CSRSRV.

Kernel-mode subsystem server (Win32K)

  • Creation of bitmaps by the graphics engine is severely broken and a partial rewrite has begun on it.
  • Initial implementation of a new window object added.
  • Several fixes to Windows Hook Procedures that causes application lockups.
  • Shell can now be restarted after killing it.
  • Fix cases where windows can deadlock when waiting on another window to finish.
  • Fixes to minimizing/maximizing and setting focus of windows.
  • SendMessageCallback now implemented.
  • Timer implementation suffered from a bug where freed timers would not be available due to improper cleanup.
  • Non-queued messages are no longer expected to have a reference to a message queue.
  • Icon drawing reimplemented.
  • A kernel timer is now used to intermittently force a check on user mode timers instead of simply waiting until a message arrives before carrying out the check.

Regression tests

BASE

APPLICATIONS

DXDIAG

SC

  • Roel Messiant: Fix a crash when running some operations in sc without providing arguments. Also, provide usage information for the control and unknown commands. (Aleksey Bragin; #5611)
  • Aleksey Bragin: Take Ged Murphy's comments into account and change pointer arithmetic to a convenient style. (Aleksey Bragin; #5611)

SERVICES

WLANSVC

DLL

3RDPARTY

  • Instead of disabling a warning when using "main" as something else then the main function, define it to mainptr (it's used as a pointer variable) globally, this approach is portable. (Timo Kreuzer)
SRC

DIRECTX

BDAPLGIN

  • Add "BDA Device Control Plug-in for MPEG2 based networks" stub (Johannes Anderwald)
  • Sorry folks (Johannes Anderwald)
  • Implement IBDA_Topology::GetNodeTypes, IBDA_Topology::GetNodeDescriptors, IBDA_Topology::GetNodeInterfaces, IBDA_Topology::GetPinTypes, IBDA_Topology::CreateTopology, IBDA_Topology::GetControlNode (Johannes Anderwald)
  • Implement stub interfaces for control node, IBDA_DigitalDemodulator, IBDA_FrequencyFilter, IBDA_LNBInfo, IBDA_SignalStatistics (Johannes Anderwald)
  • Simply construction of CBDAFrequencyFilter, CBDALNBInfo, CBDASignalStatistics (Johannes Anderwald)
  • Find IBDA_NetworkProvider in filter graph (Johannes Anderwald)
  • Check for IBaseFilter interface when constructing the CBDADeviceControl object (Johannes Anderwald)
  • Add macro to enable/disable debug output (Johannes Anderwald)
  • Query the BaseFilter for the target control pin in order to query for IKsObject interface, which is used to retrieve the real pin handle. (Johannes Anderwald)
  • Pass the NodeId to constructors of IBDA_FrequencyFilter, IBDA_SignalStatistics, IBDA_LNBInfo, IBDA_DigitalDemodulator (Johannes Anderwald)
  • Implement IBDA_DigitalDemodulator::put_ModulationType, IBDA_DigitalDemodulator::put_InnerFECMethod, IBDADigitalDemodulator::put_InnerFECRate, IBDADigitalDemodulator::put_OuterFECMethod, IBDADigitalDemodulator::put_OuterFECRate, IBDADigitalDemodulator::put_SymbolRate, IBDADigitalDemodulator::put_SpectralInversion (Johannes Anderwald)
  • Implement IBDAFrequencyFilter::put_Frequency, IBDAFrequencyFilter::put_Polarity, IBDAFrequencyFilter::put_Range, IBDAFrequencyFilter::put_Bandwidth, IBDAFrequencyFilter::put_FrequencyMultiplier (Johannes Anderwald)
  • Implement IBDALNBInfo::put_LocalOscilatorFrequencyLowBand, IBDALNBInfo::put_LocalOscilatorFrequencyHighBand, IBDALNBInfo::put_HighLowSwitchFrequency (Johannes Anderwald)
  • Implement IBDASignalStatistics::get_SignalStrength, IBDASignalStatistics::get_SignalQuality, IBDASignalStatistics::get_SignalPresent, IBDASignalStatistics::get_SignalLocked, IBDASignalStatistics::put_SampleTime, IBDASignalStatistics::get_SampleTime (Johannes Anderwald)
  • Implement IBDA_DeviceControl::StartChanges, IBDA_DeviceControl::CheckChanges, IBDA_DeviceControl::CommitChanges, IBDA_DeviceControl::GetChangeState (Johannes Anderwald)
  • IBDA_DeviceControl interface now works with SageDvbRecorder(Windows XP SP3) (Johannes Anderwald)
  • Move from using include guards to pragma once. (Amine)
  • Whilst this is non-standard and potentially makes the code less portable, it's supported by both gcc and msvc and should bringg increased compilation speed due to its optimized behaviour (doesn't need to invoke the preprocessor) (Amine)
  • Merge Wine-1.1.39 changes to shlmenu.c. (Aleksey Bragin)
  • Maarten Kroese (Aleksey Bragin)
  • SHELL_MergeMenus: Don't skip higher IDs if uIDAdjustMax is set to 0xFFFF (according to MSDN). (Aleksey Bragin)
  • Implement IBDA_PinControl::GetPinID, IBDA_PinControl::GetPinType (Johannes Anderwald)
  • Comment out enumeration of IBDA_NetworkProvider (Johannes Anderwald)
  • Set output variable to null to fixup lazy callers (Johannes Anderwald)
  • Implement IBDA_PinControl::RegistrationContext (Johannes Anderwald)
  • Register filter with IBDA_NetworkProvider when it is an input pin (Johannes Anderwald)
  • IBDA_PinControl is now working (Johannes Anderwald)
  • Perform property request by passing the request through IKsPropertySet interface. This is necessary as the pin handle might not have been created at the time the proxy plugin has been loaded (Johannes Anderwald)
  • Set Reserved of KSP_NODE request to zero as required by the documentation (Johannes Anderwald)
  • Reintegrate header branch (Timo Kreuzer)
  • DDKAPI -> NTAPI (Timo Kreuzer)
  • delete duplicate definitions (Timo Kreuzer)
  • move files to right locations (Timo Kreuzer)
  • Fix Mm64BitPhysicalAddress definition (Timo Kreuzer)
  • Add a number of missing definitions (Timo Kreuzer)
  • add XDK (Timo Kreuzer)
  • Enhance debug traces (Johannes Anderwald)

DEVENUM

  • Extend device enumerator to support class enumerators of device interfaces (Johannes Anderwald


MSDVBNP

MSVIDCTL

WINE

  • Move and update assembler functions definition macros from port.h (added by Steven around revision 7000) to config.h as it is now in Wine. (Aleksey Bragin)
  • Update related __ASM macros. (Aleksey Bragin)
  • define interlocked_xchg_add to InterlockedExchangeAdd (Timo Kreuzer)
  • partial sync of test.h (Christoph von Wittich)
  • Cast the unused 0 in the ok macro to void to make clang happy (Timo Kreuzer)
WINED3D
  • Fix prototype of wined3d_event_query_supported (BOOL != HRESULT) (Timo Kreuzer)

KEYBOARD

KBDLV

  • Latvian keyboard fixes by Arturs B., <mad_alchemist AT mail DOT ru> (Gregor Schneider; #5385)
  • partly revert r47442 and apply a working fix by guarding some prototypes of functions that exist as intrinsics in #ifdefs, so we don't use them for gcc/clang (Timo Kreuzer)
  • remove duplicated prototypes, when an inline function exists already (Timo Kreuzer)

IDNDL

NLS

CSR

  • DejaVu Sans Mono seems to have a bug which makes Windows and Arwinss report double max char width as compared to a real char width. Since only a monospace font could be used, measure exact char width using GetTextExtentPoint32W and use that value. (Aleksey Bragin)

WIN32

BATT

  • Add battery class installer dll. (Eric Kohl)
  • Add missing 4th parameter to BatteryClassCoInstaller. (Eric Kohl)

BEEPMIDI

BROWSEUI

DEVMGR

  • Display Matching Device ID. (Eric Kohl)
  • Display some more device properties. (Eric Kohl)
  • devman.dll improvements by Viliam Lejcik: (Eric Kohl)
  • display version info for selected driver file in 'Driver File Details' dialog (Eric Kohl)
  • resource modification - changed some labels to read-only editboxes (Eric Kohl)
  • Fixes bug #4875. (Eric Kohl)


MSGINA

  • Use WLX_PROFILE_V2_0 instead of WLX_PROFILE_V1_0 and create an environment string that is filled with a single environment variable. WIP for bug #4102. (Eric Kohl)
  • Fix the order of controls to match the expected tab order. This makes the focus stop jumping around like crazy when you press the Tab key. (Eric Kohl)

NETCFGX

  • Improve the DNS data exchange between the basic IP settings and the advanced DNS panel (Gregor Schneider)
  • Simplify LaunchAdvancedTcpipSettings (Gregor Schneider)
  • Save DHCP and DNS settings from the basic TCP/IP panel independently of each other (Gregor Schneider; #5193)
  • Remove the hack that set DI_NEEDRESTART for all network adapters which prevented us from starting the miniport driver (Cameron Gutman)
  • Part of the fix for bug 3716 (Cameron Gutman)
  • Start the TCP/IP driver after we install a network adapter (Cameron Gutman)
  • This fixes the major bug that blocks Live CD networking but we still have some DHCP issues (DHCP starts and fails before the NIC and TCP/IP has been installed) and some other adapter detection issues that I need to look into but this is a good first step (Cameron Gutman)
  • Create the DhcpEnabled value in the registry (Cameron Gutman)

NETSHELL

NTMARTA

  • AccRewriteSetEntriesInAcl: Fix a bug that caused the for loop never to complete due to reuse of same variable. (Michael Martin)

QMGR

  • Don't bulldoze our netsvcs key to install a service that doesn't even work yet (Cameron Gutman)
  • Add the FLG_ADDREG_APPEND flag when writing the netsvcs value because, unlike WINE, we are actually going to have values in there (Cameron Gutman)
  • Reapply r47268 to fix DHCP (Cameron Gutman)
  • Implement DeviceHandleToUsbDevice and remove IsHandleValid. (Michael Martin)
  • Add call to DeviceHandleToUsbDevice for all Direct Call functions that pass DeviceHandle. (Michael Martin)
  • Stop the processing of Asynchronous List after the Control Request has been processed by controller. (Michael Martin)
  • Misc changes. (Michael Martin)
  • Fix a FIXME in fastfat driver which also fixes a BSOD in kernel32 path winetest (Pierre Schweitzer)
  • sysreg doesn't like rain of SEMI-STUB debug (Sylvain Petreolle)

SETUPAPI

USERENV

  • Revert r43057: setting environment variables per process is not useful here, a higher authority has to do this globally (Gregor Schneider; #4008)
  • Create 'Default User' and 'All Users' directories without postfix and append a postfix only if they already exist. (Eric Kohl)
  • Create the user account directory without a prefix and append a prefix if the directory already exists. (Eric Kohl)
  • Acquire the restore privilege before unloading a hive and remove it after unloading the hive. (Eric Kohl)
  • Patch is based on Gabriel Ilardi's patch. Fixes bug #2972. (Eric Kohl)
  • Create the environment variables 'ProgramFiles' and 'CommonProgramFiles' from the registry. (Eric Kohl; #2972)
  • Fixes bug #4008. (Eric Kohl; #2972)
  • Disable GDI batch code for regions. "Fixes" broken drawing for AcrobatReader. Yes, it's a "band aid over a bullet wound". I hope the man with the gun is a surgeon, too. (Timo Kreuzer)
  • CreateEnvironmentBlock: Also add the volatile environment values to the users environment block. (Eric Kohl)
  • Fix Italian commonfiles (Gabriel Ilardi)
  • Fix a typo and some Spanish environment variables (Gabriel Ilardi)
  • Fix mistakenly translated strings "recent" and "sendto" in Italian and Spanish resources, plus another Spanish fix. (Gabriel Ilardi)

WINMM

  • Fix a number of 64bit issues, add some comments where the code is not 64 bit safe. This module should be synced with wine, but this still causes a problem with Flash videos on FF2 (likely another timer problem) (Timo Kreuzer)

DRIVERS

BMFD
  • HGLYPH is an ULONG. Use offset to glyph entry as HGLYPH instead of the pointer to fix 64bit build. (Timo Kreuzer)
  • 41070 (tkreuzer) (Timo Kreuzer)
  • HGLYPH is an ULONG. Use offset to glyph entry as HGLYPH instead of the pointer to fix 64bit build. (Timo Kreuzer)
  • 41070 (tkreuzer) (Timo Kreuzer)

LIB

FREETYPE

  • When doing 1BPP -> 8BPP conversion set all 8 bits not only the LSB. (Freetype devs were notified of this issue) (Kamil Hornicek; #5244)
  • The FT_MulFix patch is not neccessary anymore, the 1BPP -> 8BPP conversion patch will be applied again right after this. (Jerome; #4537)
  • Remove setjmplongjmp.s (Timo Kreuzer)
  • Fix FT_Get_CID_Is_Internally_CID_Keyed export name to match source code. (Aleksey Bragin)


MINGW

CMLIB

DRIVERS

MMEBUDDY
MMENT4
  • Remove a ";" after an if (), that makes no sense and caused GetNt4SoundDeviceCapabilities to always return without doing anything. (Timo Kreuzer)
  • Fix warning about uninitialized variable (Timo Kreuzer)

FSLIB

VFATLIB

  • Get rid of the hard-coded sector size as large sector (4KB) harddisks are already available. (Eric Kohl)
  • When a partition is formatted, choose the FAT type according to the partition type. The size of the partition does not matter here as it is up to the caller to set the right partition type according to its size. (Eric Kohl)

SDK

INF

MEDIA

  • Add a device description for PNP0A00 (Cameron Gutman)
  • Fix the class GUID so devices appear in the correct category in device manager (Cameron Gutman)
  • Remove trailing spaces on some device descriptions (Cameron Gutman)
  • Remove the "(UniATA)" at the end of some device descriptions (Cameron Gutman)
  • Add -fms-extensions for arm build (Timo Kreuzer)
  • Add _NT_TIB_KPCR to compensate for a missing NT_TIB (hackfix) (Timo Kreuzer)
  • add KERNEL_STACK_SIZE & co for arm (Timo Kreuzer)
  • Add missing KeGetCurrentThread prototype for arm (Timo Kreuzer)
  • define INTERLOCKED_RESULT for X86 only (Timo Kreuzer)
  • Add _CONTEXT and _EXCEPTION_RECORD forward declarations (Timo Kreuzer)
  • remove scsiport from arm build (Timo Kreuzer)
  • Compile scsiport.c for freeldr only on x86 builds (Timo Kreuzer)
  • revert r46742 (Timo Kreuzer)
  • Reenable isapnp (Cameron Gutman)
  • Comment out the service installation for VBE and VGA so the configuration set in first-stage won't get overwritten (Cameron Gutman)
  • Nasty graphical glitches still remain in VGA mode (Cameron Gutman)
  • Fixes bug 2073 and bug 4192 (Cameron Gutman)
  • Add 'PortSubClass' values for serial and parallel ports. (Eric Kohl)

NTOSKRNL

  • Implement basic Headless support in the kernel. Implement missing InbvPort routines based on WinLdrPort (using cportlib). Add header for Hdl. Terminal initializes now on COM2. Added misisng code to InbvDisplayString to also display on Headless Terminal (requires unimplemented HeadlessDispatch). Next steps are to implement the kernel log buffer, and HeadlessCmdPutString to see boot strings. (Anton)
  • Implement CmdPutString command, and add log message types. Kernel version/build, processor, and RAM, now appear on EMS screen (due to InbvDisplayString), as well as loaded drivers. Next steps are to support log entries and a flag to route debug output (a ReactOS-specific feature request). (Anton)
  • Fix support for non Headless scenarios as well. (Anton)


Uncategorized

  • rapps (Daniel Reimer)
    • Update openoffice 2.4 Links to a new and working mirror
    • Add Opera 9 to rapps.
    • Update OOo to 3.2.1 and the last time... fix the FF2 link.
    • Update rapps database to most recent Versions of all apps.
    • Add the non yet working FF 3.6 and AbiWord 2.8.5 to rapps to simplify testing.
    • Updated VB6, VC2005, VC2008 links according to winetricks.
    • Update the rapps download list.
    • Fix the SeaMonkey Mirror.
    • Try to fix FF2 Download.
    • Add Visual C++ 2008 SP1 runtime to rapps and rename the others correctly.
    • Added Fox Audio Player to rapps and some more fixes. (Igor Paliychuk, myself)
    • Update the rapps Database to a valid FireFox Link once more.
    • Bug 5072: PATCH: Add ReMooD to ReactOS Application Downloader. (by GhostlyDeath)
    • Update Rapps Links and add the two RosBE Addons.
    • Update some more apps. (OpenOffice 3.2.0, SciTE 2.03)
    • DosBox to 0.74, Mirror of FireFox 2, IrfanView to 4.27, RosBE to 1.5.1, uTorrent to 2.0.2.
    • Update FireFox, KDE, MirandaIM, Mono, Opera, RosBE64, SeaMonkey, ThunderBird, uTorrent, VLC in rapps.
    • Added comctl32.ocx, KDEWin, Mono, .net, Media Player Classic, Python, Steam, Tahoma Font and Windows Media Encoder 9 to rapps.
    • Update VLC to 1.1.0
    • Add SuperFinder XT to rapps.


  • piperead (Daniel Reimer)
    • Update piperead to Version 0.3 (Jan Roeloffzen)
    • Updated piperead (Jan Roeloffzen) Bug 5146
  • Bug 5501: Add Wing32 support by Carlo Bramini
  • user32: DrawText: CJK and Thai line-wrapping (Katayama Hirofumi)
  • appwiz: check if path is valid (Katayama Hirofumi)
  • Put Vizzini's "csq.h" in the Public Domain with permission from the author: (Colin Finck)
  • Make KeFlushProcessTb work. Since no MPCore support, CPU TLB is flushed instead. Maybe should use ASIDs later. (evb)
  • NANDFlash tool for building OMAP3 FLASH Images for DevBoard and QEMU-Maemo. (evb)
  • ARM LLB for OMAP3/Beagle (test with QEMU-Maemo) and Versatile (test with QEMU). (evb)
  • Boots to blue screen with white text to indicate checkpoint. (evb)
  • Enable serial output. (evb)
  • Forgot to change SARCH back to Versatile. (evb)
  • Plugin support for booting FreeLDR when used as initrd on QEMU command-line. (evb)
  • Change ARM loading architecture to match EFI/Firmware model. LLB provides "firmware" routines, FreeLDR obtains "firmware" routines from the ARM block, and sets them as the Machine VTable. All board-specific FreeLDR code gone now. (evb)
  • Start work on UI. Serial output is now only for debugging, not usual console. (evb)
  • Need PL045 Keyboard code to handle KbHit/GetCh. (evb)
  • Have PL011 code ready for MachVideo routines, coming soon... (evb)
  • Start stub of environment functions. (evb)
  • Add config interface start (PciReadWriteConfigSpace, PciReadSlotConfig) (evb)
  • Add PDO_EXTENSION structure and PCI_FUNCTION_RESOURCES, now delete #if0 in old code since PDO_EXTENSION is now exist defintion (evb)
  • Add ID Class/Subclass to description functions (PciGetDeviceDescriptionMessage, PciGetDescriptionMessage), use pciclass.mc from sir_richard (evb)
  • New debug: PciDebugDumpCommonConfig (evb)
  • Enable non-OOB mode for Versatile. (evb)
  • Enable RAMDISK support in LLB. (evb)
  • Build commandline for OS Loader (FreeLDR). (evb)
  • Now ready to start loading freeldr.ini (evb)
  • Add support for ram disk offset (.IMG file is a RAW image, partition starts later...) (evb)
  • Fix ram disk support in FreeLDR, ARC changes had broken support for booting FreeLDR (not just the Windows) from a ram disk. ARM port now initializes ramdisk as an FS device. (evb)
  • Fix hardcoded DISKREADBUFFER and FILESYSBUFFER values. On ARM these will be dynamically selected for each board (need to improve this through LLB). (evb)
  • Now FreeLDR.ini is read, and crash happens because UI routines are all NULL. (evb)
  • Add stubs for video mach functions and update minor to 1.3. (evb)
  • Implement some simple video routines. (evb)
  • Fix usable RAM not to include loader code and ram disk (up to 32MB). (evb)
  • FreeLDR menu now appears, need GetTime for counter. (evb)
  • Add PL031 RTC code for Versatile. (evb)
  • Add RTC time to TimeInfo convert. (evb)
  • Implement FirmWare GetTime function. Countdown in FreeLDR now working. (evb)
  • Switch to bootvid 8x13 font (closer to PC/VGA experience). (evb)
  • Fix LlbFwVideoGetDisplaySize return characters X/Y, not pixels. Now "Press F8 for advanced menu" shows". (evb)
  • Refactor keyboard support to match serial. Now reading a key and waiting for a key are two things. (evb)
  • Implement KbHit Firmware routine. (evb)
  • It is now possible to interact with FreeLDR using the keyboard. (evb)
  • Video Miniport driver not use ntddk.h, but miniport.h. But, Reactos miniport.h is empty! Add some definitions to miniport.h to get simple drivers to compile, so now can remove ntddk.h from VGA/VBE/XBOX miniports! (evb)
  • Video Port driver should not use either, but too many changes required. So, define __BROKEN__ to allow ntddk + miniport together. (evb)
  • Add VideoPortIsNoVesa API definition. Not implemented in ReactOS, used to disable VESA in F8 "Standard VGA Mode". Should implement for VGA-only support on broken VESA machine, and for test. (evb)
  • Fix includes in richard's driver. (evb)
  • Fix wrong calling to VideoPortCreateEvent. He got parameters all mixed up~ (evb)
  • Change NANDFlash again for Versatile support. Now the LLB and OS Loader are created in one binary blob (loaded with -kernel), while the RAMDISK is loaded with -initrd. (evb)
  • Now the only complication is that RAMDISK loaded at 0x80000 which will conflict with the 0x800000 range where kernel loads. Could move RAMDISK in code through LLB, but that would be very expensive (shift by 16MB up). Instead, NANDflash creates ramdisk image starting at offset 16MB. This way, emulator thinks it's loading at 0x80000, but actually loads at 0x1800000. Would be better if QEMU not hardcoded the INITRD_LOAD_ADDR... (evb)
  • Define memory map structure for Versatile board/QEMU and send to OS Loader. (evb)
  • Many hack removed. (evb)
  • Better efficency use of memory layout. (evb)
  • Region at 0x800000 now available for FreeLDR use to load kernel files. (evb)
  • Implement simple ArmDiskNormalizeSystemPath so boot is allowed to happen. (evb)
  • Use better stack address as defined in memory map. (evb)
  • Now FreeLDR loads all files correctly from disk and is ready to jump to kernel. ARMv5 paging code must be rewritten before that can happen. (evb)
  • Reading MBR from RAMDISK does not work since RAMDISK starts at BootSector (rdoffset) and disk sector functions are NULL. Build bogus signature/checksum for now, unless MBR really needed later. (evb)
  • Now FreeLDR crashes no more and arrives at FrLdrStartup to boot kernel and setup paging. (evb)
  • Make boot.s just stub to force load address, since ARM LLB already does setup. Will get rid of later. (evb)
  • Get rid of all .pagedata stuff from boot.s. Now define simpler static page tables. Will probably get rid of later. (evb)
  • Fix memory map to include framebuffer, had forgotten about it. Moved framebuffer to the nearest hole found. It happens to be 0xA0000, nice coincidence (matches x86!). (evb)
  • Switch to nicer 8x16 font instead of 8x13. Now FreeLDR UI looks 99% identical to real PC. (evb)
  • Start writing new ARMv6 Paging Code. Enable extended page tables and access bit, redefine structures, only for OS Loader for now. (evb)
  • Identity map low-memory 1MB and MMIO 2MB space at 0x10000000 for Versatile. Need to make this board-specific later. (evb)
  • Need to investigate sharing code with WinLDR. (evb)
  • MMU enabled and Printf/LCD output works!. (evb)
  • Fix text output (evb)
  • Allow for more than just one parameter on the bootROM command line (sepearate with commas). (evb)
  • Rdoffset is not hardcoded anymore, but passed on cmdline. Allows using images with different partition offsets. (evb)
  • Last code in PciScanBus: call to PciGetfunctionLimits now implement (call PcipGetfunctionLimits if PciSkipThisFunction say no) (evb)
  • PcipGetfunctionLimits support PCI_HACK_CRITICAL_DEVICE and PCI Debug Device by use IPI code (PciExecuteCriticalSystemRoutine implement) (evb)
  • PciConfigurators table define for Device, PCI-to-PCI (PP) Bridge plus CardBus Bridge but all configurator stub now (evb)
  • Configurator chain: Init (Massage) -> [WRITE INIT] (PciWriteLimitsAndRestoreCurrent) -> Restore -> SaveLimit -> SaveCurrent (evb)
  • Support ExpectedWritebackFailure (evb)
  • Fix bug in PciApplyHacks (found by me testing sir_richard code) (evb)
  • Implement logical keyboard interface. Converts scan code to ASCII codes (just ok). (evb)
  • Implement firmware ConsGetCh based on keyboard interface. (evb)
  • Implement KMI (Keyboard & Mouse Interface) PL050 driver for Versatile to init PS/2 and read keyboard scancodes. Can now press ENTER/whatever when FreeLDR gives "Cannot find freeldr.ini" error. (evb)
  • Support ATAG Linux/ARMBoot architecture defined-structures. These are used by all ARMBoot-compatible loaders (QEmu, U-boot, etc). (evb)
  • Read RAMDisk, RAM, Command Line from ATAGs (use -append boot-device=RAMDISK). (evb)
  • Make environment-get function read command-line. (evb)
  • Allocate RAM memory structure portably. (evb)
  • Validate board info on boot. (evb)


  • ntstrsafe.h] (Timo Kreuzer)
  • Fix a number of parameter types (LPSTR/LPCSTR instead of PCHAR, PCCHAR) This is not the same, PCCHAR is a char * not a const char * (Timo Kreuzer)
  • CRT (Timo Kreuzer)
    • add _mingw_mac.h from ming-w64 and include it into _mingw.h
    • Update _CRTIMP definition
    • Fix definition of _wctype
    • onexit is not _CRTIMP
  • MINGW (Timo Kreuzer)
    • Update mingw library to mingw-w64 trunk (mingw-w64-src_20100325)
  • time.h (Timo Kreuzer)
    • Add missing asctime_s and localtime_s, don't include time_s.h anymore
  • setjmp.h (Timo Kreuzer)
    • Add mingw_getsp as inline function
  • reactos.dff (Timo Kreuzer)
    • make explorer.exe and ntvdm optional
  • dbghelp.h, imagehlp.h (Timo Kreuzer)
    • fix LOADED_IMAGE, UpdateDebugInfoFile, UpdateDebugInfoFileEx, ReBaseImage
  • WIN32K, WIN32CSR (Timo Kreuzer)
    • Get rid of FASTCALL specifier for static functions and functions with no parameters.
  • GDI32 (Timo Kreuzer)
    • GetTextExtentExPointI and GetTextExtentPointI take an array of glyph indices, not characters. Pass a flag GTEF_INDICES (This is a reactos specific definition and not exactly like on Windows XP, but the real names/values are undocumented and this is the easiest way.) to NtGdiGetTextExtent/NtGdiGetTextExtentExW and handle this flag in TextIntGetTextExtentPoint to account for this.
    • Fixes bug 3481
  • MSAFD, PSDK (Cameron Gutman)
    • Merge part of r45435
    • Merge r48011 from aicom-network-branch
  • winnt.h (Timo Kreuzer)
    • Remove definition of UNW_FLAG* constants. They don't belong here.
  • WDMAUD.DRV (Johannes Anderwald)
    • Apply changes from mmixer library
    • Tested in Vbox with Winamp / ReactOS mplay32
  • MMIXER, WDMAUD_KERNEL (Johannes Anderwald)
    • Implement retrieving device path
  • KSPROXY, MSDVBNP, MSVIDCTL, BDAPLGIN (Johannes Anderwald)
    • Implement DllRegisterServer, DllUnregisterServer for those components
    • Add msdvbnp, msvidctl to build
    • Add msdvbnp, bdaplgin, msvidctl to bootcd
  • KSPROXY, MSDVBNP (Johannes Anderwald)
  • Remove remaining DebugBreak
  • Add debug traces
  • WINGDI.H (Timo Kreuzer)
    • Add missing GetCharWidthI, GetTextExtentExPointI, GetTextExtentPointI
  • tchar.h (Timo Kreuzer)
    • enable _tcsnlen definition
  • WIN32K, USER32 (Jerome Gardou)
    • Get rid of ONEPARAM_ROUTINE_CREATECURICONHANDLE
  • DESK.CPL (Katayama; #5552)
    • Fix client font in the advanced appearance dialog.
  • winnt.h (Timo Kreuzer)
    • Fix definition of KNONVOLATILE_CONTEXT_POINTERS for amd64
  • BDAPLGIN, KSPROXY, MSDVBNP, MSVIDCTL (Johannes Anderwald)
    • Register DLLs when ReactOS is installed
  • intrin_x86.h (Timo Kreuzer)
    • cast return value of __sync_val_compare_and_swap to make clang happy
    • add __cdecl to a number of intrinsics to make them (hopefully) compatible with crt header declarations.
  • WDMAUD.DRV (Johannes Anderwald)
    • Cleanup code
    • Fix a bug which made the caller assume that a wave handle has already been open.
    • define a macro which appends a postfix depending on wether USE_MMIXER_LIB has been defined
  • DESK.CPL (Aleksey Bragin; #5620)
    • Katayama Hirofumi <katayama.hirofumi.mz@gmail.com>
    • Renamed GLOBAL_DATA structures to DATA.
    • Added real GLOBAL_DATA in background.c, that manages the background color.
    • Resolved conflict of background colors in background.c and appearance.c.
    • Fixed drawing the menu in draw.c.

BASE_SYSTEM_EXPAND

  • Update expand utility to Wine-1.1.37. Last update happened 7 years ago and since then it was translated into 20 languages. Sorry to all the translators but the preference is given to a working untranslated version rather than a non-working localized one. (Aleksey Bragin; #4637)
  • Update README.WINE. (Aleksey Bragin)

INPUT_I8042PRT

  • Fix a check when queuing the mouse packet. Check that the buffer size (MouseInBuffer) is not greater or equal to MouseDataQueueSize. Fixes a NonPagedPool corruption that occurs when the mouse is moved before the desktop window is up and running. (Michael Martin)

INTRIN_X86

IOEVENT

NETEVENT

  • Add new netevent.dll. It is a resource dll that will be used by the event log viewer. (Eric Kohl)

NTOS_PERF

  • Enable VME support. VME stands for Virtual 8086 Mode Extensions, and it's an Intel optimization that makes changes to the IF bit in EFLAGS (CLI, STI, INT, IRETD, PUSHF, POPF) completely transprent: instead of changing the real (protected) bit, which requires the OS to trap and emulate the behavior, the CPU sets a "Fake" IF bit instead. When you're down in V8086 mode, you simply update your real flag with whatever the fake flag says. (sir_richard)

SCM

  • Fix SCM shutdown. Now all services are stopped (in my working copy with the CSRSS shutdown code). (sir_richard)

SETUPLDR

  • Do not build on ARM. On a side note, I offer a bountry for "if ARCH != ARM" support in .rbuild files, instead of only allowing * Use mini_hal only on i386 builds (Timo Kreuzer)
  • Unify the old setupldr settings with more recent freeldr ones. Also fixes missing _udiv/mod functions on my build. (sir_richard)

STRSAFE

VMX-SVGA

  • Experimental driver for WMX-SVGA for testing memory manager and VideoPrt issues and acceleration on QEMU. (sir_richard)

WDMAUD_KERNEL

WIN32K|GDI32

  • Fix GdiBatch, the limit is for user space not system. (James Tabor)
  • Enable font batch and fixed setting brush origion. Use the new delete object functions in win32k. (James Tabor)

WIN32K|GGI32

  • Diagnostic commit used for troubleshooting leaking region handles. (James Tabor)
  • Updates to headers and experimental code added for regions. (James Tabor)

XDK_DDK

SYSGEN

Versions / Official Changelogs / 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 | 0.4.11 | 0.4.12 | 0.4.13 | 0.4.14