The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
* Fixes

fix Dynaloader arg for dl_init()
'n' magic (shared_scalar) e.g. t/testm.sh Test::Tester
del_backref cvgv since 5.13
run-time label lookup
store_cop_label for 5.12 windows/AIX only

CC backend: goto (needs test), 
sort with non-default comparison. 
cc_queue error with the non-seperate sort optree, test 18

check failing modules Attribute::Handlers B::Hooks::EndOfScope
check perlcc failing with File::Temp
proper destruction of vars in END blocks on -O2
improve XSUB handling (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
signed/unsigned problems with NV (and IV?) initialisation and elsewhere?
CvOUTSIDE for ordinary subs
DATA filehandle for C-compiled program (almost done)
method_named packagepv quirks at compile-time. Are run-time pkg names tested?

* Features

run-time label lookup
type checking: Devel::TypeCheck
compile time v. runtime initialisation:
  execute run-time BEGIN blocks for side-effects such as print or chdir, 
  use and require not.
save PMOPs in compiled form
selection of what to dump
options for cutting out line info (COP elimination) etc. (-fcop)
shared constants (share_hek, constpv)
check module dependencies, vs. link libs static, not via DynaLoader
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

-fro-inc read-only INC paths. not the AV, run-time savepvn (done)
-fno-destruct skip optree and sv destruction at all, leave it to the OS (done)
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)
proper static init of PVBM/FBM (almost done, just 5.8.9 not)
compile-time initialisation of AvARRAYs (improved with -fav-init and -fav-init2)
collapse LISTOPs to UNOPs or BASEOPs
compile-time qw(), constant subs
variable types: global analysis of variables, type hints etc.
  understand type attrs
    my $i : Cint; 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 more small pp ops: enter, reset, stringify, ... (CC -finline-ops)