v0.4.0
Reliability / efficiency / stability hardening pass (full code review). Closes #23–#30.
Fixed
- A mid-stream parse error no longer reports success or caches a truncated capture — it raises and skips the cache write. (#23)
- Backend-correct
compat.XMLSyntaxErroralias (stdlib ElementTree hasParseError, notXMLSyntaxError) so malformed XML on the no-lxml path surfaces the real error.
Changed
- Loading runs off the event loop (
asyncio.to_thread) — the server stays responsive during a long parse on HTTP/SSE. (#24) - Parsed-capture cache is size-bounded with LRU eviction (default 5 GiB;
PROCMONMCP_CACHE_MAX_BYTESoverride). (#25) export_query_resultsstreams rows to disk (bounded memory). (#26)- User filter regexes use Google RE2 when the optional
re2extra is installed (ReDoS-safe), falling back to stdlibre. (#27) find_file_accessheap-merges per-path index lists and stops atlimit. (#28)- Hot scan loops read the clock only periodically. (#29)
- Event-detail formatting uses a shallow
ProcessInfo.to_dict(). (#30)
No breaking API changes.
Full changelog: CHANGELOG.md