* Fixes -DF Flags crashes with newpkg do not throw away non-B:C loaded packages not to miss run-time added methods ('all_bc_pkg') 'n' magic (shared_scalar on 5.10.0 and earlier perls) e.g. t/testm.sh Test::Tester run-time label lookup (done for the easy and documented limitations) store_cop_label for 5.12 windows/AIX only (=> p5p; needs CORE patch) CC backend: goto (needs test), improve XSUB handling (perlcc, both static and dynamic, needs tests) sv_magic can do SvREFCNT_inc(obj) which messes up precalculated refcounts allocation of XPV[INAHC]V structures needs fixing: Perl tries to free them, whereas the compiler expects them to be linked to a xpv[inahc]v_root list the same as X[IPR]V structures. ref counts perl_parse replacement CvOUTSIDE for ordinary subs * Features Detect ExtUtils::Constant autoloaded "Your vendor has not defined" functions stubs. E.g. "WARNING: &Socket::AF_DATAKIT not found" optimize static or typed method calls. How-perl-compiles-subs-and-methods.md detect typed objects (my Class $obj = new Class;) (partially done) modularize (-m) for faster link times BEGIN goto optim: skip code after BEGIN goto usually Carp including B in some AUTOLOAD block, issue 61 save PMOPs in compiled form (?) options for cutting out line info (COP elimination) etc. (fix -fcop) check Bytecode op coverage in the tests, should cover all ops 0-142 ByteLoader compatibility: version, platform. eventually Bytecode version portability (test with 5.6 on cygwin, partially done) check CC op coverage, add tests * Optimizations collect static strings beforehand, such as GvNAMEs, COP FILENAME (for pre 5.10) and GV method names package::name. (partially done) proper static init of PMOP SV's (only works dynamic >= 5.10) collapse LISTOPs to UNOPs or BASEOPs compile-time qw(), constant subs variable types: global analysis of variables, type hints etc. understand type decl and attrs my int $i; my $j : int; Devel::TypeCheck instead of magic variable _ir, ... suffices e.g. mark IVonly SV's and magic/flags change functions and optimize all op subtrees for the compiled backends to use direct ints. understand MooseX::Method::Signatures and MooseX::Lexical::Types declarations demand-loaded bytecode (leader of each basic block replaced by an op which loads in bytecode for its block) fast sub calls for CC backend tailcall optimization (entersub -> leavesub => goto) inline functions and methods