Skip to content

Limitations

Some Python patterns do not translate cleanly to Chelis. These patterns fall to Tier 2 (bridge) or Tier 3 (agentic) translation, or are rejected outright.

Python code that relies on duck typing, untyped containers (list without a type parameter), or Any-typed values gives Calcify no concrete type to emit. Without type annotations from the typing pass, translation cannot proceed at Tier 1.

Mitigation: add type annotations and re-run the typing pass before invoking Calcify.

Chelis is a functional language. Python code that mutates shared state, relies on in-place updates to data structures, or uses mutable global variables requires restructuring to translate at Tier 1.

Patterns that trigger this limitation:

  • In-place list or dictionary mutation across function boundaries.
  • Class-level mutable state shared between methods.
  • Global variables modified at runtime.

Calcify can sometimes lift local mutation into functional updates (Tier 1), but cross-boundary mutation falls to Tier 2 or Tier 3.

Python modules that call into C shared libraries via ctypes, cffi, or CPython C extensions have no Chelis equivalent at the source level. These calls remain in Python at Tier 2.

If a Python library has no entry in the library mapping table and no Reef mapping package, calls to that library stay in Python. The translated output uses the bridge for those call sites.