Todo 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. * Fixes
  2. -DF Flags crashes with newpkg
  3. do not throw away non-B:C loaded packages not to miss run-time added methods ('all_bc_pkg')
  4. 'n' magic (shared_scalar on 5.10.0 and earlier perls) e.g. t/testm.sh Test::Tester
  5. run-time label lookup (done for the easy and documented limitations)
  6. store_cop_label for 5.12 windows/AIX only (=> p5p; needs CORE patch)
  7. CC backend: goto (needs test),
  8. improve XSUB handling (perlcc, both static and dynamic, needs tests)
  9. sv_magic can do SvREFCNT_inc(obj) which messes up precalculated refcounts
  10. allocation of XPV[INAHC]V structures needs fixing: Perl tries to free
  11. them, whereas the compiler expects them to be linked to a xpv[inahc]v_root
  12. list the same as X[IPR]V structures.
  13. ref counts
  14. perl_parse replacement
  15. NV overflow initialisation analog to ivx (ExtUtils::CBuilder)
  16. CvOUTSIDE for ordinary subs
  17. * Features
  18. Detect ExtUtils::Constant autoloaded "Your vendor has not defined"
  19. functions stubs. E.g. "WARNING: &Socket::AF_DATAKIT not found"
  20. optimize static or typed method calls. How-perl-compiles-subs-and-methods.md
  21. detect typed objects (my Class $obj = new Class;)
  22. modularize (-m) for faster link times
  23. BEGIN goto optim: skip code after BEGIN goto
  24. usually Carp including B in some AUTOLOAD block, issue 61
  25. save PMOPs in compiled form (?)
  26. options for cutting out line info (COP elimination) etc. (fix -fcop)
  27. check Bytecode op coverage in the tests, should cover all ops 0-142
  28. ByteLoader compatibility: version, platform. eventually Bytecode version
  29. portability (test with 5.6 on cygwin, partially done)
  30. check CC op coverage, add tests
  31. * Optimizations
  32. collect static strings beforehand, such as GvNAMEs, COP FILENAME (for pre 5.10)
  33. and GV method names package::name. (partially done)
  34. proper static init of PMOP SV's (only works dynamic >= 5.10)
  35. collapse LISTOPs to UNOPs or BASEOPs
  36. compile-time qw(), constant subs
  37. variable types: global analysis of variables, type hints etc.
  38. understand type decl and attrs
  39. my int $i; my $j : int;
  40. Devel::TypeCheck instead of magic variable _ir, ... suffices
  41. e.g. mark IVonly SV's and magic/flags change functions and
  42. optimize all op subtrees for the compiled backends to use direct ints.
  43. understand MooseX::Method::Signatures and MooseX::Lexical::Types declarations
  44. demand-loaded bytecode (leader of each basic block replaced by an op
  45. which loads in bytecode for its block)
  46. fast sub calls for CC backend
  47. tailcall optimization (entersub -> leavesub => goto)