Talks - Antonio Cuni: SPy (Static Python) lang: fast as C, Pythonic as Python

Learn about SPy (Static Python), a fast, compilable Python subset that combines C-like performance with Python's ergonomics through static typing and compile-time optimization.

Key takeaways
  • SPy (Static Python) aims to be a fast, compilable subset of Python that maintains Pythonic feel while removing features that make compilation difficult

  • Key differences from standard Python:

    • Static typing is strictly enforced
    • Immutable by default after initialization phase
    • Static dispatch instead of dynamic dispatch
    • Three distinct execution phases: import time, freeze phase, runtime
  • Compilation approach:

    • Uses “redshift” process to evaluate and optimize away “blue” nodes (compile-time logic)
    • Remaining “red” nodes represent runtime operations
    • Can generate C code, WebAssembly, or C Python extensions
  • Performance optimizations:

    • Pre-computes and resolves lookups at compile time
    • Eliminates dynamic dispatch overhead
    • Allows direct memory access for struct-like classes
    • Specializes functions based on types
  • Development goals:

    • Easy to implement and understand
    • Opt-in approach - use .spy extension for SPy features
    • Integration with existing Python ecosystem
    • Support for WebAssembly target
    • Focus on compile-time optimization while maintaining high-level API
  • Trade-offs:

    • Not 100% Python compatible
    • Removes some dynamic Python features
    • Requires explicit type annotations
    • More restrictive semantics than Python
  • Use cases:

    • Performance-critical code
    • WebAssembly applications
    • Systems programming in Python
    • Typed APIs and frameworks