You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: universal set() and field-change callback refinements
Universal set() — PR 2:
- trigger() falls back to scanOnce() when SCAN != 'I/O Intr', so
set() publishes immediately regardless of what the SCAN field shows.
scanIoRequest return value is now checked; scanOnce fires only when
scanIoRequest did not queue the record (never both on the same cycle).
- iocInit() accepts auto_reset_scan=True: after forwarding a SCAN write
to Python, the C hook resets SCAN to 'I/O Intr' so the record stays
on the I/O Intr scan list — eliminating periodic-scan contention.
Callback refinements — building on PR 1:
- on_field_change() now accepts a list of field names (multi-field
subscription with one callback).
- log_puts=False added to iocInit() to suppress the built-in CA put
logger without disabling field-change callbacks.
- remove_field_callback(field, cb) de-registers one callback.
- clear_field_callbacks(field=None) removes all callbacks for a field
or all callbacks on the record.
- record.field_callbacks read-only dict view of registered callbacks.
- C double-registration guard added: FieldWriteHook can only be
installed once even if iocInit() is called multiple times.
Tests: 25 dedicated tests (test_universal_set.py 16, test_callback_refinements.py 9).
Full suite at this point: 363 passed, 16 skipped, 0 failures.
0 commit comments