Skip to content

V0.2.4

Choose a tag to compare

@JohnRichard4096 JohnRichard4096 released this 05 Jun 07:29

Release v0.2.4

This release introduces a new PUSH_STACK instruction for explicit return address stack management, making manual stack operations more ergonomic. The execution pointer advancement logic is now exposed as a public advance_pointer() method, and ARCHIVED_NODES has been generalized to accept any BaseNode.

✨ New Features

  • PUSH_STACK(alias_or_idata) – Push a return address onto _ret_addr_stack directly from the composition chain, eliminating the need for manual node-based pushes. Pair with GOTO and RET_FAR for custom call/return patterns.
  • WorkflowInterpreter.advance_pointer(ptr=None) – Public method for advancing the execution pointer through nested workflows. Supports external pointer preview without mutating interpreter state.

📝 Improvements

  • ARCHIVED_NODES now accepts arbitrary BaseNode (not only AliasNode), enabling more flexible subroutine storage patterns.
  • Documentation updated across English and Chinese guides to reflect the new PUSH_STACK instruction, including a new "subroutine-like pattern with ARCHIVED_NODES" example.
  • Demo 13_ret_far.py refactored to use PUSH_STACK instead of manual stack push in a custom node.

⚠️ Deprecations

  • WorkflowInterpreter._advance_pointer (property) is deprecated. Use advance_pointer() instead. The old property will be removed in v0.3.0.

🐛 Fixes

  • Improved error message when attempting to call a NodeComposeRendered via _call().

🔧 Internal

  • Version bumped to 0.2.4.
  • Type hints and imports cleaned up (typing_extensions, TYPE_CHECKING).

Full Changelog: 0.2.3...0.2.4