The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

Changes for version 1.45_06 - 2014-02-24

  • Added global destruction, improved -O4 and CC
  • C: reset PL_stack_sp on init (was one too far). no effects on code. Implement global destruction via sv_clean_objs and my_curse on -O3, resp. prepend static svs PL_sv_arenaroot for sv_clean_objs with a fake sv_list[0]. (#197, #208, #254, #280) Call DESTROY methods for all our global static SVs (i.e. "global destruction"), fixes #197, #280, #282 Increment GV->FORM refcounts as they cannot be destructed, analog to CV Call PL_exitlist functions with -O3 Make the lexical cop_warnings pointer dynamic, because on cv_undef (scope exit, assign, exit, die, ...) CvROOT and all its kids are freed, ignoring op_latefreed. The content of the warning is still a static string - and leaks on perl, but we don't care. -fwarn-sv is now always set, just not with MSVC on Windows. The warnings are then directly set, not in a tight loop afterwards, because the value is needed for the dynamic init. Improve -O4 by keeping all CvSTART cops Keep internal packages if used in the source code, e.g. mro (#300) Fix the order of PerlIO_cleanup, after global destruction (#302, #303) Since 5.18 padlists are now all dynamic, due to undef issues in non-local exits (#304) Add -fno-dyn-padlist to -O4 to keep static padlists on 5.18. Dynamic padlists are needed to prevent from cv_undef crashes on static padlists when cleaning up the stack on non-local exits, like die or exit or subs on the compile stack as with Attribute::Handler (#169, #304). Previously only END block function padlists were dynamic (#298).
  • CC (1.15): Skip saving non-existing methods analog to B::C 1.43_06 (CC test 50) Fix failing CopFILE_free and CopSTASH_free in END blocks with threads (#296, CC test 48) Handle duplicate function names, like multiple END blocks or anon functions (#297)

Documentation

ByteLoader bytecode versions
Autogenerated data about Perl ops, used to generate bytecode
Introduction to the Perl Compiler-Translator
The Perl op tree
Need help with the perl compiler, emit C or JIT, blabla
Assemble Perl bytecode
generate executables from Perl programs

Modules

Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
Autogenerated data about Perl ops, used to generate bytecode
load byte compiled perl code
show what stashes are loaded
Assemble Perl bytecode
Walk basic blocks
Perl compiler's bytecode backend
Perl 5.6 compiler's bytecode backend
Perl compiler's C backend
Perl compiler's optimized C translation backend
Disassemble Perl bytecode
Stack and type annotation helper module for the CC backend

Provides

in lib/B/C.pm
in lib/B/C.pm
in lib/B/Disassembler.pm
in lib/B/C.pm
in lib/B/CC.pm
in lib/B/C.pm
in lib/B/CC.pm