Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: Switched provisioning and packaging to the own components, removed the replaced ReactOS sources and the xmllite patch that no longer applied.
The shell component holds the Windows Runtime's activation (RoInitialize,
RoGetActivationFactory and friends), which combase and runtimeobject
forward to once it is loaded. It was loaded only for programs importing
COM, the shell or user32, so a program that imports just combase,
runtimeobject or the api-ms-win-core-winrt API sets got the placeholder
that registers no class, and activated nothing.
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the loading condition, its comment and the winrt_import_client test
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: Wrote regsvr32 as a new command-line tool from its public description, with tests for its documented exit codes.
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: Wrote rundll32 as a new command-line tool from its public description, listed it for prefixes and packages, and added tests.
Ruby ships the libraries its runtime library imports (libgmp-10.dll and
libwinpthread-1.dll) as a private assembly, ruby_builtin_dlls, in a folder of
that name beside the program, and names it in the runtime library's own
manifest (resource 2). Raven looked for assemblies only in the side-by-side
store and applied a library's own manifest only to libraries loaded later,
so the program could not start. An assembly without a public key token is
now looked for as Windows looks for a private assembly: <name>.manifest in
the program's folder, then <name>\<name>.manifest, with its files beside the
manifest. The libraries a program starts with resolve their imports through
their own manifest first, as later loads already did, and a library found
that way keeps its file for GetModuleFileName. Ruby gets past its libraries
and then stops on its own check of the C runtime (see the session report).
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: private assembly lookup and the start-up use of library manifests
(cherry picked from commit 03b2f65f8289b394126f58e94f8b4126f35d57d6)
The standard search order for a library ends with the current directory and
the folders of the PATH variable; Raven stopped at the system folders, so a
program built with llvm-mingw's clang++ could not find libc++.dll on PATH,
and LoadLibrary never found a library there either.
The libraries a program imports are now also looked for in the directory it
starts in and the folders of its PATH (from the environment it was given, or
RAVEN_GUEST_PATH for a program started from the host), and LoadLibrary's
search ends with the PATH the program has at the time.
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the search step and the PATH helpers
(cherry picked from commit 1865571d0ccd6e36ace096193e9a7bf71de48161)
Windows always has d3d12.dll, so a program that links it starts even when it
never draws; qsv does. The loader looked for the DXVK libraries only. It now
finds d3d12.dll and d3d12core.dll in the same places, and
RAVEN_D3D_DIRECTORY may name several directories separated by colons, such
as a DXVK build and a vkd3d-proton build.
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the loader rule
(cherry picked from commit 37bbabe709cd5bcb39812005fcdf125e1664e1c0)
The first start of a prefix printed "Native process exited with status 0" once for each registration.
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: Sent the setup runs' standard output to /dev/null.
find, findstr, more, sort, where, xcopy, attrib, timeout, choice, whoami, hostname, tasklist, taskkill and reg, one program
each for both widths, copied into System32 and SysWOW64.
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: Wrote the fourteen tools and their shared runtime from Microsoft's public command reference, and the batch-file test.
A console program started from a terminal gets it as its console without --stdio=inherit. CreateProcess runs .bat and .cmd
files through cmd /c, as Windows does. The console code pages start as UTF-8, since Raven has no table for code page 437.
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: Wrote the subsystem check, the batch-file launch, a first command processor from Microsoft's public cmd documentation and its test.
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: Wrote the AccPropServices component, the global stream and CoInitializeSecurity handlers and their tests from the public headers and documentation.
Refs #10
Assisted-by: Claude Code:claude-opus-5.5
AI-Scope: wrote the XCB presentation, Vulkan and EGL surface support, the --desktop=x11 option and the Xvfb tests from the issue #10 plan