port: advance VC6 frontier into frameobject

This commit is contained in:
RayPals
2026-10-02 19:11:50 +00:00
parent 01a7105be9
commit 9221a2ee0e
6 changed files with 3935 additions and 5 deletions
+26 -1
View File
@@ -1,4 +1,29 @@
## Latest revision (`dict_keys()` C89 declarations hoisted; frontier advances in dictobject.c)
## Latest revision (frameobject C89 work; frontier advances past floatobject)
Date: 2026-10-02 19:09 UTC
The CPython checkout remains at baseline tag `v3.11.16`, commit `41388c9cb160d0886d5ca00d2e6c878260a8a4549`. Preserved the existing outer and detached CPython working trees; no reset, clean, stash, or discard. Regenerated `compat/msvc600/cpython-3.11.16-vc6-headers.patch` from the complete nested CPython diff and verified byte-for-byte. The outer Gitea commit will contain that patch, focused tests, and this status log; the nested checkout remains detached/uncommitted.
Continued the C89 port after a fresh forced VC6 probe found `Objects/exceptions.c` at 84/85. Exception-group and exception metadata declarations were hoisted in earlier edits; subsequent forced probes compiled past exceptions, fileobject, and floatobject. In this continuation:
- `Objects/fileobject.c`: hoisted `Py_OpenCodeHookFunction hook` in `PyFile_OpenCodeObject()` while leaving lookup after path validation.
- `Objects/clinic/floatobject.c.h` and `Objects/floatobject.c`: moved the `typestr_length` declaration; corrected C89 declarations in float packing, exact deallocation, `PyFloat_AsDouble`, vectorcall, and format detection; replaced the designated `PyFloat_Type.tp_vectorcall` initializer with positional trailing slots; replaced `1ULL`-style concern in frame stack threshold via `PY_ULL(1)`.
- `Objects/frameobject.c`: corrected `frame_getlocals`, stack-swap helpers, overflow literal, stack analysis (`mark_stacks`), incompatible-stack lookup, line marking, and loop-local declarations. Execution/ownership order was retained in the focused checked paths.
Focused regressions pass:
- `python3 scripts/vc6-fileobject-opencode-c89.test.py cpython/Objects/fileobject.c`
- `python3 scripts/vc6-floatobject-pack4-c89.test.py cpython/Objects/floatobject.c cpython/Objects/clinic/floatobject.c.h`
- `python3 scripts/vc6-frameobject-c89.test.py cpython/Objects/frameobject.c`
- `git -C cpython diff --check`
The latest forced probe compiled **87/88** translation units and moved the first blocker to `Objects/frameobject.c`. First diagnostics are C2275/C2146/C2065 for late `PyFrameState state` in `frame_setlineno()` at line 686; further diagnostics in that function and later frameobject code are follow-on C89 issues. Full log: `build/current-recheck/frontier-frame-current.log`. Next step is test-first declaration hoisting in `frame_setlineno()`, preserving validation/cleanup order, then re-probe.
This is compile-frontier evidence only. No interpreter has been linked or runtime-tested under Wine or Windows 98 SE. No commit or push has yet been made for this continuation.
---
## Previous revision (fresh frontier recheck; floatobject declarations already fixed)
Date: 2026-10-02 16:22 UTC