60 Commits
Author SHA1 Message Date
mirkobrombin dc1f9c1c85 feat: answer what an updater bootstrapper asks of the system
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: registry, security, shell and system answers an updater bootstrapper needs, with its test client
2026-11-03 15:48:46 +00:00
mirkobrombin a5cd79e2a6 feat: report one processor group to the group affinity calls 2026-11-03 08:21:37 +00:00
mirkobrombin f38ae11815 fix: keep thread slot values per thread id, not per thread block 2026-11-03 04:10:44 +00:00
mirkobrombin 52c35cea9c fix: let the .NET Framework 4.8 setup run its install
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: version layer for its setup, expanded service paths, seeded services, 64-bit packages in the native engine, dism KB4019990, missing shell and event log calls
2026-11-02 18:53:06 +00:00
mirkobrombin 56c6300553 feat: add the app container and shell calls Office asks for
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: host API additions for app containers, shell, text and script calls
2026-11-01 23:26:26 +00:00
mirkobrombin 3cd4ca605c feat: list installed licenses and keep the error mode 2026-10-31 21:21:22 +00:00
mirkobrombin 77467a43fc chore: merge pull request #94 from rayzorben/feat/package-names-by-process 2026-10-31 08:15:51 +00:00
mirkobrombin d582652232 fix: fill the host gaps the guest components hit
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: Added missing window, GDI, memory, text and multibyte behavior in the host that the own guest components need.
2026-10-31 06:18:52 +00:00
Raymond Bennett 5017646037 feat: answer the package-name queries for a process handle
GetPackageFullName, GetPackageFamilyName and GetApplicationUserModelId
ask about a process by its handle; winget asks them about itself before
it decides where its data lives. No process in a prefix has package
identity, so they answer APPMODEL_ERROR_NO_PACKAGE with a length of
zero, as the GetCurrentPackage* forms already did.

Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the handlers and the package_identity_client test
2026-10-30 08:17:33 -07:00
mirkobrombin 8e6eb23925 chore: merge pull request #73 from rayzorben/feat/ntdll-kernel32-forms 2026-10-30 06:32:59 +00:00
mirkobrombin 2176659ce8 chore: merge pull request #67 from rayzorben/fix/tls-slot-zero 2026-10-30 06:32:59 +00:00
mirkobrombin e28ec6d6d4 chore: merge pull request #61 from rayzorben/feat/dll-search-path 2026-10-30 06:32:59 +00:00
mirkobrombin fd348d33d2 chore: merge pull request #49 from rayzorben/feat/time-zone-transitions 2026-10-30 06:32:58 +00:00
mirkobrombin b3f39235ea chore: merge pull request #44 from rayzorben/feat/dotnet-host-functions 2026-10-30 06:32:58 +00:00
mirkobrombin da35d9f548 chore: merge pull request #43 from rayzorben/fix/module-handle-by-path 2026-10-30 06:32:58 +00:00
mirkobrombin 90c9ca4a7b chore: merge pull request #40 from rayzorben/feat/ntdll-string-functions 2026-10-30 06:32:58 +00:00
mirkobrombin 7c0fa7610e chore: merge pull request #39 from rayzorben/fix/remove-unset-environment-variable 2026-10-30 06:32:58 +00:00
mirkobrombin ffb2e75959 chore: merge pull request #38 from rayzorben/feat/current-processor-number 2026-10-30 06:32:58 +00:00
mirkobrombin bf43c24725 feat: keep the licenses programs install in the protection store
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: Wrote the protection store license install and query functions and the system client test.
2026-10-29 18:34:55 +00:00
Raymond Bennett eddfb6a619 feat: answer the ntdll forms of kernel32 functions programs call directly
Programs built without kernel32 imports, Zig's among them, call ntdll's
RtlUpcaseUnicodeChar, RtlQueryPerformanceCounter and
RtlQueryPerformanceFrequency, RtlAddVectoredExceptionHandler and its
relatives, and leave through RtlExitUserProcess. Each is the function
kernel32 has (CharUpper of one character, QueryPerformanceCounter and
QueryPerformanceFrequency, AddVectoredExceptionHandler and the others,
ExitProcess) and now runs the same handler.

Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the added names
(cherry picked from commit 6b9a401a7364d6aa1a360ee6217ef53bb3aa9456)
2026-10-29 01:30:24 -07:00
Raymond Bennett 8889a53de8 fix: keep TLS slot 0 out of what TlsAlloc hands a program
In a Windows process the system libraries have taken TLS slot 0 before the
program runs, so a program's first TlsAlloc never returns 0. Older Rust
standard libraries use 0 for "no key yet" and stop with "assertion failed:
key != 0" when TlsAlloc gives it, as htmlq 0.4 did. Slot 0 is now taken at
start, for 64-bit and 32-bit programs.

Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the change
(cherry picked from commit dd2a8667c2b72bb6ff97d3fbe627759cb8f18baa)
2026-10-28 23:44:22 -07:00
Raymond Bennett 28199707a9 feat: search the current directory and PATH for libraries
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)
2026-10-28 23:19:08 -07:00
Raymond Bennett 145f22a212 feat: add LocateXStateFeature
The .NET runtime asks where a CONTEXT keeps an extended state feature. Of the
two features GetEnabledXStateFeatures reports, the legacy floating-point state
is the FXSAVE area and the SSE state its XMM registers; no other feature is in
a context, so it answers none.

Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the handler
(cherry picked from commit 3fff212f6dd9d9248d0132bf0d09618acaa8f408)
2026-10-28 23:16:38 -07:00
Raymond Bennett e27281eb2f feat: report daylight saving transitions and add GetTimeZoneInformationForYear
GetTimeZoneInformation gave the bias and the names but no transition dates,
so a program saw no change between standard and daylight time. eza -l, dust
and Nushell's ls stopped on GetTimeZoneInformationForYear.

The year's transitions are now found from the host zone's offsets and given
as the recurring rule Windows uses (the nth weekday of the month, 5 for the
last, at the local time on the clock being left). Checked under Raven against
America/New_York (second Sunday of March, first Sunday of November, 02:00)
and Australia/Sydney (first Sunday of October 02:00, first Sunday of April
03:00). GetTimeZoneInformationForYear answers the same for any year, for the
current zone or one given with the same key name.

Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the transition search and the handler
(cherry picked from commit 1aa9ad0b24f55dde119eded7b6f7e990b8561fd7)
2026-10-28 23:16:28 -07:00
Raymond Bennett 59b96ac618 fix: find a module named by its path in GetModuleHandleExW, as GetModuleHandleW does
GetModuleHandleExW looked modules up by file name only, so a full path never
matched, and on 64 bits GetModuleHandleW had no path lookup either. The .NET
host loads hostfxr.dll by its full path and then pins it with
GetModuleHandleExW(GET_MODULE_HANDLE_EX_FLAG_PIN, path), so PowerShell 7
stopped with "Failed to pin library".

Both now use GetModuleHandle's own lookup: by name, with API sets and the
trailing-dot rule, or by path, where the 64-bit loader matches the module of
that file name to the file it was loaded from (or, for the libraries Raven
serves, to the system folder GetModuleFileName reports for them).

Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the shared lookup and the 64-bit path lookup
(cherry picked from commit 9ea61e7f3c61546be696103a103181cd6ed3e5c3)
2026-10-28 23:16:13 -07:00
Raymond Bennett 748341457a feat: add ntdll's strlen, strcmp and strncmp
eza's GNU build imports them from ntdll, which exports part of a C runtime.
The comparisons read no byte past the first difference, the terminator or
the count.

Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the handlers
(cherry picked from commit bb244301ebef9726e2e55012184d63c8bcb060a1)
2026-10-28 23:16:05 -07:00
Raymond Bennett 1f91a7038f feat: add GetCurrentProcessorNumber and its Ex, Nt and Rtl forms
DuckDB stops at start-up on GetCurrentProcessorNumber. The number is the host
processor the calling thread runs on, in group 0 and within the processor count
GetActiveProcessorCount reports; the Ex forms fill PROCESSOR_NUMBER.

Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the handlers

(cherry picked from commit 7d0c81ae4019d0dbfb4d1b05604b225be92fd2a1)
2026-10-28 23:15:51 -07:00
Raymond Bennett 2468692c3f fix: succeed when SetEnvironmentVariable removes a variable that is not set
Rust's standard library removes variables without checking first and panics
when that fails; zoxide stopped at start-up removing RUST_LIB_BACKTRACE.
Removing a variable that does not exist succeeds on Windows.

Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the change
(cherry picked from commit 143115b20d2a36af03cbb5ac53a1a5f8adce105a)
2026-10-28 23:14:32 -07:00
mirkobrombin 1719f5d48e feat: report out-of-box setup as complete 2026-10-28 11:02:12 +00:00
mirkobrombin 5fa9c467a8 feat: add application recovery and error report metadata registration
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: Wrote the application recovery and error report metadata registrations.
2026-10-28 11:02:11 +00:00
mirkobrombin 112039c823 feat: add the remaining license client entry points programs resolve 2026-10-28 10:37:23 +00:00
mirkobrombin 6c7acf5ddb feat: add the Software Protection Platform client with no licenses 2026-10-28 06:16:06 +00:00
mirkobrombin 7a8f280f1f feat: add Windows Runtime strings and app package queries
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: Fixed the string header layout and wrote the activation factory registry, device family and package queries from the public headers.
2026-10-27 09:20:47 +00:00
mirkobrombin 44a593867c feat: run an SSH client's terminal and file transfer windows 2026-10-26 23:13:38 +00:00
mirkobrombin 0e99d41adc fix: keep x86 singly linked lists in their 8-byte header form 2026-10-25 22:04:55 +00:00
mirkobrombin 0a0fe4be89 feat: add shared Windows process state and parallel guest execution 2026-10-24 16:24:23 +00:00
mirkobrombin f9f3a67f1c fix: serve the Windows calls that Inno Setup, 7-Zip and VLC make 2026-10-23 21:27:15 +00:00
Mirko Brombin 3940a8643e feat: report the Windows version a compatibility layer names to GetVersionEx and RtlGetVersion 2026-10-03 10:21:41 +00:00
Mirko Brombin c02f68dc74 feat: keep DPI awareness, tell awareness contexts apart, extract icons and serve UI Automation's reserved values for WPF 2026-10-03 10:21:06 +00:00
Mirko Brombin f4509d0c1f feat: implement the Windows APIs that .NET programs and their installers call 2026-09-23 00:12:56 +00:00
Mirko Brombin cca759e94f feat: write the GetModuleHandleExW handle at the program's pointer width 2026-09-22 02:53:35 +00:00
Mirko Brombin ed58b00bab feat: answer GetEnabledXStateFeatures and SetHandleCount 2026-09-21 19:08:59 +00:00
Mirko Brombin 6221c0fbab feat: expand environment strings for a user's token 2026-09-21 16:09:02 +00:00
Mirko Brombin b7636c0e87 feat: give 32-bit programs the 32-bit layout of the native system information 2026-09-21 16:09:02 +00:00
Mirko Brombin 95ef9f6398 feat: report the Windows version a program's manifest declares it supports 2026-09-21 14:16:46 +00:00
Mirko Brombin 93ddb6774e feat: name libraries loaded from a folder by the file they came from and let 32-bit programs open other processes 2026-09-21 09:15:03 +00:00
Mirko Brombin fbc2662fdb feat: answer thread execution state requests 2026-09-21 09:15:03 +00:00
Mirko Brombin c0946f8c44 feat: add RtlGetVersion, DOS and local file times, the SysWOW64 directory, UrlIs and PathStripToRoot, and answer the user's own account by its Windows name 2026-09-21 04:26:15 +00:00
Mirko Brombin b264bbd6c6 feat: find shared libraries in the system directory, keep the system's own libraries the runtime's, and redirect System32 for 32-bit programs 2026-09-21 05:13:14 +02:00
Mirko Brombin bd67f3bb62 feat: read the performance counter in the guest and let critical sections be taken back without a handoff 2026-09-05 05:18:50 +00:00