123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- * Fixes
- bytecode for 5.18 threaded and 5.20 (suspect: walkoptree upstream)
- empty CVs are no proper coderefs
- use bytes AUTOLOAD handling
- CvOUTSIDE for ordinary subs
- -fwalk-all for recursive deep inspection
- method_named packagepv quirks at compile-time. Are run-time pkg names
- CC backend: goto (needs test)
- * Features
- modularize (-m) for faster link times, buiildcc, 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)
|