Difference between revisions of "ChangeLog-0.3.9"

From ReactOS Wiki
Jump to: navigation, search
(Generic 0.3.9 Changes)
(Host Tools)
Line 87: Line 87:
  
 
= Host Tools =
 
= Host Tools =
* ssprintf.cpp/xml.cpp: Fix compilation for gcc 4.4.0 and 64bits ([Samuel Serapión])
+
* ssprintf.cpp/xml.cpp: Fix compilation for gcc 4.4.0 and 64bits ([[Samuel Serapión]])
  
 
== NCI ==
 
== NCI ==

Revision as of 15:45, 20 April 2009

This is the changelog for ReactOS™ version 0.3.9, 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.8 (released 4 February, 2009).

Contents

General

Generic 0.3.9 Changes

Translations

Headers

comctrl.h

commdlg.h

  • Fix 64bit definition of HOOKPROC (Timo Kreuzer)
  • Fix packing for commdlg. (Samuel Serapión)
  • Fix 64bit definition of CDHOOKPROC (Daniel Verkamp)

intrin_x86.h

lmaccess.h

mmddk.h

mmsystem.h

  • Fix 64bit definitions of WAVEHDR, waveOutGetDevCapsA/W, waveInGetDevCapsA/W, midiStreamOpen, midiOutGetDevCapsA/W, midiOutOpen, midiInGetDevCapsA/W, midiInOpen, auxGetDevCapsA/W, auxOutMessage, mixerGetDevCapsA/W, mixerOpen, timeSetEvent, joyGetDevCapsA/W, mciSendCommandA/W, (Samuel Serapión)
  • Fix 64bit definition of waveOutMessage, waveInMessage, midiOutMessage, midiInMessage (Timo Kreuzer)

msacm.h

prsht.h

richedit.h

shellapi.h

tlhelp.h

vfw.h

wdm.h

winbase.h

  • Fix 64bit definition of ReadProcessMemory (Samuel Serapión)
  • Fix 64bit definition of HeapAlloc. (Timo Kreuzer)
  • Fix 64bit definition of SYSTEM_INFO, GetProcessAffinityMask, SetProcessAffinityMask (Daniel Verkamp)

windef.h

  • Fix 64bit definition of PROC, FARPROC, NEARPROC (Daniel Verkamp)

winnt.h

winsock.h

winuser.h

  • Fix 64bit definitions of DialogBoxIndirectParamA/W, DialogBoxParamA/W, DispatchMessageA/W, EndDialog, GetClassLongPtrA/W, GetMessageExtraInfo, keybd_event, KillTimer, SendDlgItemMessageA/W, SendMessageCallbackA/W, SendMessageTimeoutA/W, SetTimer (Samuel Serapión)
  • Fix 64bit definition of TIMERPROC (Samuel Serapión)
  • Fix 64bit definition of NMHDR (Samuel Serapión, Daniel Verkamp)
  • Fix 64bit definition of RT_GROUP_CURSOR, RT_GROUP_ICON, COMPAREITEMSTRUCT, COPYDATASTRUCT, DELETEITEMSTRUCT, DRAWITEMSTRUCT, MENUITEMINFOA/W, HELPINFO, MSGBOXPARAMSA/W, MOUSEHOOKSTRUCT, MEASUREITEMSTRUCT, DROPSTRUCT, KBDLLHOOKSTRUCT, DragObject, InsertMenuA/W, ModifyMenuA/W, WinHelpA/W (Daniel Verkamp)


Host Tools

  • ssprintf.cpp/xml.cpp: Fix compilation for gcc 4.4.0 and 64bits (Samuel Serapión)

NCI

RBUILD

  • Strip off stdcall decoration from amd64 entry points (Timo Kreuzer)
  • Link to libgcc_eh for amd64 C++ apps (Samuel Serapión)
  • Use dwarf-2 debugging format on amd64, stabs on all other architectures (Timo Kreuzer)

RSYM

WIDL

WMC

Core

Bootloader (FreeLoader)

  • Remove two unnecessary boot types (Windows2000 and WindowsXP), and add ReactOSSetup2 type for WinLdr-style setup loader. (Aleksey Bragin)
  • Implement a better setupldr called setupldr2, which implements NT-compatible bootloading. (Aleksey Bragin)
  • Port to amd64 architecture (Timo Kreuzer)

Kernel and Executive (NTOSKRNL)

CC

  • ReactOS can now be installed on systems with as little as 24MB. Memory usage after boot is down by 20-30MB. Application installations will use/require/leak less memory (Aleksey Bragin, Alex Ionescu, Bug #703)

CM

DBGK

EX

  • Return full process image names in SystemProcessInformation when possible, instead of limiting to 32 bytes (Aleksey Bragin, Evgeniy Boltik, Bug #4087)
  • If looking up a long name for a process failed, use short one. This fixes the issue with "System" not being displayed correctly (Aleksey Bragin)
  • Round up process name length more correctly (Aleksey Bragin, Evgeniy Boltik)
  • Make SystemProcessInformation return required size if buffer is too small. Matches Windows XP behavior. (Aleksey Bragin, Evgeniy Boltik)
  • Add privileges check to SystemTimeAdjustmentInformation SSI routine. (Aleksey Bragin, Dmitry Chapyshev)
  • Always capture fast reference values on the stack since a fast reference is by nature volatile (Aleksey Bragin)
  • NtSetSystemInformation: Don't leak the copied string when being called from user mode. (Timo Kreuzer)
  • NtSetSystemInformation: Don't recursively call ZwSetSystemInformation, instead continue the normal path. (Timo Kreuzer)

FSRTL

FSTUB

IO

  • If a driver has no Tag specified it should be defaulted to the max ULONG value, so it gets loaded after all drivers with correct tags. This fixes a problem of null.sys and beep.sys loading up to TagCount (20 for Base group) times during each boot. (Aleksey Bragin)
  • Consider Pnp initialized after system drivers finished loading. (Aleksey Bragin)
  • Fix reinitialization routines callbacks: processing reinit callbacks after EVERY driver load, including boot drivers is wrong. The sequence should be init boot drivers, call boot drivers reinit routines, load pnp drivers, load system drivers, call reinit routines. And then, when Pnp is initialized, call reinit routines after every driver module load event. (Aleksey Bragin)

KD

  • Synchronize debug messages output to the serial port. Now each line of a debug log is printed synchronously, as it is NT. In future, this should be converted to a generic spinlock for all registered KD handlers (Aleksey Bragin)

KDBG

  • Load debug symbols if compiled with DBG, but don't load if booting with less than 96Mb of RAM. (Aleksey Bragin)

KE

MM

  • Don't match pool tags in ExFreePool if Tag is 0. (Aleksey Bragin)
  • Fix a typo: set a value, not a bit. (Aleksey Bragin)
  • Implement a new Hyperspace Mapping Interface: (ReactOS Portable Systems Group)
    • The new interface is portable and much faster than before. For example, unmapping a hyperpage is almost a one-line operation.
    • The new interface is also thread-safe and uses the EPROCESS hyperspace spinlock.
    • However, in order to isolate from React Mm internals, the Hyper IRQL and Process are stored as globals, so this will not work on SMP.
    • For now, mapping vs. zero PTEs are not treated differently, but the two interfaces have been separated pending future work.
    • Performance tests with _rdtsc resulted in an improvement of over 300% compared to the old interface.
    • Hyperspace mappings are frequent, so the improvement is noticeable during startup (3/10ths of a second).
    • This also fixes incorrect initializtion of hyperspace -- pages were zeroed out (which requires hyperspace) before hyperspace was created.
  • Call ExFreePoolWithTag with 0 tag from ExFreePool instead of vice versa, bugcheck system, when Block is not inside any pool. (Timo Kreuzer)

OB

  • Don't require ULONG alignment on OBJECT_HANDLE_ATTRIBUTE_INFORMATION structure since it is just made of BOOLEANs. (Jeffrey Morlan)
  • Refactor Fast Reference implementation into a generic module with init/acquire/release/compare/insert interfaces, and update the executive callback & object manager referencing code to use it (Aleksey Bragin)
  • Make TOKEN pointer in OBJECT_HEADER a fast reference, just like on Windows (Aleksey Bragin)
  • Update SD cache code to treat it as such (Aleksey Bragin)
  • Improves performance by 500% during security checks - noticeable impact during large file or registry transfer operations (Aleksey Bragin)

PS

  • Change ExitStatus of Process from STATUS_TIMEOUT to STATUS_PENDING (STILL_ACTIVE). (Michael Martin,Bug #3135)
  • Don't reference target process in the beginning of NtQueryInformationProcess but check buffer's length first (Aleksey Bragin, Dmitry Chapyshev)

SE

  • Fix freed memory usage in SeLocateProcessImageName (Aleksey Bragin, Jan Roeloffzen, Bug #4087)
  • Use a correct structure member in SeAuditProcessCreationInfo (but it's still the same pointer) (Aleksey Bragin, Bug #4087)
  • Rewrite bottom part of the function to better match ReactOS coding style (Aleksey Bragin, Bug #4087)

SMSS

Hardware Abstraction Layer (HAL)

Run Time Library (RTL)

  • Remove code for updating the drive-specific current-directory environment variable from RtlSetCurrentDirectory_U; belongs in the CRT instead. (Jeffrey Morlan)
  • Add another heap freelist for small blocks, making mingw32-make much faster. (Jeffrey Morlan)
  • RtlSetEnvironmentVariable: Removing a variable that didn't exist in the first place should still return STATUS_SUCCESS. (Jeffrey Morlan)
  • Removing a variable can be done by using a pointer to a UNICODE_STRING with a NULL Buffer as the value, as well as just passing NULL as the value. (Jeffrey Morlan)

Kernel Mode Drivers

ACPI

AFD

  • Don't change the status of a completed irp Cameron Gutman
  • Rewrite AfdGetPeerName Cameron Gutman
  • Fix a race condition that causes a crash in TdiReceiveDatagram Cameron Gutman
  • Make irp cancellation and socket shutdown work correctly and remove hacks related to it Cameron Gutman
  • Don't forget to lock buffers before dispatching the datagram request Cameron Gutman
  • Fix LockBuffers Cameron Gutman
  • Validate size of output buffers before writing to them Cameron Gutman
  • Fix some listening bugs Cameron Gutman
  • Loop the irp queue and cancel the requests Cameron Gutman
  • Loop the datagram queue and free all the datagram requests Cameron Gutman
  • Loop the pending connection list and free all the pending connections Cameron Gutman
  • Free the FCB context, ConnectionReturnInfo, and ConnectionCallInfo Cameron Gutman
  • Implement a DispatchCleanup handler and properly separate cancellation from closing Cameron Gutman
  • Set pointer to NULL after we free the memory Cameron Gutman
  • Don't call TdiCloseDevice when we run out of memory because it causes a crash later Cameron Gutman

CDFS

FASTFAT

  • Fix bug preventing removal of directories that previously contained many files. (Jeffrey Morlan)

FS_REC

HID

  • Move part of the 1st stage pnp hacks to kbdclass driver. Previously, the driver (i8042prt) relied on kbdclass's normal reinit routine being called BEFORE a registered boot reinit routine, which is certainly wrong on a real NT system. Now, the correct order is ensured, and it is not relying on a broken reinit calling order in ReactOS anymore (Aleksey Bragin)

ISAPNP

  • Fix some issues causing us to skip valid read data ports Cameron Gutman
  • Handle IRP_MN_FILTER_RESOURCE_REQUIREMENTS so the driver receives IRP_MN_START_DEVICE now Cameron Gutman

KMIXER

KS

  • Implement KsDefaultDispatchPnp, KsAcquireDeviceSecurityLock, KsReleaseDeviceSecurityLock, KsAddObjectCreateItemToDeviceHeader, KsAllocateDeviceHeader, KsAllocateObjectCreateItem, KsAllocateObjectHeader, KsSetMajorFunctionHandler, KsDispatchIrp, KsCreateTopologyNode, KsCreatePin, KsPinPropertyHandler, KsPinDataIntersection, KsTopologyPropertyHandler, KsValidateConnectRequest, KsAddIrpToCancelableQueue, KsRemoveIrpFromCancelableQueue Johannes Anderwald
  • Fix KsAddObjectCreateItemToObjectHeader prototype Johannes Anderwald
  • Fix implementation of KsAllocateObjectHeader and store the result either in the passed irp or device header Johannes Anderwald
  • Implement Reading / Writing / DeviceIoControl / Flush / QuerySecurity / SetSecurity operation using the object file header Johannes Anderwald
  • Implement KsSynchronousIoControlDevice function Johannes Anderwald
  • Fix a bug in KsAllocateDeviceHeader which copied the create item to the wrong offset Johannes Anderwald
  • Set Created status to true when create function is not zero Johannes Anderwald
  • Partly implement KsStreamIo Johannes Anderwald
  • Set a completion routine for irps send to lower devices by KsSynchronousIoControlDevice Johannes Anderwald

NPFS

  • NpfsDisconnectPipe: Return STATUS_PIPE_DISCONNECTED if pipe is already disconnected. (Michael Martin)
  • Return STATUS_BROKEN_PIPE for cases where the pipe has been closed. (Michael Martin)
  • Check that pipes otherside is valid before attempting to fire othersides read/write event. (Michael Martin, Bug #4137)

NDIS

  • Fix NdisReadNetworkAddress Cameron Gutman
  • Implement NdisMDeregisterDmaChannel, NdisMQueryAdapterInstanceName, NdisMRegisterDmaChannel, NdisMInitializeScatterGatherDma, NdisGetDriverHandle, NdisCompleteUnbindAdapter, NdisDeregisterAdapterShutdownHandler, NdisMapIoSpace, NdisRegisterAdapterShutdownHandler, NdisAllocateSharedMemory, NdisFreeSharedMemory, NdisFreeDmaChannel, and NdisMAllocateSharedMemoryAsync Cameron Gutman
  • Query MaxMulticastAddresses from the miniport Cameron Gutman
  • Fix a memory leak Cameron Gutman
  • Report that we are NDIS 5.0 to drivers Cameron Gutman
  • Pass packet flags to MiniportSend Cameron Gutman
  • Fix a bug that causes any NIC driver that calls NdisMTransferDataComplete to fail Cameron Gutman
  • Deserialized miniports complete sends asynchronously so don't double complete packets which causes a crash (fixes miniport drivers that have a deserialized MinportSendPackets handler) Cameron Gutman
  • Finish implementation of MiniIndicateReceivePacket (Fixes miniport drivers that use NdisMIndicateReceivePacket) Cameron Gutman
  • Simplify and fix timer implementation (fixes seemingly random hangs when loading some miniport drivers) Cameron Gutman Johannes Anderwald
  • Initialize the spin lock in NdisInitializeReadWriteLock (fixes miniport drivers that use the read/write lock) Cameron Gutman
  • Fix a multiplication error that causes a garbage timeout value to be passed to KeWaitForSingleObject (similar to the timer bug) (NdisWaitEvent works properly now) Cameron Gutman

PORTCLS

SCSIPORT

SYSAUDIO

TCPIP

USB

  • Fix a horrible bug, when DriverEntry was not having __stdcall calling convention. (Aleksey Bragin)
  • Scan three PCI buses in the legacy USB driver instead of 2. Fixes UHCI/EHCI detection issues in VMWare Workstation 6.5 and higher (Emulated UHCI is located on bus 2). (Aleksey Bragin)
  • Actually advance current item pointer to the next one when traversing a linked list. Fixes an infinite loop when building USB interface. (Aleksey Bragin)
  • Rename a variable so it doesn't conflict with a reserved keyword. (Aleksey Bragin)
  • Wait until all usb embedded drivers are initialized before returning from DriverEntry. This allows usb mouse driver to have a chance to register itself before mouclass is loaded. (Aleksey Bragin)
  • Add first version of USB keyboard driver (limitations: no keyboard LEDs support, no repeated keypress support, right-side modifier keys not supported). (Aleksey Bragin)
  • Cleanup source code of USB mouse driver. (Aleksey Bragin)
  • Fix UsbBuildGetStatusRequest macro. (Aleksey Bragin)
  • Fix an incorrect assumption that endpoint descriptors must immediately follow an interface descriptor (there may be generic descriptors in between too, as it is for e.g. USB HID devices). (Aleksey Bragin, Michael Lotz)
  • Fix incorrect handling of alternate interface settings, which resulted in reading uninitialized memory. (Aleksey Bragin)
  • Major cleanup of USB keyboard driver: Remove huge hack, which is not needed anymore since 39912. (Aleksey Bragin)
  • Major cleanup of USB keyboard driver: Put all global variables into device extension, allowing support for more than one USB keyboard. (Aleksey Bragin)
  • Major cleanup of USB keyboard driver: Cleanup driver extension structure. (Aleksey Bragin)
  • Major cleanup of USB keyboard driver: Remove unneeded endpoint finding code. (Aleksey Bragin)
  • Add test code for LEDs support (now puts three of them into ON state). (Aleksey Bragin)
  • Move USB keyboard LEDs managing code into an own function. (Aleksey Bragin)
  • Unhack usb mouse driver after endpoint parsing code was corrected. (Aleksey Bragin)
  • Cleanup usb mouse driver source code, make its structure similar to the usb keyboard driver. (Aleksey Bragin)

VIDEOPRT

WDMAUD

NT System Library (NTDLL)

Static Libraries

CRT

  • Fix some places where Win32 error codes were put in errno directly instead of going through _dosmaperr. (Jeffrey Morlan)
  • Fix bug in wcscspn where it would return a non-zero value on an empty string. (Jeffrey Morlan)
  • Added code for updating the drive-specific current-directory environment variable to _tchdir. (Jeffrey Morlan)
  • Fix bug in wcstoul causing it to set *endptr improperly. (Jeffrey Morlan)

IP

MINGW

PSEH

Keyboard Layouts

USETUP

  • Display memory usage in the installer as Kernel Cache and Kernel Pool, instead of Paged and Nonpaged Pool, which doesn't reveal the source of the memory leak (Aleksey Bragin, Alex Ionescu)
  • Remove 40% memory delay hack (Aleksey Bragin, Alex Ionescu)
  • Recognize all 4 primary partitions of every harddisk and assign drive letters to them. (Aleksey Bragin)
  • Make it possible to install ReactOS on any primary partition. Creating/deleting of more than one partition is still broken. (Aleksey Bragin)
  • Write ReactOS MBR if harddisk lacks one (Aleksey Bragin).

Win32™ Personality

User mode subsystem server (CSRSS)

Kernel-mode subsystem server (Win32K)

  • Fix mouse cursor problem in 256 color mode (Evgeniy Boltik, bug #4172)
  • Unify StretchBlt implementations (Gregor Schneider, Evgeniy Boltik)
  • Add StretchBlt clipping support (Gregor Schneider, bug #3477, bug #3656, bug #4089)
  • Fix GetBitmapBits return values (Gregor Schneider)
  • Fix palette copy in GetDIBits (Gregor Schneider)
  • Fix brush and rectangle offsets in BitBlt and TransparentBlt functions (Gregor Schneider, Evgeniy Boltik)
  • Added stretching support to TransparentBlt (Evgeniy Boltik, Gregor Schneider, bug #4337)
  • Fix system palette entries (Evgeny Boltik, Gregor Schneider, bug #4341)
  • Misc coordinate fixes for AlphaBlend, BitBlt, GradientFill, ExtTextOutW, PatBlt, StretchBltMask and TransparentBlt (Gregor Schneider)
  • Allow creation of empty regions in ExtCreateRegion (Gregor Schneider)
  • Fix buffer operations in GetTextFaceA/W (Gregor Schneider)
  • Fix a memory overwrite in BitBlt (Gregor Schneider, bug #4361, bug #4072)
  • Use bitmap's DIB palette, if it exists. Fixes problems described in bug 4147 (Evgeniy Boltik, bug #4147)
  • Brush's origin is always (0,0) of a window, not a screen. Offset it accordingly in NtGdiStretchBlt.(Evgeniy Boltik, bug #4147)
  • EngStretchBltROP expects a ROP4 code, but SRCCOPY is ROP3. Convert it accordingly. (Evgeniy Boltik, bug #4156)
  • Move clipping from StretchBlt to Eng. (Evgeniy Boltik, bug #4156)
  • Add ROP support to StretchBlt. (Evgeniy Boltik, bug #4156)
  • Fix alphablend support (alphablend.exe produces same result as tested on Windows XP). (Evgeniy Boltik, bug #4156)
  • Rework 16bit DIB alphablend to do alpha operations in source's palette (32bpp) to obtain much better output quality without data loss. (Evgeniy Boltik, bug #3708)
  • Rework 8bit DIB alphablend to do alpha operations in source's palette (32bpp) to obtain much better output quality with lowest possible quality loss. (Evgeniy Boltik, bug #4291)
  • Don't try to be smarter than Windows and don't copy background/foreground color from the original DC. Spotted and confirmed by Evgeniy Boltik. As a result issues in bug 4143 are fixed, as well as other possible problems. (Aleksey Bragin, Evgeniy Boltik, bug #4143)
  • Pass correct allocation flags to ZwAllocateVirtualMemory (Aleksey Bragin)
  • Don't provide region size when freeing virtual memory, confirmed by MSDN. (Aleksey Bragin, Evgeniy Boltik)
  • Remove a header structure from memory regions allocated with EngAllocUserMem. Modern versions of Windows (at least XP and higher) don't do this and instead save this information elsewhere. Confirmed by Alexandre Julliard's test case for calling WriteFile with the DIB section bits as buffer (5 less failures now) and by arguing with Evgeniy Boltik. (Aleksey Bragin)
  • NtGdiSetDIBitsToDeviceInternal: use bitmap's palette if it exists instead of always using system palette.(Aleksey Bragin, Evgeniy Boltik, bug #4326)
  • Apply a fix by Timo Kreuzer for the bug spotted by Evgeniy Boltik. 4 failures less in "gdi32_winetest.exe bitmap" now. (Timo Kreuzer, Evgeniy Boltik, bug #4326)
  • Rework NtGdiStretchBlt into GreStretchBltMask function, which provides stretch blitting with mask support. (Aleksey Bragin, Evgeniy Boltik, bug #4294)
  • Add NtGdiStretchBlt as a simple forwarder to the internal GreStretchBltMask helper. (Aleksey Bragin, Evgeniy Boltik, bug #4294)
  • Fix copypaste mistake in EngStretchBltROP. (Evgeniy Boltik, bug #4336)
  • Fix check in EngStretchBltROP, it should check original InputRect, not the clipped one. (Evgeniy Boltik, bug #4336)
  • Fix improper variable type in DIB_XXBPP_StretchBlt: PatternX and PatternY could be negative. (Evgeniy Boltik, bug #4336)
  • Enable and use mask support in UserDrawIconEx, fully compatible with Windows, based on tests in bug 4336. (Evgeniy Boltik, bug #4336)
  • Remove IntSet[Text/Bk]Color hacks from UserDrawIconEx, no longer required due to fix in CreateCompatibleDC. (Evgeniy Boltik, bug #4336)
  • Change a few comments in the code of UserDrawIconEx. (Evgeniy Boltik, bug #4336)
  • Always calculate a palette for the DIB in NtGdiGetDIBitsInternal, when dealing with 15 or 16 bit depth. Fixes broken taskbar icons on 16bpp. (Evgeniy Boltik)
  • Optimize BltMask (Timo Kreuzer, Evgeniy Boltik)
  • Fix global mouse and keyboard hooks in NtUserSetWindowsHookEx (Kamil Horníček)
  • Fix check for return status in IntChangeDisplaySettings (Kamil Horníček)

Services

DHCP

TelnetD

WinLogon

Control panel applets

APPWIZ

DESKTOP

  • Show the currently selected color scheme in combo box instead of default "Reactos Standard" (Matthias Kupfer)

INTL

SYSDM

TIMEDATE

  • Fix size of the clock for different screen resolutions. (Timo Kreuzer)

Win32™ Applications

Calc

Command Prompt

  • Fix handling of quotes in various commands. (Jeffrey Morlan)
  • Make delayed variable expansion actually be delayed. (Jeffrey Morlan)
  • Implement complete support for FOR command. (Jeffrey Morlan)
  • In SET /A: allow hex/octal numbers; allow space after an identifier; don't echo result when in a batch file. (Jeffrey Morlan)
  • Improve performance of TYPE; also make it interruptable by ^C. (Jeffrey Morlan, Bug #4057)
  • Speed up batch file execution by reading a line at a time instead of a byte at a time; only end line on '\n', not '\r'. (Jeffrey Morlan)
  • Fix handling of "call file.bat & somethingelse" so the right side doesn't run until after the batch file is finished. (Jeffrey Morlan)
  • Do variable expansions in arguments to CALL command, and also argument to CMD /C or /K. (Jeffrey Morlan)
  • Ignore special characters in a REM line. (Jeffrey Morlan)
  • Implement SETLOCAL and ENDLOCAL; make delayed expansion optional. (Jeffrey Morlan)
  • Fix bug where "DIR directoryname /S" wouldn't list subdirectories; got rid of extra * that appeared in DIR /B /S output. (Jeffrey Morlan)
  • Give an error message when trying to DEL a file that doesn't exist. (Víctor Martínez Calvo, Bug #4244)
  • In a pipeline ("prog1 | prog2") run all programs simultaneously. (Jeffrey Morlan)
  • In a 'Bad command or filename' error, print the name of the non-existent program, so getting the error from a batch file isn't so mysterious. (Jeffrey Morlan)
  • Implement enhanced variable substitution. (Jeffrey Morlan)
  • Fix output of various date/time stuff to be more compatible with Windows. (Jeffrey Morlan)
  • Implement ASSOC command (Lee C. Baker, Bug #4275)
  • Implement MKLINK command. (Jeffrey Morlan)
  • Implement SHIFT /n. (Jeffrey Morlan)
  • Do delayed expansion in argument to IF ERRORLEVEL. (Jeffrey Morlan)
  • Make MEMORY and FREE commands capable of showing values >= 4GB. (Jeffrey Morlan)
  • Replace hard-coded English string constants with translatable resource strings. (Jeffrey Morlan, Bug #3718)
  • When running a non-executable file, run the handler program in the same console if it's a console program; use NULL as the lpVerb to get the default action rather than assuming that it's "open"; allow passing parameters besides just the file name. (Jeffrey Morlan)
  • Make START command able to open non-executable files or directories/URLs by using ShelllExecute. (Jeffrey Morlan, Bug #4055)
  • Implement all remaining switches for the START command. (Jeffrey Morlan)
  • Implement CMD /D, /Q, /R, /A, and /U switches. (Jeffrey Morlan)
  • Make VERIFY set the errorlevel; also make it recognize when ON/OFF is followed by spaces. (Jeffrey Morlan)
  • Make ECHOSERR actually print to stderr, not stdout. (Jeffrey Morlan)
  • Make batch file echo output look nicer. (Jeffrey Morlan, Bug #4022)
  • Fix a buffer overflow in Execute; make command parsing in DoCommand/Execute more compatible with Windows. (Jeffrey Morlan)
  • Make cmd able to (sort of) work without a console. (Jeffrey Morlan)
  • Fix some incorrect lengths in ConInString; also make sure result is nul-terminated. (Jeffrey Morlan, Bug #4085)
  • Fix PAUSE so it only returns on a key being pressed, not released. (Jeffrey Morlan, Bug #4324)
  • Use correct codepage for reading batch files. (Jeffrey Morlan)
  • Check for AutoRun registry value in HKEY_CURRENT_USER was well as HKEY_LOCAL_MACHINE; allow AutoRun commands to be longer than MAX_PATH. (Jeffrey Morlan)
  • Simplify code for CD, PUSHD, and POPD commands and also fixed some bugs. (Jeffrey Morlan)
  • Various fixes to the way cmd handles errorlevel and the "return values" of commands. (Jeffrey Morlan)
  • Properly free a buffer allocated during "copy" command. Fixes cmd.exe crash when copy operation experiences a write error or is being interrupted with a Ctrl+C keypress. (Aleksey Bragin)

Doskey

Format

  • Use correct printf format so strings don't get displayed as gibberish. (Jeffrey Morlan)

Ipconfig

Notepad

SC

Solitaire

Taskmgr

  • Remove last application from task list (Matthias Kupfer)
  • Allow only one instance of Task-Manager to be run at the same time (Gabriel Ilardi,Bug 3976)
  • Use DWORD_PTR instead of DWORD for the Affiity mask. (Samuel Serapión)

Win32™ Libraries

ADVAPI32

  • Correct param values for GetServiceDisplayNameW and GetServiceKeyNameW when service name is not found. (Michael Martin)
  • Improve error checking (Johannes Anderwald)
  • Add more error checks which reduce winetest errors Johannes Anderwald)
  • Fix memory corruption and crash in ConvertStringSecurityDescriptorToSecurityDescriptorW (Gregor Schneider)

COMCAT

D3D9

GDI32

GLU32

KERNEL32

  • MultiByteToWideChar: Fill the WideCharString buffer with what will fit, to match Windows. (Michael Martin, Bug #3740)

MSAFD

  • Return WSAEMSGSIZE on both STATUS_BUFFER_TOO_SMALL / STATUS_BUFFER_OVERFLOW (Kamil Horníček)

MSVCRT

NETCFGX

NETSHELL

OLE32

OLEAUT32

RPCRT4

SETUPAPI

SHELL32

SYSSETUP

USER32

  • Default handler for WM_SYSCOLORCHANGE Messages (Matthias Kupfer)
  • Allow creation of colored cursors from resources, create monochrome cursors properly from color data (Gregor Schneider, bug #4370)
  • Use Marlett font for caption buttons, system buttons and menus. (Matthias Kupfer)
  • Allow colored cursor creation in CreateCursorFromData (Gregor Schneider)
  • Fix monochrome cursor and icon handling in CreateIcon and CreateIconIndirect (Gregor Schneider)
  • LoadBitmapImage: Add space for 3 RGBQUADs to BITMAPINFO when biCompression is BI_BITFIELDS. (Evgeniy Boltik, Timo Kreuzer, bug #3708)

Regression tests

PSEH2_Test

Rosautotest

Wcstombs-tests

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