Skip to content

Complete Perl ithread lifecycle compatibility - #966

Merged
fglock merged 1 commit into
masterfrom
feature/complete-perl-threads-final
Aug 15, 2026
Merged

Complete Perl ithread lifecycle compatibility#966
fglock merged 1 commit into
masterfrom
feature/complete-perl-threads-final

Conversation

@fglock

@fglock fglock commented Aug 15, 2026

Copy link
Copy Markdown
Owner

Summary

  • complete the remaining Perl ithread ownership, snapshot, END/CLONE_SKIP, weak-reference, rescue, and join-result lifecycle semantics
  • complete exact shared aggregate proxy, lexical reassignment, alias/refcount, Queue, and Semaphore behavior across JVM/interpreter and platform/virtual carriers
  • replace the phased concurrency history with a current-state implementation and release contract; direct regex/Joni work remains in the separate Phase 36 project

Validation

  • make — green across all unit shards
  • make check-links — 393 links OK, 0 errors
  • new regression tests under system Perl — 8 files, 26 assertions, PASS
  • unchanged upstream threads, threads-shared, Thread-Queue, and Thread-Semaphore distributions — 64 files, 1,891 assertions in each of JVM/platform, JVM/virtual, interpreter/platform, and interpreter/virtual configurations
  • ./jcpan --jobs 8 -t DBIx::Class — 325 files, 42,681 assertions, PASS
  • thread preservation matrix — no timeouts; core, Storable, Test2, regex-debug, and user-property thread gates pass; regex wrappers equal or exceed their same-build direct companions

The final post-rebase make and DBIx/distribution gates are rerun against current origin/master before this PR is opened.

Finish the remaining Perl-compatible ithread ownership and lifecycle work on
both execution backends. Preserve END and CLONE_SKIP behavior, weak backrefs,
rescued DESTROY graphs, method-return lifetimes, and child CODE/result cleanup
across runtime snapshots and joins.

Complete shared aggregate proxy lifetime and lexical reassignment semantics,
including alias-aware reference counts and B::REFCNT behavior. Keep nested
weak cleanup precise enough to preserve rescued DBIx::Class schema graphs while
releasing stale storage callback links.

Replace the phased concurrency history with the current implementation and
release contract. Historical decisions and completed work remain recoverable
from this commit and the preceding pull requests; direct regex-language and
Joni work remains in the separate Phase 36 project.

Validation:
- make: green across all unit shards
- make check-links: 393 links OK, 0 errors
- new system-Perl regressions: 8 files, 26 assertions, PASS
- threads/threads-shared/Thread-Queue/Thread-Semaphore: 64 files and 1,891
  assertions in each JVM/platform, JVM/virtual, interpreter/platform, and
  interpreter/virtual configuration
- DBIx::Class: 325 files and 42,681 assertions, PASS with --jobs 8
- thread preservation matrix: no timeouts; thread-owned core, Storable, Test2,
  debug, and property-race gates pass; regex wrappers equal or exceed their
  same-build direct companions

Generated with [Codex](https://openai.com/codex)

Co-Authored-By: Codex <codex@openai.com>
@fglock
fglock merged commit 58fb19d into master Aug 15, 2026
2 checks passed
@fglock
fglock deleted the feature/complete-perl-threads-final branch August 15, 2026 20:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant