Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
b0c3aed
Add ControlFlowType enum, ControlFlowMarker class, and RuntimeControl…
fglock Nov 6, 2025
e7b78e9
Modify EmitControlFlow to return marked RuntimeList for non-local con…
fglock Nov 6, 2025
48d5cd5
Add control flow check infrastructure (disabled) - WIP Phase 3
fglock Nov 6, 2025
10f631b
Phase 2 complete: Non-local control flow via tagged returns (99.8%)
fglock Nov 6, 2025
937c0b3
Fix plan: Skip Phase 3 (call-site checks), renumber to make straightf…
fglock Nov 6, 2025
86daaee
Phase 3 partial: Add TAILCALL trampoline at returnLabel (99.8% mainta…
fglock Nov 6, 2025
c03f76f
Phase 3: Tail call trampoline working, call-site checks deferred
fglock Nov 6, 2025
28f39a0
feat: Add feature flags and Phase 3 loop handler infrastructure
fglock Nov 6, 2025
0d1cccb
feat: Implement Phase 4 (Top-Level Safety)
fglock Nov 6, 2025
4a8a369
feat: Propagate isMainProgram flag to code generation
fglock Nov 6, 2025
1f5bc8b
feat: Add source location tracking to control flow markers
fglock Nov 6, 2025
5544bbc
feat: Pass source location to RuntimeControlFlowList
fglock Nov 6, 2025
065bc87
docs: Streamline design doc to action-oriented plan
fglock Nov 6, 2025
c4db263
feat: Dynamic slot allocation for control flow temp storage
fglock Nov 6, 2025
a183087
docs: Update plan with ASM frame computation findings
fglock Nov 6, 2025
e8c5a85
docs: Add critical decision document for control flow architecture
fglock Nov 6, 2025
e3bcbad
docs: Document existing SKIP workarounds to be removed
fglock Nov 6, 2025
b9ec4d0
fix: Remove top-level safety check - restored 99.8% pass rate
fglock Nov 6, 2025
0405780
docs: Update plan - Phases 5 & 6 complete (99.9% pass rate)
fglock Nov 6, 2025
c5c895d
test: Add comprehensive control flow unit tests
fglock Nov 6, 2025
fe226a3
Fix goto __SUB__ tail call by detecting it in handleGotoLabel
fglock Nov 6, 2025
326a856
Update MILESTONES.md: goto __SUB__ is now working
fglock Nov 6, 2025
bb0e5fe
Update design document: Phase 7 (Tail Call Trampoline) COMPLETE
fglock Nov 6, 2025
8c674dd
Add comprehensive comments explaining disabled features and next steps
fglock Nov 6, 2025
d5477dd
Update MILESTONES.md: Mark Phase 7 (Non-local control flow) as COMPLETE
fglock Nov 6, 2025
84084ac
Update FEATURE_MATRIX.md: Add tail call features, simplify control fl…
fglock Nov 6, 2025
055630b
docs
fglock Nov 6, 2025
cb28263
fix: Prevent RuntimeControlFlowList from being corrupted as data
fglock Nov 6, 2025
7cc0bf1
docs: Document RuntimeControlFlowList data corruption fix
fglock Nov 6, 2025
2d03783
docs: Comprehensive analysis of ASM frame computation blocker
fglock Nov 6, 2025
ee4cb82
feat: Implement runtime control flow registry for 'last SKIP' support
fglock Nov 6, 2025
b2e23ef
docs: Add comprehensive documentation for control flow registry solution
fglock Nov 6, 2025
df93fe4
Merge master into nonlocal-goto-wip: integrate bytecode verification …
fglock Jan 2, 2026
7fdd64e
Fix: Disable emitRegistryCheck to resolve bytecode verification errors
fglock Jan 2, 2026
8d51735
WIP: Investigate non-local control flow - add test case and disable E…
fglock Jan 2, 2026
c4e8ce7
Investigation: Non-local control flow blocked by ASM frame computatio…
fglock Jan 2, 2026
018cf05
Investigation: Java's RETURN approach - solves ASM but wrong semantics
fglock Jan 2, 2026
761ed7c
Investigation: Single helper method approach - no ASM errors but RETU…
fglock Jan 2, 2026
eed7747
SUCCESS: Non-local control flow working with single helper method app…
fglock Jan 2, 2026
4f1c822
Fix non-local next/last/redo semantics across subroutine calls (no ex…
fglock Jan 2, 2026
e001e8b
Fix VerifyError in parallel unit tests (avoid jumping into non-VOID l…
fglock Jan 2, 2026
c8e074f
Fix foreach continue control-flow check to avoid infinite loop
fglock Jan 2, 2026
df0e83f
Clarify loop control operators: literal labels vs dynamic expressions
fglock Jan 2, 2026
6d849e8
Make Windows CI more resilient to Gradle daemon issues
fglock Jan 2, 2026
3cb1b08
Use Gradle wrapper and add Windows-specific CI settings to prevent da…
fglock Jan 2, 2026
4ef3212
Add comments documenting Windows CI daemon workarounds
fglock Jan 2, 2026
9c327a5
Fix Windows PowerShell path syntax for gradlew.bat
fglock Jan 2, 2026
0f2be07
Switch Windows CI to Maven to avoid Gradle daemon and PowerShell path…
fglock Jan 2, 2026
1978dc4
Use Maven for both Windows and Linux CI for consistency
fglock Jan 2, 2026
984c048
Configure Maven surefire to handle System.exit() in tests
fglock Jan 2, 2026
bc0d2b2
Switch CI back to Gradle using cmd.exe for Windows to avoid PowerShel…
fglock Jan 2, 2026
a8ed577
Add Gradle wrapper files to repository for CI
fglock Jan 2, 2026
8308f8f
Remove Gradle wrapper files from repo - CI will generate them like Ma…
fglock Jan 2, 2026
636a984
Add --no-parallel and GRADLE_OPTS for Windows to prevent daemon socke…
fglock Jan 2, 2026
32f9eb5
Allow Windows CI to fail without blocking build due to persistent Gra…
fglock Jan 2, 2026
b704034
Windows CI: Use testUnit instead of full build to avoid daemon socket…
fglock Jan 2, 2026
dd8fcde
Windows CI: Add testClasses task to compile test sources before runni…
fglock Jan 2, 2026
f3c6445
Windows CI: Use 'test' task instead of 'testUnit' to ensure tests act…
fglock Jan 2, 2026
4c4db20
Windows CI: Switch to Maven to avoid Gradle daemon socket errors
fglock Jan 2, 2026
8abf5a3
Windows CI: Use assemble task only to avoid test daemon socket errors
fglock Jan 2, 2026
f23d456
Maven: Use forkCount=0 to run tests in-process and avoid fork crashes
fglock Jan 2, 2026
ca1fe21
Add 'make ci' target for CI/CD - handles Windows/Linux platform diffe…
fglock Jan 2, 2026
b267dad
Fix Makefile wrapper target to use portable shell syntax for Windows CI
fglock Jan 2, 2026
469f6cc
Windows CI: Use Maven for tests to avoid Gradle daemon socket errors
fglock Jan 2, 2026
559403e
CI: Upload Maven test results on Windows to verify tests actually ran
fglock Jan 2, 2026
44b458a
CI: Add step to print Maven test summary on Windows for visibility
fglock Jan 2, 2026
60b3b51
Windows CI: Add -X flag to Maven for verbose/debug output
fglock Jan 2, 2026
b1a6d6d
Windows CI: Only compile, skip tests due to persistent Maven/Gradle i…
fglock Jan 2, 2026
d5ce65f
Windows CI: Build jperl and run unit tests directly to avoid Maven/Gr…
fglock Jan 2, 2026
3e710f5
Fix Makefile to use bash-compatible syntax for Windows CI test loop
fglock Jan 2, 2026
e6889b1
Windows CI: Add ls to debug jperl location and use jperl.bat with ./ …
fglock Jan 2, 2026
17a7f3e
Windows CI: Use perlonjava.bat instead of jperl.bat (correct executab…
fglock Jan 2, 2026
c6d0564
Windows CI: Use jperl.bat from repo root and build shadowJar instead …
fglock Jan 2, 2026
3d4256e
Windows CI: Run tests directly with Java using classpath to avoid JAR…
fglock Jan 2, 2026
1c9a013
Fix Windows JAR path issue: Don't convert JAR resource URLs to filesy…
fglock Jan 2, 2026
7f746b3
Windows CI: Revert to using jperl.bat with shadowJar now that JAR pat…
fglock Jan 2, 2026
423b281
CI: Remove obsolete Maven test summary step and update comments
fglock Jan 2, 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
17 changes: 13 additions & 4 deletions .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,20 @@ jobs:

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
gradle-version: 8.10.2

- name: Build with Gradle
run: gradle build --no-daemon
# Use Makefile's 'ci' target which handles platform differences
# Windows: builds shadowJar and runs unit tests with jperl.bat
# Linux: full Gradle build with tests
- name: Build with Make (Windows)
if: runner.os == 'Windows'
shell: cmd
run: make ci
env:
GRADLE_OPTS: "-Dorg.gradle.daemon=false"

- name: Build with Make (Linux)
if: runner.os == 'Linux'
run: make ci

- name: Upload test results
if: failure()
Expand Down
16 changes: 9 additions & 7 deletions MILESTONES.md
Original file line number Diff line number Diff line change
Expand Up @@ -358,13 +358,15 @@ The following areas are currently under active development to enhance the functi

- **v5.42.3**: Next minor version

- Add modules: `TOML`.
- Bugfix: operator override in Time::Hires now works.
- Bugfix: internal temp variables are now pre-initialized.
- Optimization: faster list assignment.
- Optimization: faster type resolution in Perl scalars.
- Optimization: `make` now runs tests in parallel.
- Planned release date: 2026-02-10.
- Non-local control flow: `last`/`next`/`redo`/`goto LABEL`
- Tail call with trampoline for `goto &NAME` and `goto __SUB__`
- Add modules: `TOML`.
- Bugfix: operator override in Time::Hires now works.
- Bugfix: internal temp variables are now pre-initialized.
- Optimization: faster list assignment.
- Optimization: faster type resolution in Perl scalars.
- Optimization: `make` now runs tests in parallel.
- Planned release date: 2026-02-10.

- Work in Progress
- PerlIO
Expand Down
17 changes: 13 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,14 +1,23 @@
.PHONY: all clean test test-unit test-all test-gradle test-gradle-unit test-gradle-all test-gradle-parallel test-maven-parallel build run wrapper dev
.PHONY: all clean test test-unit test-all test-gradle test-gradle-unit test-gradle-all test-gradle-parallel test-maven-parallel build run wrapper dev ci

all: build

wrapper:
# CI build - optimized for CI/CD environments
ci: wrapper
ifeq ($(OS),Windows_NT)
@if not exist gradlew.bat gradle wrapper
gradlew.bat clean compileJava shadowJar --no-daemon --stacktrace
@echo "Running unit tests with jperl.bat..."
@for test in src/test/resources/unit/*.t; do \
echo "Testing $$test" && \
./jperl.bat "$$test" || exit 1; \
done
else
@test -f ./gradlew || gradle wrapper
./gradlew build --no-daemon --stacktrace
endif

wrapper:
@test -f ./gradlew || gradle wrapper

# Standard build - incremental compilation with parallel tests (4 JVMs)
build: wrapper
ifeq ($(OS),Windows_NT)
Expand Down
Loading