You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Windows joins the gate, and the last portability gaps close.
Highlights since v9.3.2:
- win64 has regex. PCRE 8.45 is built there with the runner's MinGW gcc into
pcre3.dll beside funcmd.exe and imported by name (-dPCRE_WinDLL), because
neither FPC linker can pull in the bcc32 or the MinGW PCRE objects. Two
engine fixes came with it: the __llmul stub is 32-bit only (win64 has no
System.__llmul), and PCRE memory returns through pcre_free_substring, since
the DLL allocates from its own CRT (FreeMem corrupted the heap after a
match). The 8 regex tests and the portability probe run on Windows now
instead of skipping.
- win64 has getapi. FPC's bundled ffi unit already targets WIN64, so -dWinFFI
(mapped onto the engine's existing UnixFFI symbol) selects the libffi-backed
lffi unit and CI copies ffi.dll from MSYS2 next to funcmd.exe; a bare
library name now falls back to name + '.dll'.
- The portable FFI suite runs on win64 and earned its keep: four of the five
cases use the shared snapshots, and the fifth found a real bug - kernel32
exports GetCommandLineA/W, so lffi.pas now retries name + 'A' for unsuffixed
Windows API names, as io.GetProc already did. windows-x64 is 55/55, 37
skipped.
- Windows-only engine divergences fixed ({$IfDef FPC} branches, Delphi sources
untouched by them): the ISO time literal parses directly instead of through
FPC's locale-dependent VarToDateTime; DefaultFormatSettings is pinned to the
Unix formats so date and number output is host-independent; stdout goes
through a new raw-byte WriteOut instead of the RTL text file, which
re-encoded every non-ASCII byte to the console codepage; and a named script
forces console mode, so a redirected run prints again (AttachConsole is
false without a parent console). Also: 0x literals stay 32-bit unsigned on
Win64, and the FPC-only divergences that broke the Windows build are gone.
- macOS: the lib-proc backend (libproc + mach VM) lands with its test enabled
(#14); lib-asm-a64 gains live JIT on arm64 (#13) and all b.cond condition
codes (#4); the lib-crypt-unx hashes go through CommonCrypto (#6).
- CI: every platform gates the build (windows-arm64 stays disabled, FPC 3.2.2
has no such target), the FPC toolchain is cached on all of them, and the
Windows runner reports regex/getapi availability as annotations.
- pcrd's dynamic branch (-dPCRE_LINKDLL) no longer breaks the Delphi build:
dynlibs is FPC-only and the non-FPC side keeps the same behaviour through
the Win32 loading calls, so dcc32 builds funcmd.dpr again.
Verified: linux x86_64 regression 92/92. The Delphi (dcc32) build of
funcmd.dpr compiles again; -dPCRE_WinDLL/-dPCRE_LINKDLL paths are unchanged.