#2337·prepack

Optimized Functions Plans

Author: cblappertCreated Jul 27, 2018Updated Jan 2, 2019
Labelsoptimized functions

Planning for optimized functions (original issue #799) mostly for H2 2018, but some stuff for past then. Under each category, the items are in rough order of priority

Anything italicized is wishlist and is not currently a priority.

Anything with a :small_orange_diamond: in front is 2nd priority once all unmarked items are completed.

  • Correctness
    • Nested Optimized Functions
      • Become confident in correctness of output
        • possibly look into extending @calebmer's fuzzer
      • Nested __optimize calls #1398
    • Bindings
      • Havoc Bugs
        • Fix initialization of bindings used by havoc #2335
        • Fix havocing of templates within optimized functions #2217
      • Optimized functions capturing bindings of residual functions
      • Captured bindings for nested optimized functions #1615
    • General Bugfixes
  • Enhancements
    • Add option to optimize functions at the site of the __optimize call #2336
      • for supporting calls inside of map and filter
    • Investigation: Talk to @NTillman to understand asks for Instant Render
    • :small_orange_diamond: Code Bloat
      • eliminate redundant unobservable intermediate states of properties/bindings
      • #2276 correct precise capture of bindings
    • :small_orange_diamond: Add support for usage of this in optimized functions #1640
    • add compatibility for lazy initialization
    • add support for bound functions #2213
    • widen when optimized functions have side-effects #1750
  • Better Engineering
    • Stop applying/reverting effects in serializer multiple times per optimize function
      • Probably will be done as a part of @hermanventer's refactor
    • Add documentation/examples for optimized functions in the wiki page
      • Ensure there are examples for all of the limitations/assumptions/optimizations
    • Enhance serializer tests using automated heap traversal #1852