1* Fixes
2
3BC_heavy: sanify INC before the compilers pollute them (toddr,atoomic)
4attribute handlers (i.e. run-time attributes)
5compile-time perlio layers (e.g. use open ...)
6compile-time re-eval groups (?{})
7smartmatch subrefs
8compile-time stash-magic delete renames to ANON
9use bytes AUTOLOAD handling
10CvOUTSIDE for ordinary subs
11
12CC backend: goto (needs test), some recursive calls fail
13
14* Features
15
16modularize (-m) for faster link times, buildcc, rperl integration
17    (branch modul)
18    * add new build tool which takes module names and paths from the
19      compiler, check timestamps and create/update compiled modules.
20    * filter out non-module related code in the compiler by looking at
21      the CopFILE.
22backport improvements from oldmaster:
23  do not define symbols which are arguments of define (destructive
24   check)
25  store static bless packagenames
26run-time label lookup (fixed)
27skip code after BEGIN goto (usually Carp including B in some AUTOLOAD block, issue 61)
28type checking: Devel::TypeCheck
29compile time v. runtime initialisation (done):
30  execute run-time BEGIN blocks for side-effects such as print or chdir,
31  use and require not.
32save PMOPs in compiled form (5.10thr missing)
33selection of what to dump (done)
34options for cutting out line info (COP elimination) etc. (-fcop, sortcv's)
35shared constants: share_hek, constpv (done)
36check module dependencies, vs. link libs static, not via DynaLoader (done)
37check Bytecode op coverage in the tests, should cover all ops 0-142
38ByteLoader compatibility: version, platform. eventually Bytecode version
39  portability (test with 5.6 on cygwin, partially done)
40check CC op coverage, add tests
41
42* Optimizations
43
44-fro-inc read-only INC paths. not the AV, run-time savepvn (done)
45-fno-destruct skip optree and sv destruction at all, leave it to the OS (done)
46collect static strings beforehand, such as GvNAMEs, COP FILENAME (for pre 5.10)
47  and GV method names package::name. (done)
48proper static init of PMOP SV's (only works dynamic >= 5.10)
49proper static init of PVBM/FBM (done)
50compile-time initialisation of AvARRAYs (improved with -fav-init and
51   -fav-init2)
52
53collapse LISTOPs to UNOPs or BASEOPs
54compile-time qw(), constant subs
55variable types: global analysis of variables, type hints etc.
56  understand type decl and attrs
57    my int $i; my $j : int;
58  Devel::TypeCheck instead of magic variable _ir, ... suffices
59  e.g. mark IVonly SV's and magic/flags change functions and
60    optimize all op subtrees for the compiled backends to use direct ints.
61  understand MooseX::Method::Signatures and MooseX::Lexical::Types declarations
62demand-loaded bytecode (leader of each basic block replaced by an op
63  which loads in bytecode for its block)
64fast sub calls for CC backend
65tailcall optimization (entersub -> leavesub => goto)
66inline more small pp ops: enter, reset, stringify, ... (CC -finline-ops)
67