12 Commits
Author SHA1 Message Date
mirkobrombin 3514eda6d8 chore: merge pull request #80 from rayzorben/feat/private-assemblies 2026-10-30 06:33:00 +00:00
Raymond Bennett 765170acbb feat: find private side-by-side assemblies, also for a library's own manifest at start
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)
2026-10-29 02:26:36 -07:00
Raymond Bennett 10515aecda feat: load a program's own copy of a non-core system library
On Windows only the KnownDLLs are protected from a copy in the program's
folder; graphics wrappers, overlays and plugin loaders ship their own
winmm.dll, version.dll, dinput8.dll, d3d9.dll or dxgi.dll there and
forward to the system copy. Raven served every system library itself.

A short core list (ntdll, kernel32, kernelbase, user32, gdi32, comctl32,
advapi32, msvcrt, ucrtbase, ole32, oleaut32, combase, rpcrt4, shell32,
shlwapi, setupapi, comdlg32) is still always Raven's. For any other
system library a copy beside the program loads, and Raven's own
implementation stays reachable under its System32 or SysWOW64 path and
through LOAD_LIBRARY_SEARCH_SYSTEM32. Copies an installer leaves in the
prefix's system directory are still ignored. The x86 path shares the
program-folder scan, which replaces the d3d9.dll special case.

Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: Wrote the loader, provider and dependency changes and the new
 dependencies_test case, after a program's own winmm.dll was found to be
 replaced by Raven's. Prompt: find what stops the program's own DLL
 from loading and fix it in Raven.
2026-10-28 14:13:17 -04:00
mirkobrombin 1fc462a544 fix: preserve handles and security tokens across processes 2026-10-25 08:52:34 +01:00
mirkobrombin 14d44fb628 feat: add a native OpenGL bridge 2026-10-25 01:39:15 +02:00
mirkobrombin 0a0fe4be89 feat: add shared Windows process state and parallel guest execution 2026-10-24 16:24:23 +00:00
Mirko Brombin ea32d26a36 feat: load .NET images, mixed and nested libraries, and unload a library whose DllMain refuses 2026-09-23 00:12:49 +00:00
Mirko Brombin 966069f911 feat: run Steam to its web helper with real sockets, TLS chains, child environments and image protection 2026-09-03 02:50:56 +02:00
Mirko Brombin f5cd92f4c8 feat: give 32-bit programs the registry, shell folder, INI write, token and file services an installer needs 2026-09-02 23:23:20 +02:00
Mirko Brombin 39ef22a7a4 feat: load static dependencies of 32-bit programs and run Direct3D 11 through the 32-bit DXVK 2026-08-02 10:05:42 +02:00
Mirko Brombin 7cbba82228 feat: resolve C runtime contracts for dependency DLLs and grow the C runtime for DXVK 2026-08-01 09:39:19 +02:00
Mirko Brombin 154272073d feat: preserve native C++ migration 2026-07-31 16:46:25 +02:00