Token Burn
Full Changelog: v3.7.1...v4.0.0
[4.0.0] - 2026-06-22
Breaking Changes
- Remove the legacy
grongier.pexcompatibility package andGrongier.PEXObjectScript classes. UseiopandIOP.*classes instead. - Rename Python component lifecycle hooks to snake_case, including
on_init,on_message, andon_process_input. - Move implementation modules from private
iop._*files into package namespaces such asiop.components,iop.messages,iop.migration,iop.production, andiop.runtime. - Remove the legacy WSGI helper classes and package metadata from
setup.py; project metadata is now managed frompyproject.toml.
Added
- Add
PollingBusinessServiceforiopto create scheduled polling business services without manually returningEns.InboundAdapter. - Add
iop --migrate --dry-run/--explainto print and validate the migration plan without writing to IRIS. - Add Pythonic component setting metadata with
setting(...),Setting,Category, andcontrolshelpers for IRIS production categories, descriptions, required flags, and editor controls. - Add
Productionmodule: a Python DSL for authoring, importing, diffing, and managing IRIS interoperability production topology entirely from Python. Declare components, ports, and routing withservice(),operation(),process(),connect(), andconnect_add(); drive the full production lifecycle (start,stop,restart,test,diff,apply); and export the topology as a typed graph (ProductionGraph,GraphEdge,GraphNode). - Add production reconstruction and rendering support to import productions from IRIS, rebuild them from dictionaries, export them as JSON, XML, Python drafts, or graph data, and include runtime connections and queue information.
- Add runtime director abstractions for local and remote IRIS management, including namespace-aware production control, component start/stop/restart, queue inspection, runtime connection export, and
DirectorProtocol. - Add REST endpoints for production connections, queue information, component lifecycle actions, and IOP-generated proxy class bindings.
- Add CLI support for export formats with
--format json|python|graph, remote settings files with-R/--remote-settings,--bindings,--unused, and--unbind. - Add public binding helpers:
bind_component,unbind_component,list_bindings,register_component, andunregister_component. - Add
@handler(MessageType)for explicit business operation and business process message dispatch; duplicate mappings now emit a warning that identifies the discarded handler. - Add support metadata for Python 3.13 and 3.14.
Changed
- Register
PollingBusinessServiceclasses through package/file migration. - Improve migration output and validation for common message registration mistakes.
- Include mode, namespace, and a final success line in migration output.
- Refactor the CLI into dedicated parser, formatting, and type modules.
- Refactor remote runtime support into dedicated client, director, migration, settings, and setup modules.
- Improve production object migration by automatically registering referenced component, adapter, and
PersistentMessageclasses with deduplication. - Improve business host connection discovery and message serialization error handling.
- Improve service hook ergonomics:
BusinessService.on_process_input()now delegates toon_message(), andPollingBusinessServicenow recommendson_poll()for scheduled polling. - Update demos, tests, and documentation to use the
ioppackage layout, snake_case hooks, and Pythonic production definitions.
Deprecated
- Deprecate the static
iop.Utils/iop.migration.utils._Utilsfacades in favor of functions iniop.migration.utils; these facades are scheduled for removal in v5.0. - Deprecate the static
iop.Director/iop.runtime.director._Directorfacades in favor of functions iniop.runtime.director; these facades are scheduled for removal in v5.0. - Deprecate silent default no-op handlers for unimplemented
on_message(),on_process_input(), andon_poll()hooks; they now warn and are scheduled to raise in v5.0.
Fixed
- Fix production graph edge assertions and runtime connection handling to match the new graph structure.
- Fix production lifecycle and migration error handling for local and remote execution paths.
- Fix component connection discovery so inspection does not execute component initialization hooks.