V0.3.3
Release Summary: AmritaSense v0.3.3
We are pleased to announce the release of AmritaSense 0.3.3, which introduces important documentation enhancements, runtime safety improvements, and a formal policy for AI‑generated content.
🔐 New AIGC Content Licensing Policy (AACLP v1)
We have adopted the AmritaConstant AIGC Content Licensing Policy (AACLP v1) to provide clear guidelines for contributions involving AI‑generated content. This policy:
- Recognises AI tools as part of the development toolchain, while placing ultimate responsibility on human contributors.
- Sets out rules for core business logic, documentation, and test cases.
- Requires all AI‑assisted content to be reviewed by a human before submission.
The full policy is available in POLICY_OF_AIGC and referenced in the README and CONTRIBUTING.md.
📚 Documentation Overhaul
New Guide: External Interrupt Calls (4.4)
A comprehensive new section explains how external systems can safely inject subroutines using call_sub(interrupt=True) and the interpreter lock. This unlocks powerful debugging, monitoring, and dynamic control capabilities.
Expanded SuspendObjectStream API Reference
The reference documentation for SuspendObjectStream has been completely rewritten, covering:
- Two‑layer interrupt architecture (outer control‑flow suspend vs. inner data‑flow callback).
- The distinction between stateful suspend points and stateless polling.
- Detailed public methods, usage patterns, and concurrency safety.
Revised “Execution and Interrupt” (3.4)
The core concepts chapter now clearly distinguishes between:
- Internal interrupts – suppressible exceptions (
Exception) vs. unsuppressibleInterruptNotice. - External interrupts – driven by
call_sub(interrupt=True). - Cooperative suspend –
wait_to_suspend/resumefor recoverable pauses.
A new table summarises the differences, and the panic/recovery flow is now illustrated with a Mermaid diagram.
Other Documentation Updates
- Added local search to VitePress configuration.
- Updated Python version support to 3.10 – 3.15 in getting‑started guides.
- Improved examples and fixed arrow formatting (
→replaced by->) across demos and guides.
⚙️ Runtime Improvements
- Safe
call_sublock checks: Added a runtime guard that raises aRuntimeErrorifcall_subis invoked withoutinterrupt=Truewhen the interpreter lock is not already held, preventing accidental misuse. - Centralised reset on
InterruptNotice: Thereset()method now handles cleanup (clearing pointer, return‑address stack, and jump marks) for better maintainability. - Version bump:
amrita-sensenow at 0.3.3.
🧪 CI and Testing
- Updated the CI script comment to reflect the pipeline steps.
- Expanded test coverage for the new lock check and interrupt reset behaviour.
🗑️ Miscellaneous
- Demos
03_dependency_injection.py,06_try_catch.py,08_interrupt_suspend.py,12_inline_workflow.py, and13_ret_far.pynow use->consistently for visual clarity. - The
CODE_OF_CONDUCT.mdcontact email has been updated.
Pull Requests
- Document interrupt model and enforce safe external sub-calls by @JohnRichard4096 in #13
We encourage all users to review the new AIGC policy and the enhanced documentation, especially the external interrupt and suspend‑object‑stream sections. Upgrade to 0.3.3 via pip:
pip install --upgrade amrita-senseHappy workflows! 🚀
Full Changelog: 0.3.2...0.3.3