Commit 0866b55
[nanvix] E: Phase 1C — build 8 Tier-1 text-codec modules as .so
Phase 1C of the .a -> .so migration (see
nanvix-todo/cpython-static-to-shared-migration.md section 5).
Builds on Phase 1B (#6, #7) by promoting the remaining 8 Tier-1
"text codec" stdlib extension modules from statically linked into
python.elf to dlopen-loaded shared objects under
lib/python3.12/lib-dynload/.
Modules moved to *shared* in Modules/Setup.local generation
(.nanvix/docker.py):
- unicodedata: Unicode database lookups (the big one — 1.2 MB of
unicode data tables).
- _multibytecodec: shared CJK codec infrastructure.
- _codecs_cn / _codecs_hk / _codecs_iso2022 / _codecs_jp /
_codecs_kr / _codecs_tw: per-region CJK codec tables.
None of the eight reference external libraries; they are pure C
with embedded data tables. They link against the same -lc /
runtime symbols that the rest of the Phase 1 modules use.
Test coverage (.nanvix/test.py):
- New phase1c_snippet imports each module, asserts it is NOT in
sys.builtin_module_names, exercises one trivial API call to
confirm dlopen + PyInit_<name> succeeded (unicodedata.lookup,
_multibytecodec.__create_codec, _codecs_<region>.getcodec), and
prints the resolved __file__ path. Phase 1A/1B probes retained.
Validation on local toolchain (phase0-llfix):
- All 8 new .so files produced and installed under lib-dynload/
(unicodedata 1193K, _codecs_jp 262K, _codecs_hk 168K,
_codecs_cn 155K, _codecs_kr 145K, _multibytecodec 147K,
_codecs_tw 115K, _codecs_iso2022 76K — total ~2.2 MB across
the eight files).
- nm python.elf no longer shows PyInit_<name> for any of the 8.
- python.elf size: 19.18 MB (Phase 1B) -> 17.48 MB (Phase 1C),
-1.70 MB. Biggest single-phase reduction so far because the
CJK codec tables and the Unicode database are large.
- Hello + Phase 1A + Phase 1B + Phase 1C import probes + lxml +
HTTP smoke + full regrtest 160/160 PASS in standalone mode.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>1 parent b91f9d8 commit 0866b55
2 files changed
Lines changed: 31 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
320 | 320 | | |
321 | 321 | | |
322 | 322 | | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
323 | 332 | | |
324 | 333 | | |
325 | 334 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
488 | 488 | | |
489 | 489 | | |
490 | 490 | | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
491 | 512 | | |
492 | 513 | | |
493 | 514 | | |
| |||
526 | 547 | | |
527 | 548 | | |
528 | 549 | | |
| 550 | + | |
529 | 551 | | |
530 | 552 | | |
531 | 553 | | |
| |||
0 commit comments