Fix Math-BigInt chained temporaries and arithmetic#709
Conversation
|
Updated this PR to include PR #710 for combined testing. Included commits:
Current verification before push:
|
|
Combined verification result after including PR #710:
Focused check:
|
8fe7d2d to
1f4b7b9
Compare
|
Update after rebasing and force-with-lease pushing PR #709 to 1f4b7b9. Included the PR #710 YAML commits on this branch:
Additional fixes in the latest commit:
Verification after rebase:
Log compare for PR7027 vs PR709:
GitHub CI restarted from the new pushed head and is currently running. |
|
Updated PR #709 with commit The four non-0/0 compare regressions are restored against the PR7027 baseline: Additional verification: The focused four-file rerun log is |
|
Updated PR #709 with the DBIx::Class leak-tracer reproducer and the tail-call alias cleanup fix. Verification run locally:
I also reran |
Keep localized global restore cleanup scoped to the scalar installed by local(). This prevents foreach aliasing of localized $_ from corrupting method-chain temporaries. Invalidate bless-id overload classification when method and MRO caches are invalidated. This lets Math::BigInt::Calc inherit overloads after @isa is populated, keeping large arithmetic operands distinct. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
- Prevent special variables ($_, $/, $\, etc.) from being package-qualified in IdentifierParser
When a bareword :: separator follows a single-letter special variable, treat it as a separate
bareword string rather than continuing to parse as part of the variable name
- Fix ::identifier bareword handling in ParsePrimary
Only treat ::identifier as a function call if it has explicit parentheses (::foo()).
All other ::identifier patterns are now treated as bareword strings.
This ensures barewords in expression contexts like &{$_::e} remain as strings, not function calls.
- Exclude JAR signature files from Maven shade plugin
Prevents "Invalid signature file digest for Manifest main attributes" errors when
rebuilding with shaded dependencies
Fixes YAML test suite - now passes all 482/482 tests and 54/54 programs
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
After merging the YAML parser fix, preserve first-token tracking across package separators so qualified names such as DBD::_::common::ISA still parse while first-token special variables like $_ remain unqualified. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Keep explicit surrogate code points out of raw Java UTF-16 so adjacent Perl surrogate scalars cannot collapse into one supplementary Java code point. This fixes Unicode::Collate match length handling in illegal.t. Restore Perl leading ::sub behavior for existing main-package subs while preserving bareword fallback when the sub is missing. This removes the 0/0 core-test regressions introduced by the YAML parser merge. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Restore the four non-0/0 core-test deltas reported for PR709: - keep stash anonymization visible after method-cache invalidation - vivify implicit BEGIN globs for use/no declarations - emit the tr///r void-context warning - parse -s switches after -- for -e programs Add focused unit coverage for the engine-side regressions and Java coverage for the command-line -s parser case. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Track owned inserts into aliased argument arrays so goto &sub cleanup releases only the temporaries inserted by the trampoline, not caller-owned aliases. Add a DBIx::Class t/52leaks-style reproducer for the global bless leak tracer. Generated with Codex (https://openai.com/codex) Co-Authored-By: OpenAI Codex <codex@openai.com>
Generated with Codex (https://openai.com/codex) Co-Authored-By: OpenAI Codex <codex@openai.com>
Preserve in-flight assignment temporaries during weak-ref sweeps and stop using stale scalar-registry entries as live roots. When Scalar::Util::isweak observes DBIC-style DESTROY-rescued objects, run the full two-pass weak-ref sweep while returning the pre-sweep weak status so leak-tracer registry checks see normal weak collection instead of a corrupted slot. Generated with Codex (https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Use an explicit superclass clone call in the DBIC leak tracer regression test so it passes in the CI unit runner, where @inc only contains the bundled Perl library and jar PERL5LIB. Generated with Codex (https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Register bytecode-interpreter lexical variables with MyVarCleanupStack so weak-ref sweeps see live my scalars, hashes, and arrays the same way the JVM backend does. This prevents DBIC schema/storage weak backrefs from being cleared while a top-level my $schema is still in scope. Generated with Codex (https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Align assignment-style undef with direct undef cleanup for DBIC-style DESTROY rescue, but only for the specific object rescued by that undef. This lets HandleError callbacks see that the schema/storage owner is gone without draining other live rescued schemas. Generated with Codex (https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
12ec041 to
5d7cb81
Compare
Record the t/52leaks.t baseline and cache design for PR #709 before implementing the runtime change. Generated with [Codex](https://openai.com/codex) Co-Authored-By: Codex <codex@openai.com>
Summary
Tests
Notes