2021 H2 static Python roadmap
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 15/100
Direzione di ricerca
Questa issue è una roadmap ampia che comprende il compilatore statico, il caricatore dei moduli, il type checker, il runtime, JIT e il lavoro sulle performance, anziché una singola modifica circoscritta. Inizia selezionando un solo punto prioritario e individuando il relativo sottosistema; il completamento deve essere definito dal comportamento specifico e dalla validazione di quel punto, non dall’intera roadmap.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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
- Lingua principale
- Python
- Stelle
- 3.8k
- Fork
- 139
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di facebookincubator/MetaPython
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
facebookincubator/MetaPython#147 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
facebookincubator/MetaPython#146 · 2 commenti ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
facebookincubator/MetaPython#145 · 4 commenti ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 30/100
facebookincubator/MetaPython#144 · 1 commento ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 20/100
facebookincubator/MetaPython#129 · 2 commenti ·
Tutte le issue di facebookincubator/MetaPython
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
use-agent-os/agent-os#3314 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
BasedHardware/omi#15662 · 1 commento ·
-
documentation help wanted
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
AiursoftWeb/AnduinOS-2#19 ·