commits
Sync opam package metadata including x-maintenance-intent
and external dependency specifications.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace unsafe Obj.magic casts with proper type-safe alternatives:
- conpool: Make protocol parameter required, add create_basic for simple
pools. The previous optional protocol with Obj.magic default was
fundamentally unsound as OCaml cannot have optional parameters that
change return types.
- publicsuffix: Add explicit id field to trie_node instead of using
Obj.magic to cast nodes to int for hashtable keys.
- yamlt: Add init_unknown_builder helper that properly handles GADT
refinement, returning () for Unknown_skip/Unknown_error cases where
builder=unit.
- jmap_brr: Use Jsont_brr.encode/decode Jsont.json instead of unsafe
casts between Jv.t and Jsont.json.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Conpool changes:
- Add connection-lifetime switch passed to protocol init_state, enabling
long-running fibers (e.g., HTTP/2 background reader)
- Add on_acquire/on_release protocol hooks for lazy fiber initialization
- Enforce max_idle_time via pc_last_used tracking
- Enforce max_connection_uses via pc_use_count tracking
- Track idle count (connections with no active users)
- Track error count (protocol failures vs normal lifecycle closes)
- Distinguish Unhealthy_error from Unhealthy_lifecycle in health checks
HTTP/2 changes:
- Enable true multiplexing: access_mode now returns Shared
- Start background reader fiber on first acquire (lazy init)
- Add on_goaway callback to start_reader for GOAWAY notifications
- Use concurrent request path instead of synchronous
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix ambiguous {!decode} and {!connection} references by using val- prefix
- Add section IDs to header_parsing.mli and fix cross-references to sections
- Escape curly braces in documentation examples to avoid bad markup errors
- Fix unpaired brace in URL reference in headers.mli
- Indent verbatim block content in mqtte_cmd.mli
Unresolved references to external libraries (Jsont, Tomlt_bytesrw, etc.)
are intentionally kept as cross-references for future resolution.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Example executables should not be installed as public binaries.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Split cmdliner terms into separate mqtte.cmd findlib subpackage
- Add TOML config file support via tomlt library
- Integrate with xdge for XDG Base Directory paths
- Config precedence: CLI args > env vars > config file > defaults
- Add man page documentation helpers (man_environment, man_config_file)
- Add init-config and show-config subcommands for config management
- Consolidate V5 pubx write functions to reduce duplication
Config file location: ~/.config/{app_name}/config.toml
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Convert V3.Packet and V5.Packet inline records to proper submodules
(Connect, Connack, Publish, Puback, etc. each with type t)
- Extract pp_semi formatter to Shared module to reduce duplication
- Simplify parser many1 to use many, eliminating duplicate loop logic
- Update client.ml and tests to use new submodule syntax
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Rename mqtt-eio to mqtte throughout
- Switch from cstruct to bytesrw for parsing
- Add connection pooling with conpool
- Add TLS support via ca-certs and tls
- Extract write_fixed_header to Parser module (removes duplication)
- Use Option.iter for cleaner option handling in parser
- Simplify Topic.Filter.validate with combined length checks
- Add .ocamlformat, LICENSE.md, README.md
- Add tangled CI workflow
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace unsafe Obj.magic casts with proper type-safe alternatives:
- conpool: Make protocol parameter required, add create_basic for simple
pools. The previous optional protocol with Obj.magic default was
fundamentally unsound as OCaml cannot have optional parameters that
change return types.
- publicsuffix: Add explicit id field to trie_node instead of using
Obj.magic to cast nodes to int for hashtable keys.
- yamlt: Add init_unknown_builder helper that properly handles GADT
refinement, returning () for Unknown_skip/Unknown_error cases where
builder=unit.
- jmap_brr: Use Jsont_brr.encode/decode Jsont.json instead of unsafe
casts between Jv.t and Jsont.json.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Conpool changes:
- Add connection-lifetime switch passed to protocol init_state, enabling
long-running fibers (e.g., HTTP/2 background reader)
- Add on_acquire/on_release protocol hooks for lazy fiber initialization
- Enforce max_idle_time via pc_last_used tracking
- Enforce max_connection_uses via pc_use_count tracking
- Track idle count (connections with no active users)
- Track error count (protocol failures vs normal lifecycle closes)
- Distinguish Unhealthy_error from Unhealthy_lifecycle in health checks
HTTP/2 changes:
- Enable true multiplexing: access_mode now returns Shared
- Start background reader fiber on first acquire (lazy init)
- Add on_goaway callback to start_reader for GOAWAY notifications
- Use concurrent request path instead of synchronous
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix ambiguous {!decode} and {!connection} references by using val- prefix
- Add section IDs to header_parsing.mli and fix cross-references to sections
- Escape curly braces in documentation examples to avoid bad markup errors
- Fix unpaired brace in URL reference in headers.mli
- Indent verbatim block content in mqtte_cmd.mli
Unresolved references to external libraries (Jsont, Tomlt_bytesrw, etc.)
are intentionally kept as cross-references for future resolution.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Split cmdliner terms into separate mqtte.cmd findlib subpackage
- Add TOML config file support via tomlt library
- Integrate with xdge for XDG Base Directory paths
- Config precedence: CLI args > env vars > config file > defaults
- Add man page documentation helpers (man_environment, man_config_file)
- Add init-config and show-config subcommands for config management
- Consolidate V5 pubx write functions to reduce duplication
Config file location: ~/.config/{app_name}/config.toml
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Convert V3.Packet and V5.Packet inline records to proper submodules
(Connect, Connack, Publish, Puback, etc. each with type t)
- Extract pp_semi formatter to Shared module to reduce duplication
- Simplify parser many1 to use many, eliminating duplicate loop logic
- Update client.ml and tests to use new submodule syntax
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Rename mqtt-eio to mqtte throughout
- Switch from cstruct to bytesrw for parsing
- Add connection pooling with conpool
- Add TLS support via ca-certs and tls
- Extract write_fixed_header to Parser module (removes duplication)
- Use Option.iter for cleaner option handling in parser
- Simplify Topic.Filter.validate with combined length checks
- Add .ocamlformat, LICENSE.md, README.md
- Add tangled CI workflow
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>