Hello ReactOS followers! This report covers changes in the project during February-July 2021. And we definitely have some things to highlight! amd64 build is getting more stable Timo Kreuzer (tkreuzer) worked hard on various parts of the kernel and HAL, fixing issues here and there. Structured Exception Handling (SEH) support for the amd64 architecture was finished, various bugs around the kernel are fixed. A major issue with interrupt handling in HAL was also fixed in May, which finally allowed a semi-stable boot in a virtual environment.
Hello ReactOS followers! This is an attempt to re-instate the Newsletter, which informed you about recent developments. The previous Newsletter 99 was in 2013! This month we were mostly focused on the kernel work, merging pull requests and fixing regressions. Memory manager and Common cache work Being in development for almost six month, this work by Jérôme Gardou finally landed in the master branch. This change refactors many aspects of the Section Objects feature in NT-compatible kernel, making it more compatible with Windows.
ShellSince the last newsletter Giannis Adamopoulos has completed his development contract and while a more formal report will be published later, a brief summary follows. The fruits of his labor are already visible in that explorer_new can actually start in ReactOS and allow a user to browse the directories. Much of this was achieved by completing work Andrew Hill started. Giannis also spent considerable amounts of time trying to understand how the various menus in the shell worked.
Explorer Shell A while back the project announced a development contract for Giannis Adamopoulos to work on getting the necessary supports for running explorer-new to run on ReactOS. Since then, Giannis has been very busy and has made considerable progress. Much of his work has been properly separating responsibilities in the various components so that there are clear delineations of who does what. There are two major accomplishments, both fairly wide in scope.
C++ One of the last big missing pieces of building ReactOS using Visual Studio was support for C++. In ReactOS, the biggest piece of C++ code is explorer, without which users have no graphical shell when ReactOS boots up. Support for C++ requires not just a compiler capable of building C++ code, but also the presence of the standard template library. For developers where C++ was their first language, usage of the STL is fairly common and it is almost guaranteed to be linked in by default regardless of whether it is used or not.
Testing and Debugging The hardest thing about writing software is finding the source of bugs. Good testers are as such extremely valuable, and those able to use debuggers well even more so. Two issues were recently dealt with thanks to one such tester, Olaf Siejka. The first issue involved Microsoft Excel Viewer, an application that as its name suggests allows for viewing of spreadsheets but not editing. Word Viewer actually worked in ReactOS, and Excel Viewer's failure drew Olaf's attention.
OpenGL The ReactOS project has relied on the Mesa Project for OpenGL 3D graphics for a long time, but unfortunately the code needed by ReactOS is no longer maintained by Mesa. Actual rendering involves a chain of components, one of which is the called the installable client driver. The ICD is for the most part bundled with the graphics card driver, though it can also be a driver that performs rendering completely in software.
Site Migration The project recently migrated from its old site to one using the Drupal content management system. Work on this migration had been going on in some form for the last year, with a major milestone being the migration from Bugzilla to JIRA. The migration of the site proper however was nowhere as smooth as many people, including myself, desired. One of the root causes for the bumpy migration was my fault actually, when I sent an email claiming that the site's content was at a state where it should not be a blocker to migration.
Desktops and Windows In the Windows operating system, the desktop one sees is made up of three things, a kernel mode desktop object, a user mode desktop window, and a desktop thread. While the desktop object can be considered almost mundane, the window and thread are somewhat special. In Windows, desktop windows are created differently from regular windows and all share a single desktop thread. This thread handles messages sent to the desktop window, though users will generally only see the desktop window if the explorer shell is not running.
Win32 Improvements Deep within GDI is code designed to carry out a series of raster operations that involve applying patterns to bitmaps. For performance reasons, it is desirable to have optimized versions of this code for the various bit depths. Formally, ReactOS only generated these optimized versions for the few ternary raster operations that were used often enough to be given a common name by Microsoft. The rest were handled in a single unoptimized version.