Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
318 commits
Select commit Hold shift + click to select a range
099ca9c
Revert "chore: trace Mojo loop CV root metadata"
fglock Oct 17, 2026
ba3c54b
Revert "chore: trace Mojo loop CV root metadata"
fglock Oct 17, 2026
885839b
Revert "chore: trace Mojo loop CV root metadata"
fglock Oct 17, 2026
87b07b1
Revert "chore: trace Mojo loop CV root metadata"
fglock Oct 17, 2026
46af62c
wip: trace interpreter closure owner edges
fglock Oct 17, 2026
5063589
wip: inspect callback capture release paths
fglock Oct 17, 2026
36c3baf
wip: inspect callback capture release paths
fglock Oct 17, 2026
0c258cb
fix: avoid retaining stale interpreter capture metadata
fglock Oct 17, 2026
6ef9676
test: assert WebSocket controller lifetime across push callbacks
fglock Oct 17, 2026
e995f7b
fix: synchronize scalar container owner tracking
fglock Oct 17, 2026
817aa6e
fix: ignore non-owning array aliases during reachability
fglock Oct 17, 2026
776971a
fix: ignore non-owning array aliases during reachability
fglock Oct 17, 2026
f5068fe
fix: ignore non-owning array aliases during reachability
fglock Oct 17, 2026
707b012
fix: retain captured containers after lexical scope exit
fglock Oct 17, 2026
5f031fd
test: cover ordinary aggregate element ownership counts
fglock Oct 17, 2026
2aefc9c
fix: tie resurrection owner slots to rooted containers
fglock Oct 17, 2026
16bba67
test: exercise aggregate owner root through hash mutations
fglock Oct 17, 2026
4e9c332
fix: require rooted closure owner for resurrection
fglock Oct 18, 2026
c3fd79b
test: use valid RuntimeCode constructor
fglock Oct 18, 2026
e213c57
fix: root legacy capture pads through owning code
fglock Oct 18, 2026
7c689ae
docs: update ownership rewrite progress evidence
fglock Oct 18, 2026
b11cf71
fix: limit global resurrection checks to package roots
fglock Oct 18, 2026
55570d0
fix: require rooted weak-slot rescue during global teardown
fglock Oct 18, 2026
2e75fe3
fix: preserve top-level temporary rescue semantics
fglock Oct 18, 2026
9188373
docs: refresh ownership rewrite validation status
fglock Oct 18, 2026
f4ec54c
fix: avoid false destruction resurrection reports on large root graphs
fglock Oct 18, 2026
4dc6f94
test: skip Catalyst lifetime regression when dependencies are absent
fglock Oct 18, 2026
6da19d1
test: cover WebSocket controller release after close
fglock Oct 18, 2026
afae774
docs: refresh ownership PR status
fglock Oct 18, 2026
2bff002
docs: record current ownership acceptance evidence
fglock Oct 18, 2026
00b50a3
fix: preserve rooted hash-entry owners at legacy zero
fglock Oct 18, 2026
d0315f0
docs: record hash owner-slot lifecycle bridge
fglock Oct 18, 2026
6009daf
fix: preserve mixed owners during hash-slot count recovery
fglock Oct 18, 2026
507dd53
fix: restrict hash owner rescue to real roots
fglock Oct 18, 2026
1fa7880
docs: update ownership bridge validation
fglock Oct 18, 2026
c26368d
docs: update ownership migration status
fglock Oct 18, 2026
031d807
fix: restore directly rooted array element owners
fglock Oct 18, 2026
6b87f3d
test: exclude weak aggregate cells from owner recovery
fglock Oct 18, 2026
7d95b93
fix: recognize registered lexical array owners
fglock Oct 18, 2026
2acd5f0
fix: retain captured array element owners
fglock Oct 18, 2026
ab09932
docs: record current ownership acceptance evidence
fglock Oct 19, 2026
a10ca13
fix: register array owner slots after proxy stores
fglock Oct 19, 2026
a9f1fe8
docs: record array proxy ownership validation
fglock Oct 19, 2026
65715ff
fix: register array owner slots after scalar refaliasing
fglock Oct 19, 2026
1344b3b
docs: record scalar refalias owner validation
fglock Oct 19, 2026
abda275
fix: track references to newly vivified array elements
fglock Oct 19, 2026
c3a2464
docs: record latest ownership regression coverage
fglock Oct 19, 2026
e5e7dec
fix: track aggregate refalias owners in array proxies
fglock Oct 19, 2026
e8725b7
test: allow Windows time for nested Perl startup
fglock Oct 19, 2026
8c5a70f
docs: record exact ownership PR candidate head
fglock Oct 19, 2026
3e3d2e5
docs: clarify current ownership migration boundary
fglock Oct 19, 2026
fda5470
test: cover array referent release on integer assignment
fglock Oct 19, 2026
1cc4d26
test: cover hash referent release on integer assignment
fglock Oct 19, 2026
cb36f67
test: assert destructors run on aggregate scalar replacement
fglock Oct 19, 2026
0f398e6
fix: retain array slot owners through rooted hashes
fglock Oct 19, 2026
0128fb7
docs: refresh ownership migration status
fglock Oct 19, 2026
d41dfe4
refactor: clarify array owner recovery proof
fglock Oct 19, 2026
fe684d6
docs: record latest ownership candidate hash
fglock Oct 19, 2026
7972148
test: cover Mojolicious controller destruction after finish
fglock Oct 19, 2026
03e2b2b
docs: update ownership candidate validation status
fglock Oct 19, 2026
bfa83a6
test: cover controller capture release after transaction teardown
fglock Oct 19, 2026
aca972f
wip: snapshot lifecycle sweep changes
fglock Oct 19, 2026
162f06a
fix: release scope-exited captures through owner containers
fglock Oct 20, 2026
6e72e6f
test: make controller ownership regression self-contained
fglock Oct 20, 2026
c431074
wip: snapshot interpreter lifetime investigation
fglock Oct 20, 2026
796ba80
wip: snapshot WebSocket lifetime regressions
fglock Oct 20, 2026
3a0de91
wip: snapshot interpreter temporary owner cleanup attempt
fglock Oct 20, 2026
cca2486
wip: snapshot temporary scalar owner tracking
fglock Oct 20, 2026
a20b777
wip: snapshot interpreter temporary owner diagnostics
fglock Oct 20, 2026
c6c4ca2
wip: snapshot RuntimeList ownership experiment
fglock Oct 20, 2026
5a0ca2c
wip: release temporary list RHS owners in scalar fast path
fglock Oct 20, 2026
531b1b0
wip: add weak scalar metadata to owner trace dumps
fglock Oct 20, 2026
6ea8ce5
wip: report array metadata for retained owner traces
fglock Oct 20, 2026
976a4ea
wip: identify live argument arrays in owner traces
fglock Oct 20, 2026
3956cca
wip: trace the origin of retained argument arrays
fglock Oct 20, 2026
070c3e4
wip: include active Perl sub in retained array trace
fglock Oct 20, 2026
66b32e4
wip: trace Mojolicious call-site argument arrays
fglock Oct 20, 2026
228e19c
wip: trace controller owners through list assignment
fglock Oct 20, 2026
90bb8fb
wip: fix list trace lambda parameter name
fglock Oct 20, 2026
df844c0
wip: validate interpreter container ownership before cleanup
fglock Oct 20, 2026
594ded7
wip: transfer slurped list values into array ownership
fglock Oct 20, 2026
07d188b
wip: preserve tracked array elements during slurp assignment
fglock Oct 20, 2026
89c0bef
wip: trace array slots holding leaked referents
fglock Oct 20, 2026
9a010db
wip: release unreachable interpreter closure captures
fglock Oct 20, 2026
73aa691
wip: trace chained closure cleanup decisions
fglock Oct 20, 2026
578434f
wip: exclude closure bookkeeping from interpreter root scans
fglock Oct 20, 2026
0a827b6
wip: check external roots for temporary closure cleanup
fglock Oct 20, 2026
5c1fb52
wip: trace root paths for chained interpreter closures
fglock Oct 20, 2026
31bd795
wip: include lexical roots in closure trace paths
fglock Oct 20, 2026
bca6141
wip: trace scalar holders of chained closures
fglock Oct 20, 2026
b6108ec
wip: release temporary closure lexicals before capture cleanup
fglock Oct 20, 2026
5d8bbb2
wip: clean registered closure holders at interpreter frame exit
fglock Oct 20, 2026
76e6c20
fix: release temporary interpreter closure captures at frame exit
fglock Oct 20, 2026
2af7a5f
fix: preserve captures in non-owning interpreter code slots
fglock Oct 20, 2026
921510a
fix: retain regex callbacks returned from interpreter frames
fglock Oct 20, 2026
ad5b3b4
build: keep expanded unit suite within worker limits
fglock Oct 20, 2026
39bb1da
docs: update ownership regression candidate status
fglock Oct 20, 2026
f7cb667
docs: record published ownership candidate
fglock Oct 20, 2026
33b7800
fix: implement writable Internals::SvREFCNT
fglock Oct 20, 2026
b1711b6
docs: note writable SvREFCNT compatibility
fglock Oct 20, 2026
62c24a0
fix: preserve SvREFCNT usage validation
fglock Oct 20, 2026
eea704e
fix: accept scalarized empty aggregate in SvREFCNT setter
fglock Oct 20, 2026
8ef1316
ci: prepare POSIX temp path on Windows
fglock Oct 20, 2026
5a57009
docs: refresh ownership migration progress
fglock Oct 20, 2026
0e0a33c
ci: prepare root-relative tmp directory on Windows
fglock Oct 20, 2026
97a5312
ci: run Windows unit shards concurrently
fglock Oct 20, 2026
5c2a876
docs: record green ownership validation
fglock Oct 21, 2026
c7f6a22
test: cover hash element scalar proxy ownership
fglock Oct 21, 2026
b60cb67
test: assert hash proxy refcount transitions
fglock Oct 21, 2026
171580e
test: assert array proxy refcount transitions
fglock Oct 21, 2026
6709cfc
test: cover aggregate scalar alias ownership
fglock Oct 21, 2026
e911548
perf: prove aggregate owner chains without root scans
fglock Oct 21, 2026
0a9d7ef
perf: reuse owner-slot proofs for destroy rescue
fglock Oct 21, 2026
225fd0e
docs: update ownership migration status
fglock Oct 21, 2026
e269ba6
fix: retain scalar-reference contents in aggregates
fglock Oct 21, 2026
93461e5
test: cover localized scalar-reference ownership
fglock Oct 21, 2026
5f36a89
fix: retarget scalar-reference ownership on cell assignment
fglock Oct 21, 2026
b67d425
fix: avoid duplicate scalar cell ownership after retarget
fglock Oct 21, 2026
b048ff5
docs: record scalar-reference ownership progress
fglock Oct 21, 2026
566c804
docs: record HTML::Tree phase 2 integration result
fglock Oct 21, 2026
d8259c7
wip: count scalar-reference contents once per cell
fglock Oct 21, 2026
f11c2c7
docs: record scalar-reference alias ownership progress
fglock Oct 21, 2026
4861a65
test: cover array replacement ownership counts
fglock Oct 21, 2026
22efbd2
fix: retain referents shared by aggregate aliases
fglock Oct 21, 2026
cc904d9
docs: record cross-container alias ownership fix
fglock Oct 21, 2026
01f7a17
test: cover aggregate clears with shared scalar cells
fglock Oct 21, 2026
666c15a
docs: record aggregate alias clear coverage after rebase
fglock Oct 21, 2026
2adc55f
fix: preserve HTML tree cleanup during array shifts
fglock Oct 21, 2026
e6e18be
docs: record aggregate shift lifecycle regression fix
fglock Oct 21, 2026
276e2a3
fix: retain interpreter callbacks through code state roots
fglock Oct 21, 2026
e0bcebc
docs: record interpreter callback lifecycle fix
fglock Oct 21, 2026
500d0e8
test: cover hash proxy owner slot transfers
fglock Oct 22, 2026
b17c977
refactor: track direct scalar owner slots
fglock Oct 22, 2026
464a770
refactor: use scalar slots for weak sweep roots
fglock Oct 22, 2026
dfc5781
refactor: restore scalar owners from slots
fglock Oct 22, 2026
e04f647
refactor: count scalar owners across owner ledgers
fglock Oct 22, 2026
8eba139
refactor: include scalar slots in destruction owner checks
fglock Oct 22, 2026
60a07ab
fix: synchronize scalar owner ledger snapshots
fglock Oct 22, 2026
677f1f6
ci: trigger validation for owner ledger fix
fglock Oct 22, 2026
9139c3b
fix: synchronize destroyable closure owner index
fglock Oct 22, 2026
009b76a
perf: follow scalar slots in aggregate owner recovery
fglock Oct 22, 2026
27d6df4
perf: prove roots through scalar reference contents
fglock Oct 22, 2026
c7f6f64
docs: update ownership rewrite progress
fglock Oct 22, 2026
6248539
refactor: trust scalar owner slot during aggregate recovery
fglock Oct 22, 2026
b9c05ec
docs: record ownership shard validation
fglock Oct 22, 2026
a395432
refactor: count explicit scalar owner slots
fglock Oct 23, 2026
210cbf7
docs: record green owner-slot validation
fglock Oct 23, 2026
c948d02
refactor: release scalar owners through explicit slots
fglock Oct 23, 2026
5d2c18f
docs: record scalar cleanup validation
fglock Oct 23, 2026
759302b
refactor: trust scalar slots in array cleanup
fglock Oct 23, 2026
84ddd5b
docs: record aggregate cleanup validation
fglock Oct 23, 2026
5578d44
refactor: trust scalar slots in recursive cleanup
fglock Oct 23, 2026
136ae11
docs: record recursive cleanup validation
fglock Oct 23, 2026
baedb14
fix: honor scalar slots throughout lifecycle cleanup
fglock Oct 23, 2026
fb60832
merge: reconcile ownership work with current master
fglock Oct 23, 2026
b0483f4
fix: honor scalar slots during weak lifecycle sweeps
fglock Oct 23, 2026
5d422e3
fix: honor scalar slots in stash and clone cleanup
fglock Oct 23, 2026
64796b7
fix: consult scalar slots in root and temporary cleanup
fglock Oct 23, 2026
d0965e8
fix: release bytecode temporaries through scalar slots
fglock Oct 23, 2026
c1167ff
fix: preserve scalar slots through dynamic state changes
fglock Oct 23, 2026
9c93d59
fix: include glob slots in scalar scope exit
fglock Oct 23, 2026
c3a26f9
docs: update ownership migration progress
fglock Oct 23, 2026
76d88c0
docs: clarify ownership query boundaries
fglock Oct 23, 2026
ecc5efd
fix: transfer list-assignment array tail ownership
fglock Oct 23, 2026
3919a12
docs: record list-assignment ownership validation
fglock Oct 23, 2026
85dadda
fix: preserve hash ownership in list-assignment tails
fglock Oct 23, 2026
993d587
docs: record hash-tail ownership validation
fglock Oct 23, 2026
15601c6
docs: sync ownership progress with pushed head
fglock Oct 23, 2026
29372ca
fix: release scalar-value ownership through its slot
fglock Oct 23, 2026
9922a0f
docs: record scalar-value undef ownership migration
fglock Oct 23, 2026
4b3c26e
docs: sync ownership status with PR push
fglock Oct 23, 2026
2c05509
fix: carry scalar owner slots through deferred release
fglock Oct 23, 2026
da2c8a0
docs: record deferred scalar slot migration
fglock Oct 23, 2026
fad2199
fix: release tail-call scalar owners through slots
fglock Oct 24, 2026
7d85029
docs: record tail-call scalar slot migration
fglock Oct 24, 2026
ca58da7
perf: reuse aggregate owner proofs during recovery
fglock Oct 24, 2026
2fde956
docs: record aggregate owner proof cache result
fglock Oct 24, 2026
6730377
perf: scan aggregate owner slots once during recovery
fglock Oct 24, 2026
c8a9e66
docs: record single-pass owner recovery result
fglock Oct 24, 2026
c211166
refactor: release weakened scalar owners through slots
fglock Oct 24, 2026
4780b80
docs: record weakening owner-slot migration
fglock Oct 24, 2026
6a4d658
refactor: reacquire unweakened scalar owners through slots
fglock Oct 24, 2026
244b855
docs: record paired weaken owner-slot result
fglock Oct 24, 2026
09988c5
refactor: acquire container scalar owners through slots
fglock Oct 24, 2026
395cd28
docs: record aggregate store slot acquisition
fglock Oct 24, 2026
bb1d9d1
docs: refresh ownership migration status
fglock Oct 24, 2026
2a2b9fe
refactor: acquire scalar stores through owner slots
fglock Oct 24, 2026
cb46e56
docs: record scalar-store owner-slot acquisition
fglock Oct 24, 2026
723e56d
docs: refresh scalar-store migration status
fglock Oct 24, 2026
e626aad
refactor: release overwritten scalar owners through slots
fglock Oct 24, 2026
8e28ad4
docs: record scalar overwrite slot release
fglock Oct 24, 2026
df6975e
fix: release localized scalar owner slot on restore
fglock Oct 24, 2026
5d82568
docs: record localized scalar restore slot release
fglock Oct 24, 2026
a547b89
fix: release global localization owner slots
fglock Oct 24, 2026
e5c797d
docs: record global localization slot release
fglock Oct 24, 2026
a0ff791
fix: release proxy localized scalar owner slots
fglock Oct 24, 2026
45bc5af
docs: record proxy restore owner-slot release
fglock Oct 24, 2026
e9c32a6
refactor: release list materialized owners through slots
fglock Oct 24, 2026
e45396f
docs: record list materialized owner slot release
fglock Oct 24, 2026
54ca515
fix: release stash scalar owners through slots
fglock Oct 24, 2026
9839772
docs: record stash scalar owner-slot release
fglock Oct 24, 2026
108c060
fix: balance DESTROY argument owner slots
fglock Oct 24, 2026
b9382db
docs: record DESTROY argument owner-slot balance
fglock Oct 24, 2026
21753fc
refactor: track tie wrapper owners with explicit slots
fglock Oct 24, 2026
831b8c6
docs: record tie wrapper ownership migration
fglock Oct 24, 2026
571d471
wip: snapshot ownership migration before resumed diagnosis
fglock Oct 24, 2026
ce221f6
test: isolate interpreter capture lifetime regression
fglock Oct 24, 2026
e8d1804
wip: snapshot ownership progress notes before resuming diagnosis
fglock Oct 24, 2026
9adc112
fix(interpreter): preserve captured lexical owners on return
fglock Oct 24, 2026
4997a78
docs: record captured cleanup validation and recovery audit
fglock Oct 24, 2026
b299b03
fix: preserve durable owners in void call results
fglock Oct 24, 2026
a9aa8fd
fix: invalidate stale roots for displaced referents
fglock Oct 24, 2026
c269bf7
docs: record ownership regressions passing without recovery scan
fglock Oct 24, 2026
bf41977
docs: record recovery-disabled unit audit
fglock Oct 24, 2026
e888980
chore: remove aggregate owner recovery diagnostic bypass
fglock Oct 25, 2026
b6ba247
docs: close recursive builder interpreter blocker
fglock Oct 25, 2026
586bfbf
docs: trace untyped deferred owner release candidates
fglock Oct 25, 2026
e199cd6
fix: remove unreachable scalar contents decrement fallback
fglock Oct 25, 2026
184c3f1
test: cover abandoned method invocant ownership
fglock Oct 25, 2026
228bb9e
fix: release Storable argument owners through scalar slots
fglock Oct 25, 2026
af67d25
fix: transfer scalar owner slots through postfix results
fglock Oct 25, 2026
d7b3aef
docs: record global CODE ownership boundary
fglock Oct 25, 2026
5884a6b
fix: release tracked global CODE owner slots on undef
fglock Oct 25, 2026
87cf235
fix: release localized glob CODE owner slots
fglock Oct 25, 2026
5bb309f
docs: clarify aggregate owner slot migration boundary
fglock Oct 25, 2026
f77e066
fix: release owners after middle array deletion
fglock Oct 25, 2026
f792561
docs: record array delete ownership progress
fglock Oct 25, 2026
734f25d
docs: record focused lifetime regression results
fglock Oct 25, 2026
d444be9
fix: preserve borrowed owners on middle array delete
fglock Oct 25, 2026
3e01c59
fix: restore borrowed ownership after local array delete
fglock Oct 25, 2026
375d2fa
test: cover owned slot restoration after local delete
fglock Oct 25, 2026
0a755f9
fix: preserve aggregate cell values through refaliases
fglock Oct 25, 2026
17990d3
docs: map ownership sources and release paths
fglock Oct 25, 2026
437b38c
docs: trace deferred ownership producers
fglock Oct 25, 2026
64746a1
fix: restore scalar-reference contents owners during recovery
fglock Oct 25, 2026
a043a90
wip: snapshot ownership progress before owner-slot acquisition work
fglock Oct 25, 2026
a6a9cb9
refactor: acquire cloned and glob scalar owners through slots
fglock Oct 25, 2026
2a2a44a
docs: record scalar owner-slot migration progress
fglock Oct 25, 2026
baf4e53
fix: count rooted tie wrappers when handlers become tracked
fglock Oct 25, 2026
33bad42
docs: record direct tie-wrapper promotion
fglock Oct 25, 2026
98ab2e6
debug: trace aggregate owner recovery provenance
fglock Oct 25, 2026
6a47bb8
docs: record extended lifetime regression evidence
fglock Oct 25, 2026
da0835c
debug: trace aggregate recovery owner slot identities
fglock Oct 25, 2026
9f65273
docs: record tempfile owner slot trace
fglock Oct 25, 2026
2885680
debug: trace recovery owner root chains
fglock Oct 25, 2026
68e52b8
debug: measure recovery owner root queries
fglock Oct 25, 2026
98314b0
debug: identify capped recovery owner root walks
fglock Oct 25, 2026
4ac0b0d
debug: allow filtered owner recovery scan bypass
fglock Oct 25, 2026
69a0ab7
docs: record owner recovery scan bypass audit
fglock Oct 25, 2026
2917a03
docs: update owner recovery audit status
fglock Oct 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 19 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
.PHONY: all clean test test-unit test-cpan-tester test-interpreter check-thread-test-sources check-thread-core-test-sources check-thread-ecosystem-test-sources check-thread-regex-test-sources test-thread-tooling test-threads test-threads-core test-threads-core-platform test-threads-core-mode test-threads-windows test-threads-regex test-threads-release test-threads-ecosystem test-bundled-modules test-cpan-distroprefs test-cpan-release-acceptance test-exiftool test-all test-gradle test-gradle-unit test-gradle-all test-gradle-parallel test-maven-parallel build run wrapper check-java-gradle dev ci sbom sbom-java sbom-perl sbom-clean check-links perl5-update perl5-sync perl5-sync-check

PERL ?= perl
GRADLE_ARGS ?=
ifeq ($(OS),Windows_NT)
# The Windows unit shards each take longer than the 75-minute CI step budget
# when only two Gradle workers are available. Run the five balanced shards
# concurrently on the hosted runner while keeping the existing per-worker heap cap.
GRADLE_ARGS ?= --max-workers=4
else
GRADLE_ARGS ?= --max-workers=2
endif
# A persistent daemon keeps the priority from the invocation that first
# started it. Use a single-use Gradle process so workers inherit the
# launcher's niceness (for example, `nice -n 19 make`).
Expand Down Expand Up @@ -123,13 +130,23 @@ perl5-sync-check:
$(PERL) dev/import-perl5/update_perl5.pl --sync --verify-idempotent $(if $(FILTER),--filter "$(FILTER)",)

# CI build - optimized for CI/CD environments
ci: check-java-gradle
ci: prepare-windows-posix-tmp check-java-gradle
ifeq ($(OS),Windows_NT)
gradlew.bat $(GRADLE_LAUNCH_ARGS) build -x test testUnitParallel --parallel --stacktrace
else
./gradlew $(GRADLE_LAUNCH_ARGS) build -x test testUnitParallel --parallel --stacktrace
endif

# Some Perl unit scripts use POSIX /tmp paths. On Windows, Java resolves
# these as root-relative paths on the current drive; create that directory on
# the runner before compiling and executing the suite.
prepare-windows-posix-tmp:
ifeq ($(OS),Windows_NT)
powershell -NoProfile -NonInteractive -Command "New-Item -ItemType Directory -Force -Path (Join-Path ([System.IO.Path]::GetPathRoot((Get-Location).Path)) 'tmp') | Out-Null"
else
@:
endif

# Check Java/Gradle compatibility and fix if needed
# For Java 25+, we need Gradle 9.1.0+ (see https://docs.gradle.org/current/userguide/compatibility.html)
# Note: On Windows CI, Make uses Git Bash, so we use bash-compatible syntax throughout
Expand Down
36 changes: 31 additions & 5 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -350,10 +350,10 @@ tasks.withType(Test).configureEach {
// deprecation banner while retaining the tested Netty allocation path.
jvmArgs += '--sun-misc-unsafe-memory-access=allow'
// The Perl test corpus loads sizeable bundled tables (for example
// I18N::LangTags via Test2). A 1 GiB Gradle worker can be terminated by
// the host before it reports an OOME; keep it below the command-line
// default while providing enough headroom for one shard.
maxHeapSize = '2g'
// I18N::LangTags via Test2). A 1 GiB Gradle worker can be terminated by
// the host before it reports an OOME. The expanded lifetime regression
// suite also needs room for shard 0's in-process tests.
maxHeapSize = '3g'
}

// Enable native access for all Java execution tasks
Expand Down Expand Up @@ -833,10 +833,36 @@ def homeIntegrationTask = tasks.register('testPerlOnJavaHomeIntegration', Test)
mustRunAfter tasks.named('testJoni')
}

def websocketLifetimeTask = tasks.register('testUnitWebsocketLifetime', Test) {
group = 'verification'
description = 'Runs the isolated Mojolicious WebSocket lifetime regression'

useJUnitPlatform {
includeTags 'unit'
excludeTags 'full'
}

systemProperty 'test.shard.index', parallelShards
systemProperty 'test.shard.total', parallelShards + 1

testClassesDirs = sourceSets.test.output.classesDirs
classpath = sourceSets.test.runtimeClasspath
include '**/PerlScriptExecutionTest.class'

mustRunAfter unitShardTasks.collect { tasks.named(it) }
onlyIf {
jperlTestShardProp.get().isEmpty() || jperlTestShardProp.get() == "$parallelShards"
}
}

homeIntegrationTask.configure {
mustRunAfter websocketLifetimeTask
}

tasks.register('testUnitParallel') {
group = 'verification'
description = 'Runs unit tests in parallel across multiple JVMs. Usage: gradle testUnitParallel --parallel'
dependsOn unitShardTasks
dependsOn unitShardTasks + [websocketLifetimeTask]
dependsOn testJoni
dependsOn verifyJoniPackaging
dependsOn homeIntegrationTask
Expand Down
Loading