Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

file 54 lines (47 sloc) 2.464 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
* 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
NV overflow initialisation analog to ivx (ExtUtils::CBuilder)
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;)
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)
Something went wrong with that request. Please try again.