Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2021 H2 static Python roadmap #44

Open
DinoV opened this issue Jul 22, 2021 · 0 comments
Open

2021 H2 static Python roadmap #44

DinoV opened this issue Jul 22, 2021 · 0 comments
Labels
staticpython static python issues

Comments

@DinoV
Copy link
Contributor

DinoV commented Jul 22, 2021

Usability

  • [P0] Make static python consumable easily for any Cinder user
    • Module loader in cinder
    • Consolidate rewriter logic into static compiler (out of strict modules)
    • minimum runtime version for static pycs
  • [P0] Make static python type checker run as a linter
  • [P0] Fix module dependency tracking for pyc invalidation
  • [P1] Support Enums defined in static modules
  • [P1] Expand Static Python reference guide
    • How to improve perf: primitives, CheckedDict...
    • Things that aren’t supported: multiple inheritance, metaclasses...
    • Gotchas: cbool comparison results
  • [P1] Don’t JIT all static functions
    • As we adopt more code into Static Python, not all static functions will be hot enough to deserve JIT, this should be left up to the JIT list to determine.
  • [P1] support prod_assert
  • [P1] support primitive floats
  • [P1] cross-module import always sees consistent (DeclarationVisit only) view of imported module types
  • [P1] fix patching of static functions with compatible but keyword-requiring signatures
  • [P2] improve type inference of primitive int literals

Performance

  • [P0] CheckedList
  • [P0] Optimize calls to types
  • [P0] Improved descriptor support:
    • Properties
    • Cached properties
    • class methods
  • [P1] Primitives in method calls
  • [P1] Primitives in type calls
  • [P1] More typed built-in methods
  • [P1] Dataclass intrinsic
  • [P1] Run declaration visitor on nonstatic dependency code and stubs so we can generate invokes against them
    • make sure the failure mode is appropriate Python error, not crash
    • also emit CAST on return value (helps with narrowing and Pyre compat for usability)
  • [P1] Support for runtime-checking small unions
  • [P1] avoid checking types of default argument values
  • [P1] return type of async functions
    • type-specialized await?
    • eager evaluation?
  • [P1] type-preserving user-defined decorators (util.etc, statsd.timer)
  • [P1] Declarable Exact types
    • Unlocks more non-GC containers, can declare they contain only Exact[str], which is non-GC
    • Unlocks other optimizations and statically known types also, subclasses of Python builtins can do crazy things
  • [P2] inlining decorators at compile time
  • [P2] Fixed size arrays
  • [P2] Perhaps some exploratory work around object lifetimes? Would be great to get some objects out of the GC.
    • Multiple return values that box to tuples but don’t allocate might be something slightly related
@DinoV DinoV added the staticpython static python issues label Jul 22, 2021
@DinoV DinoV changed the title 2021 H2 roadmap 2021 H2 static Python roadmap Jul 22, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
staticpython static python issues
Projects
None yet
Development

No branches or pull requests

1 participant