From ReactOS Wiki
Revision as of 12:15, 4 February 2009 by Fireball (talk | contribs) (CM)
Jump to: navigation, search

This is a work in progress!!!!


Remember the format for changelogs! * Description (Developer names, bug #x)

Always write developer names in brackets

FYI, 0.3.7 was branched at r37062 / 0.3.8 was branched at r39184

This is the changelog for ReactOS™ version 0.3.8 (released whenever), 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.7 (released 4 November, 2008).


Generic 0.3.8 Changes

  • Cleaned up the PSDK/DDK header set, fixing numerous types and definitions. Remove all usage of the GCC system_header 'extension' (Stefan Ginsberg)
  • Install more Administrative Tools (Mario Kacmar, Bug 4052)
  • Set -Wno-non-virtual-dtor compiler flag globally (KJK::Hyperion)
  • Decorate C runtime functions and global variables as dllimport when necessary (KJK::Hyperion)
  • Link DLLs to NTDLL instead of MSVCRT unless absolutely necessary (KJK::Hyperion)
  • Fixed several compilation warnings (KJK::Hyperion, Bugs #3922, #3608)
  • Fixed several 64-bit portability issues in PSDK headers (KJK::Hyperion)
  • Use int instead of long in PSDK headers when compiling Wine code (KJK::Hyperion)
  • Create a separate import library ("ntsys") to import just system services from ntdll (KJK::Hyperion)
  • All modules migrated to PSEH v2. All flavors of Wine exception handling macros reimplemented with PSEH v2 (KJK::Hyperion)
  • Miscellaneous fixes in PSDK/DDK headers for Visual C++ support (KJK::Hyperion)
  • Fixes for gcc 4.3.2 support (KJK::Hyperion, Dmitry Gorbachev, Maciej Bialas, Bug #3922)
  • Fixed _bittestandcomplement, _bittestandreset, and _bittestandset intrinsics (Dmitry Gorbachev, Bug #3921)
  • Updated wined3d, d3d8 and d3d9 to Wine 1.1.12 (Kamil Hornicek)
  • Updated Mesa3D to version 7.3 (Kamil Hornicek)
  • Fix x64 definition of __readmsr() (Timo Kreuzer)
  • Fix FIELD_OFFSET macro (Timo Kreuzer)
  • Add EncodePointer, DecodePointer, EncodeSystemPointer and DecodeSystemPointer to winbase.h (Timo Kreuzer)
  • Add WM_MENUDRAG, WM_MENUGETOBJECT, WM_UNICHAR to winuser.h (Timo Kreuzer)
  • winddk.h: More correct MmGetSystemAddressForMdlSafe macro (Stefan Ginsberg)
  • winddi.h: Fix FLOATOBJ macros for x64 that were using "1" instead of "l" as parameter (Samuel Serapión)
  • winddk.h: Fix and update CM_PARTIAL_RESOURCE_DESCRIPTOR (Timo Kreuzer)
  • Move KeGetPcr from NDK to winddk.h (Timo Kreuzer)
  • Move KeAcquireSpinlockRaiseToSynch from ndk to ntifs.h (Timo Kreuzer)
  • Add KeTryToAcquireQueuedSpinLock to ntifs.h (Timo Kreuzer)
  • Fix Spinlock function prototypes in winddk.h (Timo Kreuzer)
  • New default wallpaper by Forum user "Angelus"
  • Many IDL files fixes spotted by a newer WIDL (Aleksey Bragin)


  • Added/Updated Slovak translations (Mario Kacmar, Bugs #3834, #3866, #3890, #3934, #3955, #3983, #4005, #4035, #4071)
  • Added/Updated Czech translations (Radek Liska, Bugs #4014, #4033, #4105)
  • Added/Updated Spanish translations (Javier Remacha, Bugs #3830, #4047)
  • Added/Updated Ukrainian translations (Artem Reznikov, Bugs #3833, #3852)
  • Added/Updated Italian translations (Paolo Devoti, Bugs #3839, #4061)
  • Added/Updated Korean translations (Seungju Kim, Bugs #3851, #3915)
  • Added/Updated Polish translations (Maciej Bialas, Bug #3871)
  • Added/Updated Greek translations (Apostolos Alexiadis, Bugs #3881, #4030, #4063, #4088)
  • Added/Updated Norwegian translations (Lars Martin Hambro, Bugs #3942, #4037)
  • Added/Updated German translation of Hardware Wizard, System Setup DLL (Daniel Reimer)
  • Added Armenian translation of Notepad (Andranik Haroyan)
  • Added Thai translation of Calculator (Sumath Aowsakulsutthi)
  • Updated Italian translation of Calculator (Carlo Bramix, Bug #4078)

Host Tools

  • Fix compiler warnings treated as errors when using GCC 4.3.2 (Dmitry Gorbachev, bug #3849)
  • Rearrange "host/typedefs.h" to make it look more logical, fix a wrong definition of INT_PTR and UINT_PTR in this file (Colin Finck)


  • Don't decide whether to preprocess .spec files based on Kernel-Mode vs. User-Mode, but on the file extension. Preprocessed files use the .pspec extension now (Colin Finck, KJK::Hyperion)
  • Removed some checks for uppercased file extensions (Colin Finck)
  • Reenable testing on undefined properties, they are treated as being empty now (Colin Finck)
  • Parallel build fixes related to .spec/.pspec and the generation of .exp object files (KJK::Hyperion)
  • Automatically choose a C runtime library for each module and provide a standard way to override the default (KJK::Hyperion)
  • Force each module to choose between a statically linked or a dynamically linked C runtime library, for future compatibility with Visual C++ (KJK::Hyperion)
  • Create a separate import library ("ntsys") to import just system services from ntdll (KJK::Hyperion)
  • Echo "[CPP]" for invocations of the C preprocessor (KJK::Hyperion)
  • Fixed setting project-global compiler flags (KJK::Hyperion)
  • New project-global attribute allowwarnings, to fail on compilation warnings for either all modules or no modules (KJK::Hyperion)
  • Refactored makefile rules to be more maintainable (KJK::Hyperion)
  • Makefile rules extracted from hard-coded strings in rbuild code to an include .mak file, to be more maintainable (KJK::Hyperion)
  • Reimplemented pre-rbuild feature of full dependencies, for faster, minimal, comprehensive incremental builds at the price of slower full builds (KJK::Hyperion)
  • Correctly support C++ precompiled headers (KJK::Hyperion)
  • Echo "[HOST-CC]", "[HOST-LD]" and "[HOST-AR]" for host build tools to distinguish them from target tools (KJK::Hyperion)
  • Fix msvc project generation for kernel mode drivers without a driver entry (Johannes Anderwald)
  • Let rbuild throw an exception when an implicit module dependency (like mingw lib) cannot be resolved instead of silently failing (Timo Kreuzer)


  • Don't overrun a heap block when there are discarded relocations (KJK::Hyperion)



Bootloader (FreeLoader)

Kernel and Executive (NTOSKRNL)

  • Fixed SMP build compilation and enable it by default. It does not boot due to massive lack of SMP support in critical areas (Stefan Ginsberg)
  • Retrieve the count of handles for a process without the occasional crash or race condition (KJK::Hyperion, Bug #4050)
  • Rename section "init" to "INIT", so that pefixup will actually recognize it. (Timo Kreuzer)



  • Fix various bugs and some missing handling of failure cases in the DBGK implementation. This makes Ollydbg able to attach, detach, suspend and resume processes under debug without causing weird kernel crashes (Stefan Ginsberg)


  • Fixed implementation of PsCreateProcessNotifyRoutine (Michael Martin)
  • Fixed dereferencing of wrong object in NtCreateProfile, pProcess not Process. (Michael Martin)
  • Fix an array overrun in NtQuerySystemInformation and NtSetSystemInformation (KJK::Hyperion, CID 527 and CID 528)
  • Remove hack around VFATFS and CDFS bugs which were fixed in r37393 (Aleksey Bragin)
  • Fix NtAddAtom/NtFindAtom logic when dealing with NULL or kernel Atom names (Alex Ionescu)
  • Use KeQueryRuntimeProcess for obtaining idle process times, and per-process information in QuerySystemInformation routines (Aleksey Bragin)
  • Fix incorrect multiplier being applied to user/kernel times (should be KeMaximumIncrement instead of 100000) (Aleksey Bragin)
  • Slightly rework SystemProcessorPerformanceInformation to provide valid data (Aleksey Bragin)



  • NtWrite/ReadFile: Fix a bug where RequestorMode would always be set to KernelMode, which would cause user-mode APCs to be called directly from kernel (Stefan Ginsberg)
  • IopCheckVpbMounted: Fix a bug where NT_SUCCESS was used on a pointer to NTSTATUS value instead of the status value itself (Timo Kreuzer)
  • Use ExInitializeSystemLookasideList instead of ExInitializeNPagedLookasideList for the internal I/O lookaside lists (just as it was done for the Ob lists a couple of months ago) (Aleksey Bragin)
  • Optimize lookaside allocation by using one large contiguous buffer instead of fragmented buffers for each CPU (Aleksey Bragin)
  • Use NT structure names instead of ReactOS-only structures (Aleksey Bragin)
  • Fixes some memory corruption issues when doing I/O completion (found by Stefan Ginsberg and winetests) (Aleksey Bragin)
  • Do not use "with tag" when freeing the system buffer, because drivers are allowed to re-allocate their own buffer, which may have a different tag (Aleksey Bragin)
  • Fix failure cases in EnumerateRootDevices which might've freed non-allocated memory (Alex Ionescu)
  • Implement IoGetRemainingStackSize (Aleksey Bragin)


  • Add some code to complete breakpoint of gdbstub (Cary Xiao)


  • Fix KDBGs usage of PsLookupThread/ProcessByThread/ProcessId, which leaked references every time we attached to a process/thread (Stefan Ginsberg)
  • Remove useless circle definition _setjmp -> setjmp -> _setjmp (Timo Kreuzer)



  • Implement VirtualMemoryInformationClass of MemorySectionName for NtQueryVirtualMemory. (Michael Martin)
  • Use volatile with PagesLocked and MdlAddress in MiDoMappedCopy, to prevent bugcheck when code in SEH failed. (Michael Martin, Bug #3674)
  • MmMapViewOfSection: Fix a missing unlock of the kernel address space in some failure cases (Stefan Ginsberg)
  • Fix page protection flag checks in NtAllocateVirtualMemory and MmMapViewOfSection (Timo Kreuzer)



  • Fix a potential case of non-paged pool memory double freeing spotted by Michael Martin (Aleksey Bragin)


Hardware Abstraction Layer (HAL)

  • Fix broken implementation of KdComPortInUse (Stefan Ginsberg)
  • Fixed HAL DMA problem that caused floppy driver not to work (the point was that function had to copy the read sector back to the MDL buffer and it was not doing that because of the problem with braces, broken in rev is 24464) (Juan Sánchez Jurado, bug #2287)

Run Time Library (RTL)

Kernel Mode Drivers



  • When querying file name information, fill in the whole buffer provided by the caller, even if filename does not fully fit (driver by Microsoft(R) does the same). Also, return the actual amount of data written in IoSb.Information, even in case of buffer overflow result (Aleksey Bragin)
  • Upcase a search expression when calling RtlIsNameInExpression with case-insensitive option (Pierre Schweitzer)


  • When allocating a cluster, decrement the AvailableClusters count to keep reported free space consistent (Jeffrey Morlan)
  • Fixed bug where extending the size of an already non-empty file would crash if disk space runs out; also optimized that code so it doesn't always have to traverse the entire file (Jeffrey Morlan)
  • When querying file name information, fill in the whole buffer provided by the caller, even if filename does not fully fit (driver by Microsoft(R) does the same). Also, return the actual amount of data written in IoSb.Information, even in case of buffer overflow result (Aleksey Bragin)
  • Target device to mount may not have VPB, the driver should get the VPB passed in parameters (Aleksey Bragin)
  • Set target device's VPB to this value. This should not really be done, however our driver heavily depends on target device having this VPB. I don't see any side effects. With these changes, Windows 2003 is able to boot up to desktop and cleanly shutdown using this driver (Aleksey Bragin)
  • Always uninit cache for a file object (Aleksey Bragin)


  • UDF recognizer fixed so it doesn't perform partial sector reads. When trying to detect filesystem for a floppy without 0xaa55 signature UDF recognizer is called and it performed wrong partial sectors read because of a confusion between sectors and offset in bytes (Juan Sánchez Jurado, bug 2287)


  • Implement KsCreateAllocator, KsRegisterWorker, KsUnregisterWorker, KsRegisterCountedWorker, KsDecrementCountedWorker, KsIncrementCountedWorker, KsQueueWorkItem (Johannes Anderwald)
  • Implement KsCreateDevice, KsAddDevice, KsInitializeDriver (Johannes Anderwald)
  • Add KsDefaultForwardIrp stub (Johannes Anderwald)


  • Re-implemented read/write for message type mode. (Michael Martin)
  • Fixed bug in NpfsRead that was causing thread to not wake from wait. (Michael Martin)
  • Fixed problems with not being able to terminate threads that used pipe functions. (Michael Martin)
  • Modified NpfsSetPipeInformation to not allow changing read mode to message mode for byte stream type pipes. (Michael Martin)
  • Modified NpfsCreatePipe so that clients for NamedPipes always start off in byte stream mode. (Michael Martin)
  • Implemented NpfsPeekPipe. (Michael Martin)


  • Implement PcGetDeviceProperty, PcGetTimeInterval, PcNewResourceSublist, PcRegisterIoTimeout, PcUnregisterIoTimeout, PcNewServiceGroup, PcRegisterSubdevice, PcRegisterAdapterPowerManagement, PcNewDmaChannel, PcForwardIrpSynchronous, PcNewPort, PcDmaMasterDescription, PcDmaSlaveDescription, PcRegisterPhysicalConnection, PcRegisterPhysicalConnectionFromExternal, PcRegisterPhysicalConnectionToExternal, PcRequestNewPowerState (Johannes Anderwald)
  • Implement PcNewRegistryKey for DeviceRegistryKey, DriverRegistryKey, HwProfileRegistryKey (Johannes Anderwald)
  • Implement portcls port drivers such as IPortWavePci, IPortWaveCyclic, IPortTopology and IPortMidi (Johannes Anderwald)
  • Implement portcls helper object such as IServiceGroup, IRegistryKey, IInterruptSync, IDmaChannel, IDmaChannelSlave (Johannes Anderwald)
  • Implement IPortClsVersion interface and make all port drivers use them (Johannes Anderwald)
  • Implement IDrmPort, IDrmPort2 interface and make all port drivers use them (Johannes Anderwald)
  • Partly implement PcCreateSubdeviceDescriptor (Johannes Anderwald)
  • Implement ISubdevice interface for IPortTopology, IPortWaveCyclic, IPortWavePci (Johannes Anderwald)
  • Add IIrpTarget, IKsWorkSink, IKsShellTransport, IIrpStream, IIrpStreamVirtual IIrpStreamPhysical, IPortFilterWaveCyclic, IPortPinWaveCyclic interface (Johannes Anderwald)
  • Use FILE_DEVICE_KS when creating new device object (Johannes Anderwald)
  • Pass correct flags when creating the fdo (Johannes Anderwald)
  • If there is no interrupt yet connected, call the synchronized routine holding the internal spinlock (Johannes Anderwald)
  • Don't disconnect the interrupt on cleanup, IInterruptSync_Disconnect exist for that purpose (Johannes Anderwald)
  • Move all calls to ExAllocatePoolWithTag to a function AllocateItem which is also responsible for zeroing memory (Johannes Anderwald)
  • Store PhysicalDeviceObject in device extension (Johannes Anderwald)
  • Check for valid DeviceExtensionSize (Johannes Anderwald)
  • Set DO_DIRECT_IO flag (Johannes Anderwald)
  • Clear DO_DEVICE_INITIALIZING flag (Johannes Anderwald)
  • Initialize the dpc for calling Miniport object, as it might create an interrupt object which immediately fires an interrupt (Johannes Anderwald)
  • If the caller doesnt provide an IAdapterPowerManagement interface, clear the existing reference (Johannes Anderwald)
  • Pass the pdo to IoOpenDeviceRegistryKey (Johannes Anderwald)
  • Move all guids and IIDs to own file and initialize them (Johannes Anderwald)
  • Store DeviceObject before calling IMiniportWaveCyclic, IMiniportTopology, IMiniportMidi as the driver might immediately call port functions (Johannes Anderwald)
  • Pass the PhysicalDeviceObject to IoGetDmaAdapter (Johannes Anderwald)
  • Handle IRP_MN_QUERY_INTERFACE (Johannes Anderwald)
  • Implement IPortEvents interface to IPortWavePci (Johannes Anderwald)
  • Register all device interfaces identified in the subdevice descriptor (Johannes Anderwald)
  • Create a subdevice descriptor for IPortWavePci, IPortWaveCyclic and IPortTopology and handle the respective ISubDevice::GetDescriptor (Johannes Anderwald)
  • Always request PCFILTER_DESCRIPTOR regardless of presence IPinCount interface (Johannes Anderwald)
  • Check if IMiniportWavePci omits a IServiceGroup (Johannes Anderwald)
  • no DriverEntry in here -> entrypoint="0" (Christoph von Wittich)
  • Fix parameter for KeWaitForSingleObject (Christoph von Wittich)
  • Rename device context struct (Christoph von Wittich)


  • Implement ScsiPortCompleteRequest based on OSR description (Aleksey Bragin, bug #3025)




  • Add missing assignments to all CallingProcess variables in int10.c. (Michael Martin, Bug #2286)
  • Fixed memory corruption in VideoPortInt10 implementation. (Michael Martin, Bug #2286)
  • Fixed bug in VideoPortGetAccessRanges, causing the device to not be found on the bus. (Michael Martin, Bug #2286)

NT System Library (NTDLL)

Static Libraries




  • Reimplemented as PSEH v2. Now allows a much more readable syntax that's almost completely compatible with native SEH constructs. Also handles exceptions thrown during unwinding in a way that's compatible with native SEH (KJK::Hyperion)

Keyboard Layouts

  • Add Czech QWERTZ keyboard layout (Radek Liska, bug #4031)


Win32™ Personality

User mode subsystem server (CSRSS)

Kernel-mode subsystem server (Win32K)

  • Fix TransparentBlt in 24bpp mode (Gregor Schneider, bug #1583)
  • Fix StretchBlt offset calculation in 8bpp and 16bpp (Gregor Schneider)
  • Fix BitBlt MergePaint operation (Gregor Schneider)
  • Fix hatched brush color conversion (Gregor Schneider)
  • Fix BitBlt coordinate calculation for 1 bit masks (Gregor Schneider, bug #2372)
  • Add several PS_NULL, PS_INSIDEFRAME and PS_ALTERNATE brush improvements (Gregor Schneider)
  • Fix DrawIcon and DrawIconEx in 32bpp mode (Gregor Schneider)
  • Fix returning correct previous windows procedure for SetWindowLong. (Michael Martin, James Tabor)
  • Create CallProc for edit controls to match windows behavior. (Michael Martin, James Tabor)
  • Store settings of SPI_SETMOUSEBUTTONSWAP in registry (Johannes Anderwald)
  • Add key modifiers MK_CONTROL and MK_SHIFT to all mouse events (Matthias Kupfer, bug #3557)
  • Rename BITMAPOBJ to SURFACE as it's called on windows (Timo Kreuzer)
  • Fix creation of xlate object for mono dib sections (Timo Kreuzer)
  • Use the bitmap's palette, not the DC one's in NtGdiGetDIBitsInternal (Timo Kreuzer, bug #3854)
  • Flush the gdi batch in NtGdiDeletObjectApp, so all pending operations are done, before the dc is deleted (Timo Kreuzer)
  • Make NtGdiExtTextOutW call the internal function GreExtTextOut and use that from within win32k (Timo Kreuzer)
  • Fix usermode pointer protection in NtGdiExtTextOutW using SEH instead of MmCopyFromCaller (Timo Kreuzer)
  • Only use one pool allocation for usermode buffer in NtGdiExtTextOutW, try a stack buffer first (Timo Kreuzer)
  • Handle Dy values in NtGdiExtTextOutW when ETO_PDY is specified (Alexander Potashev, bug #3958)
  • Probe the usermode buffer instead of the safe buffer in NtGdiGetFontUnicodeRanges (Timo Kreuzer)



  • Fixed bug that caused failure to assign ip address if address was received from server. (Michael Martin, Bug #3962)
  • Fix length check (Johannes Anderwald)


  • Set the APPDATA environment variable when logging in (Colin Finck)

Control panel applets


  • Check for a null pointer when creating a link to a directory or a file without extension (Kamil Hornicek, Bug #3959)



Win32™ Applications


  • Add Slovak koruna to Calculator (Mario Kacmar, bug #3867)
  • Add categories Angle and Time and Czech koruna to Calculator (Radek Liska, bug #4064)

Command Prompt

  • Fix parsing of batch files lacking '\n' character on the last line (Jeffrey Morlan)
  • Fix bug where DIR /D wouldn't always show all files (Jeffrey Morlan)
  • Implement proper support for multi-line IF blocks, IF /I option, IF CMDEXTVERSION, and generic comparisons (EQU etc); fix IF ERRORLEVEL to do >= check rather than == (Jeffrey Morlan)
  • Give an error message when trying to MKDIR a directory that already exists; add support for making multiple directories with one MKDIR command (Jeffrey Morlan, bug #3961)
  • Allow the DIR command to be interrupted via Ctrl-C even while in the middle of a directory. (Jeffrey Morlan, bug #3967)
  • Allow MOVE's arguments to contain slashes (Víctor Martínez Calvo, bug #4013)
  • For MOVE command: only check for options at the beginning of the command line; give an error message if too many parameters are given; if no destination is given, default to current directory; fix crash that occurred with certain source filenames; fix memory leaks (Jeffrey Morlan)
  • Add support for removing multiple directories with one RMDIR command (Jeffrey Morlan)
  • Fixed REN command (Víctor Martínez Calvo, bug #3902)



  • Fix the display of Line and Column in the Status Bar and add language resources for this (Carlo Bramini, bug #3702)



  • Fix winning infinitely bug by dealing cards again (Lucas Suggs, bug #3288)
  • Fix status bar overlay problems (Gregor Schneider, bug #3336, bug #3820)


  • Fix Switch-To Button, enable only if one selected application (Mario Kacmar, bug #4028)

Win32™ Libraries


  • Fix potential accesses to uninitialized variables detected by Visual C++ (KJK::Hyperion)
  • Fix return value of GetTraceLoggerHandle (Dmitry Gorbachev, Bug #3827)



  • Implemented the following functions (Gregor Gullwi)
    • IDirect3DDevice9::CreateAdditionalSwapChain()
    • IDirect3DDevice9::GetGammaRamp()
    • IDirect3DDevice9::GetRasterStatus()
    • IDirect3DDevice9::GetBackBuffer()
    • IDirect3DDevice9::Present()
    • IDirect3DDevice9::GetFrontBufferData()


  • Zero the last character in lfFaceName when converting a LOGFONT from A to W or vice versa (Timo Kreuzer)



  • Reimplemented BuildCommDCB and BuildCommDCBAndTimeouts. New implementation passes the Wine regression tests (KJK::Hyperion)
  • Thanks to PSEH v2, OutputDebugString now correctly sends the output to the user-mode debugger, if one is attached (KJK::Hyperion)


  • Add parameter checks to strftime (Daniel Zimmermann, bug #3910)
  • Add support for floating point operations in sprintf (Gregor Schneider, bug #1533, bug #3727, bug #3878)
  • Update and fix undname, makepath, locale and several mbstring functions for increased compatibility (Gregor Schneider)


  • Dont display NCRP_QUERY_PROPERTY_UI when the notification object has already been created (Johannes Anderwald)








  • Choose the correct version of DEVMODE in EnumDisplaySettingsExA (Kamil Hornicek)
  • Add inline wrapper functions for kernel forwarded exports and use them inside user32 (Timo Kreuzer)

Regression tests



  • Wrote a new tool for running automatic regression tests, superseding our previous syssetup/cmd/dbgprint hack (Colin Finck)


  • Add some tests for WC_NO_BEST_FIT_CHARS, which pass under Windows XP SP3 (Colin Finck)
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