Todo 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. * Fixes
  2. 'n' magic (shared_scalar) e.g. t/testm.sh Test::Tester
  3. del_backref cvgv since 5.13
  4. run-time label lookup (fixed all tests, need more tests)
  5. store_cop_label for 5.12 windows/AIX only (=> p5p; needs CORE patch)
  6. CC backend: goto (needs test),
  7. check failing modules: Test::Tester with threads
  8. check perlcc failing with File::Temp
  9. proper destruction of vars in END blocks on -O2
  10. improve XSUB handling (perlcc, both static and dynamic, needs tests)
  11. sv_magic can do SvREFCNT_inc(obj) which messes up precalculated refcounts
  12. allocation of XPV[INAHC]V structures needs fixing: Perl tries to free
  13. them, whereas the compiler expects them to be linked to a xpv[inahc]v_root
  14. list the same as X[IPR]V structures.
  15. ref counts
  16. perl_parse replacement
  17. signed/unsigned problems with NV (and IV?) initialisation and elsewhere?
  18. CvOUTSIDE for ordinary subs
  19. DATA filehandle for C-compiled program (almost done)
  20. method_named packagepv quirks at compile-time. Are run-time pkg names tested?
  21. * Features
  22. modularize (-m) for faster link times
  23. run-time label lookup (fixed)
  24. skip code after BEGIN goto (usually Carp including B in some AUTOLOAD block, issue 61)
  25. type checking: Devel::TypeCheck
  26. compile time v. runtime initialisation (mostly done):
  27. execute run-time BEGIN blocks for side-effects such as print or chdir,
  28. use and require not.
  29. save PMOPs in compiled form
  30. selection of what to dump (done)
  31. options for cutting out line info (COP elimination) etc. (-fcop)
  32. shared constants: share_hek, constpv (mostly done)
  33. check module dependencies, vs. link libs static, not via DynaLoader (done)
  34. check Bytecode op coverage in the tests, should cover all ops 0-142
  35. ByteLoader compatibility: version, platform. eventually Bytecode version
  36. portability (test with 5.6 on cygwin, partially done)
  37. check CC op coverage, add tests
  38. * Optimizations
  39. -fro-inc read-only INC paths. not the AV, run-time savepvn (done)
  40. -fno-destruct skip optree and sv destruction at all, leave it to the OS (done)
  41. collect static strings beforehand, such as GvNAMEs, COP FILENAME (for pre 5.10)
  42. and GV method names package::name. (partially done)
  43. proper static init of PMOP SV's (only works dynamic >= 5.10)
  44. proper static init of PVBM/FBM (almost done, just 5.8.9 not)
  45. compile-time initialisation of AvARRAYs (improved with -fav-init and -fav-init2)
  46. collapse LISTOPs to UNOPs or BASEOPs
  47. compile-time qw(), constant subs
  48. variable types: global analysis of variables, type hints etc.
  49. understand type decl and attrs
  50. my int $i; my $j : int;
  51. Devel::TypeCheck instead of magic variable _ir, ... suffices
  52. e.g. mark IVonly SV's and magic/flags change functions and
  53. optimize all op subtrees for the compiled backends to use direct ints.
  54. understand MooseX::Method::Signatures and MooseX::Lexical::Types declarations
  55. demand-loaded bytecode (leader of each basic block replaced by an op
  56. which loads in bytecode for its block)
  57. fast sub calls for CC backend
  58. tailcall optimization (entersub -> leavesub => goto)
  59. inline more small pp ops: enter, reset, stringify, ... (CC -finline-ops)