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
Kotlin/JNA overhead is **~46–52 µs** per async round-trip, lower than Python's ~80 µs.
508
-
The overhead comes from: UniFFI async dispatch (~10 µs), JNA FFI boundary (~11 µs per crossing),
509
-
and Kotlin coroutine suspension/resumption (~25 µs).
510
-
511
-
---
512
-
513
-
## 8. Key Takeaways
436
+
## 7. Key Takeaways
514
437
515
438
-**Encoding is fast**: Full RP encode/decode stack in ~131 ns (CPU-bound, no allocation hot paths thanks to `Bytes` zero-copy)
516
439
-**BIP throughput scales linearly**: 40K/s single-client → 161K/s at 50 clients with sub-millisecond p99
517
440
-**Concurrent dispatch unlocks RwLock parallelism**: Server now spawns per-request tasks — multiple ReadProperty requests run truly concurrently via `db.read()`. Quick benchmarks show ~44% read throughput improvement (full run pending)
518
-
-**Multi-device batch API**: Client `read_property_from_devices()` / `read_property_multiple_from_devices()` / `write_property_to_devices()` fan out to N devices concurrently with configurable `max_concurrent` (default 32). Available in Rust, Python, and Java/Kotlin
441
+
-**Multi-device batch API**: Client `read_property_from_devices()` / `read_property_multiple_from_devices()` / `write_property_to_devices()` fan out to N devices concurrently with configurable `max_concurrent` (default 32). Available in Rustand Python
-**Fixed** TextMessage tags — messagePriority and message use context tags [2] and [3] (were [3] and [4])
132
+
-**Fixed** ReinitializeDevice password validation — SIZE(1..20) per Clause 16.4.1.1.5
133
+
-**Added**`message_text: Option<String>` field to EventNotificationRequest with encode/decode per Clause 13.8.1
134
+
-**Added**`RecipientProcess` struct and `enrollment_filter` field to GetEnrollmentSummaryRequest
135
+
136
+
#### Objects (Clause 12)
137
+
-**Fixed** StatusFlags IN_ALARM never set — all 9 event-capable object types (AI/AO/AV/BI/BO/BV/MSI/MSO/MSV) now compute IN_ALARM from `event_detector.event_state`
138
+
-**Added**`compute_status_flags()` helper function for consistent StatusFlags computation across object types
-**Fixed** DCC DISABLE now accepted — all 3 EnableDisable values work correctly per 135-2020
153
+
-**Fixed** COVProperty cancel now calls `unsubscribe_property()` instead of `unsubscribe()`
154
+
-**Fixed** RPM handler resolves device wildcard via `resolve_device_wildcard()`
155
+
-**Fixed** GetEnrollmentSummary priority lookup reads from notification class object (was hardcoded 0)
156
+
-**Fixed** intrinsic reporting silently non-functional — EVENT_ENABLE stored as BitString but read via `read_unsigned()`; added `read_event_enable()` helper handling both types
157
+
-**Fixed** schedule tick passes UTC offset parameter for correct time computation
158
+
-**Fixed** EventNotificationRequest now includes `message_text: None` field
159
+
-**Added**`days_to_date()` helper for full datetime in trend log records
160
+
161
+
#### Network (Clause 6)
162
+
-**Fixed** remote broadcast self-delivery — router now delivers broadcast to local network layer
163
+
-**Fixed**`is_network_message` passthrough in routing (was hardcoded false)
164
+
-**Fixed** proprietary network messages (type >= 0x80) with DNET now forwarded correctly
165
+
-**Fixed** Init-Routing-Table-Ack uses actual port_index (was hardcoded)
166
+
167
+
### Python Bindings Improvements
168
+
169
+
-**Rewritten**`.pyi` type stubs from scratch (826 → 1598 lines) — all 47 client methods, 62+ server methods, correct exception names, CovNotification class, PropertyValue constructors, all 65 ObjectType constants
170
+
-**Added**`time_synchronization()` and `utc_time_synchronization()` methods
-**Security advisories resolved** — aws-lc-sys X.509 name constraints bypass, CRL distribution point logic errors; rustls-webpki CRL scope check
135
196
197
+
### Removed
198
+
-**Java/Kotlin bindings** — removed `bacnet-java` crate, `uniffi-bindgen` crate, `java/` Gradle project, `examples/kotlin/`, and all associated CI jobs (no user base; maintenance burden)
0 commit comments