2021 H2 static Python roadmap
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 15/100
Línea de trabajo
Este issue es una hoja de ruta amplia que abarca el compilador estático, el cargador de módulos, el comprobador de tipos, el runtime, JIT y el trabajo de rendimiento, en lugar de un único cambio acotado. Empieza seleccionando un solo punto prioritario y localizando su subsistema relevante; la finalización debe definirse por el comportamiento y la validación específicos de ese punto, no por la hoja de ruta completa.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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
- Lenguaje dominante
- Python
- Estrellas
- 3.8k
- Forks
- 139
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de facebookincubator/MetaPython
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
facebookincubator/MetaPython#147 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
facebookincubator/MetaPython#146 · 2 comentarios ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
facebookincubator/MetaPython#145 · 4 comentarios ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 30/100
facebookincubator/MetaPython#144 · 1 comentario ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 20/100
facebookincubator/MetaPython#129 · 2 comentarios ·
Todos los issues de facebookincubator/MetaPython
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100