SDK + P1SCode v0 Release Notes¶
Scope¶
This release documents the first integrated SDK + P1SCode tooling baseline.
Highlights¶
Added explicit SDK contract and language scope references:
reference/sdk-contractreference/p1scode-status-and-scopereference/developer-platform-index
Hardened SDK reliability paths:
allocator safety checks in
SDK/lib/cstd/src/stdlib.rswindow lifecycle guardrails in
SDK/lib/p1window/src/window.rstemplate smoke check and known-good checklist in
SDK/template/p1start-app
Unified early P1SCode tooling path:
removed hardcoded machine paths from
SDK/p1sdk/p1sc.pyadded profile and conformance fixtures under
SDK/p1sdk/aligned parser demo source to transpiler-compatible syntax in
apps/p1sc
Added packaging workflow outputs:
build manifest and package artifacts from
p1sc.py packagepractical runtime helpers in
apps/p1s_pkgandapps/p1s_linkerfirst-party
SDK/template/p1scode-apptemplate
Continued post-v0 tooling hardening:
added
p1sc.py checkfor no-build validationadded project-local import resolution for
import "module_path"inp1sc.pyadded
--json-diagnosticsoutput mode for machine-readable tooling integrationadded stdin-buffer validation support in
p1sc.py(--stdin-source,--stdin-path,--stdin-import-root)added
p1sc_diag_bridge.pyfor editor-friendly diagnostic projection, including LSP-formatted output, groupeduri -> diagnostics[], and publish-ready{uri, diagnostics}payload modeadded stdin-buffer forwarding support in
p1sc_diag_bridge.pyfor unsaved editor buffers, including stdin import-root forwardingexpanded fixture coverage for module/import flow and diagnostic error cases (including malformed import, CLI/root validation, and JSON diagnostics paths)
Dynamic-linking phase-1 experimental bring-up:
added
reference/dynamic-linkingcontract page with explicit support/non-support boundariesupgraded
ld.elfto parse/reportPT_DYNAMICandDT_NEEDEDmetadata deterministicallyswitched from unconditional
DT_NEEDEDrejection to conditional eager-binding execution pathtightened phase targets (PIE-only stance, explicit relocation subset, deterministic search-path direction)
introduced stable loader error-code contract (
DL_E_*) for deterministic loader failure reportingadded deterministic dependency probe order in loader bring-up (
RUNPATH->RPATH->/lib) with explicit unsupported/denied diagnosticsadded dependency mapping and eager relocation handling for the phase-1 x86_64 subset (
R_X86_64_RELATIVE,GLOB_DAT,JUMP_SLOT, plus extended relocs:R_X86_64_64, PC-relative types,GOTPCREL*,R_X86_64_32/32S; seereference/dynamic-linking) with hard-fail on unresolved/unsupported casestightened symbol resolution policy (strong-over-weak precedence, duplicate strong-symbol failure, visibility/local filtering)
added explicit loader gating for unsupported symbol-version metadata (
DT_VER*->DL_E_VERSION_UNSUPPORTED)added host-side loader fixture harness for precedence/duplicate/visibility rules
introduced
SDK/lib/p1dlstub API surface and re-export viap1std::dltightened
p1dlAPI behavior to validate C-string arguments/handles (InvalidArgument/InvalidHandle) before deterministic unsupported fallbackadded phase-1 loader bridge ABI wiring:
ld.elfpublishes a dispatch pointer into main-executablep1dlbridge slot and servesdlopen/dlsym/dlcloserequests for already-loaded handles plus deterministic runtime mapping from loader policy pathsadded dependency init-hook execution support for
DT_INIT/DT_INIT_ARRAYafter mapping+relocationadded runtime-handle teardown hook execution on close-to-zero (
DT_FINI_ARRAYreverse order, thenDT_FINI) while keeping startup-pinnedDT_NEEDEDhandles non-finalizingadded
SDK/loader-fixtures/hello-sominimal smoke fixture scaffold (hello.so+main.elf) plus CI verification script (scripts/verify_loader_smoke_fixture.py)added
SDK/loader-fixtures/p1dl-runtime-smokeapp fixture that callsp1std::dl::dlopen+dlsym+dlcloseagainsthello.soand documents expected pass/fail runtime output underld.elfexpanded runtime smoke fixture to validate lifecycle transitions across reopen (constructor/destructor bias checks) under bridge-managed close/reopen
added repeatable QEMU boot harness
scripts/run_p1dl_runtime_boot_smoke.pyto build/stage smoke artifacts and assert[LD.SO]bridge install +[p1dl-smoke] PASSfrom serial logsvalidated runtime smoke end-to-end in QEMU (
hello.soruntimedlopenprobe/load + bridge install +[p1dl-smoke] PASS) after eliminating alignment-sensitive loader parsing paths and making bridge install independent of startupDT_NEEDEDpresence
Documentation follow-ups (May 2026)¶
JSON diagnostics: canonical schema, stable error codes, and bridge behavior are documented in
reference/p1scode-toolchain-workflow(§ JSON diagnostics).Conformance:
SDK/p1sdk/run_fixtures.pyruns Python transpiler fixtures, bridge checks, and hostp1sc_syntaxparser tests against the same.p1sfiles underSDK/p1sdk/fixtures/.Template:
SDK/template/p1scode-appsupports-Check,-Build,-JsonDiagnostics(with-Check), and defaultpackage.
Known Limitations¶
P1SCode parser and transpiler are still separate implementations with partial overlap.
Dynamic linking remains unsupported as production contract.
Tooling ergonomics (full parser-grade diagnostics, package management semantics) are still early-stage.
Next-Quarter Priorities¶
Move parser/transpiler toward one grammar/AST contract.
Expand conformance fixtures to include richer error diagnostic cases.
Tighten SDK regression automation across app templates and high-usage crates.
Continue migrating legacy narrative docs into canonical Sphinx/reference pages.