Commit Graph
229 Commits
Author SHA1 Message Date
mirkobrombin b946b68095 feat: add an own ICU library for programs that import it
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: icu.dll with its forwarders, written from the public ICU API documentation and UAX #11, #14 and #29, with its test
2026-11-01 21:17:19 +00:00
mirkobrombin 4b89a48e1e fix: bind completion ports late and honor pipe read modes
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: named pipe completion port lookup, read mode state and tests
2026-11-01 21:00:40 +00:00
mirkobrombin 6db53253f4 fix: honor the raster operation in StretchDIBits
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: StretchDIBits raster operation handling and its test
2026-11-01 19:55:27 +00:00
mirkobrombin 3732dc619a fix: accept message-only children and reparenting
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: HWND_MESSAGE handling and its test
2026-11-01 18:43:28 +00:00
mirkobrombin a88ae66336 fix: honor capacities in the secure scanners
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: secure scanf capacities and their test
2026-11-01 18:41:26 +00:00
mirkobrombin 141b2e529b fix: keep one string per name in the XML reader
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: reader string identity and its test
2026-11-01 18:40:25 +00:00
mirkobrombin f5eda87880 feat: add Unicode normalization
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: Wrote NormalizeString and IsNormalizedString on UAX #15, the table generator and the test.
2026-11-01 17:01:32 +00:00
mirkobrombin cf06150532 feat: add own hlink 2026-10-31 21:13:21 +00:00
mirkobrombin 6f5f41985d fix: answer the newer DirectWrite interfaces 2026-10-31 20:36:52 +00:00
mirkobrombin 65c748ce59 feat: add the WinRT language class 2026-10-31 19:46:17 +00:00
mirkobrombin da4b7e22ae chore: merge pull request #88 from rayzorben/feat/winsqlite3 2026-10-31 08:15:54 +00:00
mirkobrombin 79ceca417f chore: merge pull request #71 from rayzorben/feat/ntdll-critical-sections 2026-10-31 08:15:54 +00:00
mirkobrombin 6c7de9f64c chore: merge pull request #56 from rayzorben/feat/afd-poll 2026-10-31 08:15:53 +00:00
mirkobrombin 538e9301a9 chore: merge pull request #76 from rayzorben/feat/volume-device-names 2026-10-31 08:15:53 +00:00
mirkobrombin 4f56503d82 chore: merge pull request #81 from rayzorben/fix/create-process-path-search 2026-10-31 08:15:52 +00:00
mirkobrombin d07857d215 chore: merge pull request #93 from rayzorben/feat/analytics-info 2026-10-31 08:15:51 +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 588f72baa9 chore: merge pull request #92 from rayzorben/fix/winrt-activation-imports 2026-10-31 08:15:50 +00:00
mirkobrombin 829e362fa1 chore: merge pull request #89 from rayzorben/fix/forwarder-target-load 2026-10-31 08:15:50 +00:00
Raymond Bennett ad475eec9c fix: give critical sections a debug record unless the caller declines one
The guest RTL that replaced the ReactOS one set every section's DebugInfo
to -1. The components built from Wine sources (urlmon, windowscodecs,
rpcrt4 and others) name their sections through DebugInfo right after
initializing them, so they wrote to address 0x27 and crashed. A section
now gets a debug record unless CRITICAL_SECTION_NO_DEBUG_INFO is passed,
as Windows documents and as 32-bit sections already have. The records
live in a heap of their own, so DeleteCriticalSection gives back only
those and leaves a program's static record alone.

Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: traced the 0x27 faults to the debug record, the record heap in kernel.c and the kernel_threads_client checks
2026-10-30 09:58:11 -07:00
Raymond Bennett b5d86c7865 test: ntdll critical sections and the PEB lock
The PEB names a free FastPebLock that RtlEnterCriticalSection and
RtlLeaveCriticalSection take and release; a program's own critical section
is initialized, entered again by its owner, tried and deleted through ntdll.

Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the test client and its registration

(cherry picked from commit 6ca000e45c77933d5ffa46c8e18fb71698d6a116)
2026-10-30 08:34:15 -07:00
Raymond Bennett e6ca2018a9 test: volume devices and the NT name of a folder
QueryDosDevice names C: and Z: as volumes 1 and 24, and NtQueryObject names
an open folder on drive C by that volume device, without a closing
backslash.

Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the test client and its registration

(cherry picked from commit 701efce5592e7e3c91ade4e341863124fe3895f6)
2026-10-30 08:25:47 -07:00
Raymond Bennett d0f17b5c28 test: cover the AFD readiness poll
A poll of a listening socket completes through the completion port with
AFD_POLL_ACCEPT and the APC context once a client connects; a poll nothing
satisfies ends as cancelled after NtCancelIoFileEx, with
ERROR_OPERATION_ABORTED from the port.

Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the test client and its registration

(cherry picked from commit 6a54eed4bea13ada2845b1eacc6bfe2ef0637d02)
2026-10-30 08:25:32 -07:00
Raymond Bennett 29cb00c979 test: CreateProcess finds a program in the folders of PATH
A copy of the program in a folder added to PATH starts by its name alone.

Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the test client and its registration

(cherry picked from commit 451226102dc3cd3f2447943b24e80ce5141e333e)
2026-10-30 08:25:23 -07:00
Raymond Bennett 2d70273fd2 feat: add the AnalyticsInfo runtime class
Programs ask Windows.System.Profile.AnalyticsInfo which device family and
version of Windows they run on; winget's engine activates it by name. The
class joins RetailInfo and SharedModeSettings in raven-twinapi.dll: the
family is Windows.Desktop, its version the four numbers RtlGetVersion and
the registry's update build revision give, packed in sixteen bits each and
written in decimal, and the form Desktop.

Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the AnalyticsInfo statics and version info in twinapi.c, their registration and the check_analytics part of the twinapi_client test
2026-10-30 08:21:22 -07:00
Raymond Bennett 0c7cd11934 feat: ship SQLite as winsqlite3.dll for 64-bit programs
Windows has carried SQLite as winsqlite3.dll since Windows 10, and
programs such as winget keep their package index in it.
scripts/provision-sqlite.py builds the pinned public-domain
amalgamation (3.54.1, SHA3-256 checked) with MinGW, exporting the
unsuffixed sqlite3_* interface; the runtime places it in the system
directory like its other components.

Only the 64-bit library for now: Windows' 32-bit winsqlite3 uses the
standard calling convention for its interface and callbacks, which the
published amalgamation does not declare.

Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: provisioning script, CMake wiring, license records and the sqlite_client test
2026-10-30 08:17:47 -07: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
Raymond Bennett 25a223eb04 fix: load the Windows Runtime component for programs that only import its activation
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
2026-10-30 08:17:33 -07:00
Raymond Bennett 14c1195090 fix: load a forwarder's target library when GetProcAddress reaches it
GetProcAddress on a library loaded at run time failed with
ERROR_MOD_NOT_FOUND when the export forwarded to a library nobody had
loaded yet: the loader brought in forwarder targets for imports, but the
lookup did not. It now loads the target through the same path as
LoadLibrary and goes on, as Windows does, trying each library once; a
forwarder to a library that is not there still finds nothing, with
ERROR_MOD_NOT_FOUND. Programs that look up ICU through icuuc.dll and
icuin.dll, which forward to icu.dll, rely on it.

Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the lookup loop and the late_forwarder test
2026-10-30 08:17:33 -07:00
mirkobrombin 9401355749 chore: replace the ReactOS user32 controls
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: Wrote the window controls, dialog manager, message boxes, text layout, drawing helpers and generated resources as own code from Microsoft's documentation, using published test expectations for behaviour only; removed the retired text component and its layout tests.
2026-10-30 14:46:09 +00:00
mirkobrombin 7b645bce72 chore: replace the ReactOS regsvr32
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.
2026-10-30 12:43:02 +00:00
mirkobrombin 7d8db69305 chore: replace the ReactOS delay-load helper
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: Wrote the test's delay-load helper as own code from the public PE format and its delay import table.
2026-10-30 11:58:14 +00:00
mirkobrombin 00a9989496 feat: add GetNetworkParams 2026-10-30 11:23:30 +00:00
mirkobrombin f4c3da131b feat: add rundll32
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.
2026-10-30 10:34:51 +00:00
mirkobrombin 66626bbfe2 feat: add GetCurrentThreadStackLimits
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: Implemented the call for both widths from the thread block and checked it in the kernel threads test.
2026-10-30 10:34:51 +00:00
mirkobrombin 4e74ee4863 fix: let 32-bit programs enumerate font families
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: Passed the guest call service to the 32-bit desktop, so font enumeration reaches the callback that GDI+ relies on, and added a test.
2026-10-30 10:34:51 +00:00
mirkobrombin 3514eda6d8 chore: merge pull request #80 from rayzorben/feat/private-assemblies 2026-10-30 06:33:00 +00:00
mirkobrombin ccf48873dd chore: merge pull request #79 from rayzorben/fix/lcmap-string-lengths 2026-10-30 06:33:00 +00:00
mirkobrombin fff01045c8 chore: merge pull request #78 from rayzorben/feat/msys-runtime-start 2026-10-30 06:32:59 +00:00
mirkobrombin 7bf9af74f7 chore: merge pull request #77 from rayzorben/feat/dbghelp-symbol-handler 2026-10-30 06:32:59 +00:00
mirkobrombin 61e87bc521 chore: merge pull request #75 from rayzorben/fix/exited-child-information 2026-10-30 06:32:59 +00:00
mirkobrombin cc497aedd7 chore: merge pull request #74 from rayzorben/feat/native-waits-alerts 2026-10-30 06:32:59 +00:00
mirkobrombin 8e6eb23925 chore: merge pull request #73 from rayzorben/feat/ntdll-kernel32-forms 2026-10-30 06:32:59 +00:00
mirkobrombin d2954eb6f1 chore: merge pull request #72 from rayzorben/fix/create-process-environment-read 2026-10-30 06:32:59 +00:00
mirkobrombin f615b960a0 chore: merge pull request #70 from rayzorben/feat/fibers-x64 2026-10-30 06:32:59 +00:00
mirkobrombin 7527eeba9b chore: merge pull request #68 from rayzorben/feat/reparse-points 2026-10-30 06:32:59 +00:00
mirkobrombin a020ed0b4d chore: merge pull request #55 from rayzorben/feat/nt-create-file 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 5a303f5ba9 chore: merge pull request #46 from rayzorben/fix/shared-user-data-clocks 2026-10-30 06:32:58 +00:00
mirkobrombin eccde589d4 chore: merge pull request #45 from rayzorben/feat/directory-by-handle 2026-10-30 06:32:58 +00:00