Skip to content

Changelog

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.2.3] - 2026-05-18

Added

  • Architecture diagram
  • Developer documentation (docs/lessons-learned.md, docs/known-bugs.md)
  • README architecture description

Fixed

  • print(dict) now correctly emits dictionary entries instead of {}
  • Break/continue statements now work correctly inside generator while-loops
  • Boxed f64/i64 subscript stores; catch StopIteration in codegen

Performance

  • Native f64/i32 benchmark variants wired up (geometric mean: 6.87× → 9.21×)

Maintenance

  • Ruff cleanup and formatting
  • Proper typing added across codebase
  • Dependency updates

[0.2.2] - 2026-03-31

Added

  • Full CLI with argparse: -o/--output, -r/--run, -v/--verbose, -d/--debug, -V/--version
  • p2w -r compiles and runs a Python file in one command (via wasm-tools + Node.js)

Fixed

  • README now references wasm-tools instead of wabt (which doesn't support WASM GC)

Changed

  • Refactored type inference to use class-level constants for operator/type mappings
  • Improved README with step-by-step usage example and CLI reference

[0.2.1] - 2026-03-02

Changed

  • Refactored codegen modules to reduce code duplication

[0.2.0] - 2026-02-17

Fixed

  • Floor division (//) now correctly rounds toward negative infinity for negative numbers
  • Modulo (%) now correctly returns result with sign of divisor (Python semantics)
  • Removed duplicate type analysis pass in inference phase
  • Fixed dict comprehension tuple unpacking in escape analysis

Added

  • p2w-benchmark check command for detecting performance regressions between sessions
  • Property-based testing with hypothesis for compiler correctness verification
  • Comprehensive test suite additions (171 new tests):
  • Type inference unit tests
  • AST analysis unit tests
  • Large integer boundary tests (i31/INT64 transitions)
  • Generator corner case tests
  • Exception handling tests
  • Property-based compilation tests
  • Architecture documentation (docs/architecture.md)
  • Mermaid diagrams for compilation pipeline and type system

Changed

  • Simplified $int_div and $int_mod runtime functions using new native helpers
  • Added native $i32_floordiv, $i32_mod, $i64_floordiv, $i64_mod WAT helpers

[0.1.0] - 2026-02-09

Initial public release.

Features

  • Python-to-WAT compiler supporting a substantial Python subset
  • Data types: integers (arbitrary precision), floats, booleans, strings, bytes, lists, tuples, dicts, sets
  • Control flow: if/elif/else, for/while loops, break/continue, match statements
  • Functions: definitions, default arguments, *args/**kwargs, closures, lambdas, decorators
  • Classes: inheritance, properties, static/class methods, special methods
  • Comprehensions: list, dict, set, generator expressions
  • Exception handling: try/except/finally, raise, exception chaining
  • Context managers, generators, f-strings, walrus operator
  • JavaScript interop via js module for browser integration
  • WASM GC for automatic memory management

Included

  • 104 golden test programs in programs/internal/
  • Two benchmark suites (programs/benchmarks/, programs/benchmarks-alioth/)
  • Two browser demos (demos/data-dashboard, demos/simulation)