12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- * Fixes
- attribute handlers (i.e. run-time attributes)
- compile-time perlio layers (e.g. use open ...)
- compile-time re-eval groups (?{})
- smartmatch subrefs
- compile-time stash-magic delete renames to ANON
- use bytes AUTOLOAD handling
- CvOUTSIDE for ordinary subs
- CC backend: goto (needs test), some recursive calls fail
- * Features
- modularize (-m) for faster link times, buildcc, rperl intergration
- backport improvements from oldmaster:
- do not define symbols which are arguments of define (destructive
- check)
- store static bless packagenames
- run-time label lookup (fixed)
- skip code after BEGIN goto (usually Carp including B in some AUTOLOAD block, issue 61)
- type checking: Devel::TypeCheck
- compile time v. runtime initialisation (done):
- execute run-time BEGIN blocks for side-effects such as print or chdir,
- use and require not.
- save PMOPs in compiled form (5.10thr missing)
- selection of what to dump (done)
- options for cutting out line info (COP elimination) etc. (-fcop, sortcv's)
- shared constants: share_hek, constpv (done)
- check module dependencies, vs. link libs static, not via DynaLoader (done)
- 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. (done)
- proper static init of PMOP SV's (only works dynamic >= 5.10)
- proper static init of PVBM/FBM (done)
- 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 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 more small pp ops: enter, reset, stringify, ... (CC -finline-ops)
|