Changes for version v0.1.0 - 2025-05-24

  • Initial version as a fork from Want, which does not seem maintained anymore.
  • Added context() function to determine the caller's context (RT#16670).
  • Fixed various bugs from Want:
    • RT#4628: Segfault in Set::Array Now returns undef in invalid contexts.
    • RT#57980: Segmentation Fault in Tied Module Now returns undef in tied contexts.
    • RT#68350: Segfault in Overloaded Operator '>' Now returns undef in invalid contexts.
    • RT#90062: Segfault Under Threads Now returns undef in invalid thread contexts.
    • RT#2196: Bus Error Inside Tie Now returns undef in tied contexts; version requirement updated to 5.006 (inherited from Want-0.29).
    • RT#104042: Add OpSIBLING Support Already fixed in Want-0.26 and inherited.
    • RT#133060: Test Failure When File Path Contains Space Not applicable in our test suite.
    • RT#136651: Segmentation Fault When Used Inside a Thread Now returns undef in invalid thread contexts.
    • RT#47963: want() Confused by Prototypes Documented limitation in POD under LIMITATIONS; fix requires XS-level changes not implemented in this release.
  • Fixed lvalue reference assignment issue on Perl < 5.12.0 (e.g., \(scalar g(...)) not tying to underlying variable); added version guard in t/02.all.t.
  • Fixed first_multideref_type() usage on Perl < 5.22.0 (OP_MULTIDEREF introduced in 5.22.0); added version guards in Want.pm and t/02.all.t.
  • Fixed critical bug in double_return() under Perl 5.22.x and 5.24.x that caused double-free errors in lvalue assignment contexts. This was caused by unsafe freeing of op tree structures reused by Perl. The workaround is version-guarded and safe.
  • Marked double_return() as stable and safe for use in all supported versions.
  • All tests now pass successfully across Perl 5.8.8 through 5.38.
  • Confirmed correctness of disarm_temp(), copy_rval(), and copy_rvals() logic on stack markers.
  • Known limitation: In Perl 5.36+, want_lvalue() may fail to detect lvalue context in some scenarios (e.g., inside eval) due to CxLVAL unreliability (affects t/11.rreturn.t tests 7 and 14).
  • Modernised test suite with Test::More.
  • Added detailed comments to all XS functions in Wanted.xs and FirstMultideref.xsh for better documentation.

Modules

Extended caller context detection