xslate / p5-Text-Xslate

Scalable template engine for Perl5
https://metacpan.org/release/Text-Xslate
Other
121 stars 47 forks source link

improves perl 5.8 support #182

Closed skaji closed 7 years ago

skaji commented 7 years ago

This PR improves perl 5.8 support.

(A) 34d26b1

Currently Xslate cannot be built on perl 5.8 with Devel::PPPort 3.33+. This commit will fix this. See also https://github.com/mhx/Devel-PPPort/issues/42

(B) f9258de

Currently t/900_bugs/030_issue71.t fails on perl 5.8.

In recent perl, SvUPGRADE(av, SVt_PVAV) makes the av AvREAL_only, so that av_fill() frees deleted elements. https://github.com/Perl/perl5/blob/v5.26.1/sv.c#L1357 https://github.com/Perl/perl5/blob/v5.26.1/av.c#L860-L865

On the other hand, in perl 5.8, SvUPGRADE(av, SVt_PVAV) does NOT make the av AvREAL_only, so that av_fill() does NOT free deleted elements, and it implies memory leaks. https://github.com/Perl/perl5/blob/perl-5.8.5/sv.c#L1462-L1476 https://github.com/Perl/perl5/blob/perl-5.8.5/av.c#L767-L772

The commit f9258de makes newframe AvREAL_only (= AvREIFY_off + AvREAL_on) explicitly.

(C) 2e5392a

Use version->declare syntax; otherwise we'll get:

❯ XSLATE=xs perl -Mblib -MText::Xslate -e1
Text::Xslate object version v3.4.0 does not match bootstrap parameter 3.4.0 at /Users/skaji/env/plenv/versions/5.8.5/lib/perl5/5.8.5/darwin-2level/DynaLoader.pm line 253.