networkframework 0.8.0

Safe Rust bindings for Apple's Network.framework — modern, post-CFNetwork TCP / UDP / TLS / Bonjour networking on macOS
# networkframework-rs

Safe Rust bindings for Apple's
[Network.framework](https://developer.apple.com/documentation/network),
the modern (10.14+) replacement for BSD sockets / `CFNetwork` / `NSStream`.

v0.8 covers:

- `TcpClient`, `TcpListener`, `UdpClient`, `QuicConnection`, `WebSocket`, `Browser`, and `PathMonitor`.
- `ConnectionParameters` for advanced protocol-stack configuration.
- `ContentContext` for per-message priority, expiration, antecedents, and protocol metadata.
- Custom protocol framers via `FramerDefinition`, `Framer`, `FramerContext`, and `FramerMessage`.
- `ConnectionGroup` / `ConnectionGroupDescriptor` for multicast and multiplex groups.
- Interface enumeration via `list_interfaces()` and `PathMonitor::list_interfaces()`.
- `PrivacyContext`, `ProxyConfig`, and `ResolverConfig` for proxy and encrypted-DNS policy.

Built using a thin C shim around Apple's block-based `nw_*` C API; no
Objective-C runtime, no Swift bridge required.

## Why not just use `std::net`?

`std::net` calls BSD sockets directly, which works but bypasses macOS's
modern network stack (cellular fallback, Wi-Fi assist, Network
Extensions, secure DNS, multipath, on-device proxying). Apps shipped
via the Mac App Store **must** use Network.framework for many of those
behaviours. This crate provides a tiny safe surface for that.

## Remaining gaps

The crate now covers most publicly useful `Network.framework` surfaces. Remaining
work is focused on deeper protocol metadata helpers, richer connection-group
operations such as extraction / reinsertion, and additional low-level protocol
options.

## Quick start

```rust,no_run
use networkframework::TcpClient;

let client = TcpClient::connect("example.com", 80)?;
client.send(b"GET / HTTP/1.0\r\nHost: example.com\r\n\r\n")?;
let response = client.receive(8192)?;
println!("got {} bytes", response.len());
# Ok::<_, networkframework::NetworkError>(())
```

## Included examples

- `cargo run --example framer_length_prefix`
- `cargo run --example interface_list`
- `cargo run --example connection_group`
- `cargo run --example 03_udp_and_path`