Summary
Completely remove the inline-Python (::py:: ... ::py::) feature from the Jac language. The native backend already strips ::py:: blocks (they cannot be lowered to LLVM IR), which makes inline Python a source of divergence between the bytecode/Python pathway and the native pathway. Rather than implement it in native, we want to drop the feature from the language entirely.
Scope
Motivation
- Inline Python is fundamentally unsupportable in the native (LLVM) backend, creating a permanent feature gap between pathways.
- It bypasses Jac's type system and tooling.
- Python interop is already achievable via standard
import mechanisms, making ::py:: redundant.
Acceptance criteria
- No
::py:: syntax is accepted by the parser; encountering it produces a clear, actionable error.
- All references to inline Python are removed from grammar, AST, passes, stdlib, examples, tests, and docs.
- Full test suite passes after removal/migration.
Summary
Completely remove the inline-Python (
::py::...::py::) feature from the Jac language. The native backend already strips::py::blocks (they cannot be lowered to LLVM IR), which makes inline Python a source of divergence between the bytecode/Python pathway and the native pathway. Rather than implement it in native, we want to drop the feature from the language entirely.Scope
::py::grammar/lexer/parser support::py::in the standard library, examples, and tests::py::(e.g. "inline Python is no longer supported; use a Python import instead")Motivation
importmechanisms, making::py::redundant.Acceptance criteria
::py::syntax is accepted by the parser; encountering it produces a clear, actionable error.