<!-- Release notes generated using configuration in .github/release.yml at release/sdk/v0.4.0 -->
What's Changed
All
* Support schemaless channels over websocket by bryfox in https://github.com/foxglove/foxglove-sdk/pull/283
* Create 'quickstart' examples by bryfox in https://github.com/foxglove/foxglove-sdk/pull/307
Python
* python: Don't override message_schema for json schemas by gasmith in https://github.com/foxglove/foxglove-sdk/pull/271
* python: organize websocket code into submodule by bryfox in https://github.com/foxglove/foxglove-sdk/pull/276
* python: update & fix examples by bryfox in https://github.com/foxglove/foxglove-sdk/pull/278
* python: migrate to pytest in sdk by bryfox in https://github.com/foxglove/foxglove-sdk/pull/289
* python: fix stub definitions for typed channel logging by bryfox in https://github.com/foxglove/foxglove-sdk/pull/309
* python: improve high-level log API by eloff in https://github.com/foxglove/foxglove-sdk/pull/303
* python: fix up the live viz example by bryfox in https://github.com/foxglove/foxglove-sdk/pull/312
* python: add benchmark tests by bryfox in https://github.com/foxglove/foxglove-sdk/pull/296
* python: Hide _foxglove_py imports where possible by bryfox in https://github.com/foxglove/foxglove-sdk/pull/310
Rust
* rust: Fix flakey test by eloff in https://github.com/foxglove/foxglove-sdk/pull/268
* rust: Demote &Arc<Channel> to &Channel by gasmith in https://github.com/foxglove/foxglove-sdk/pull/269
* rust: Use Bytes instead of Vec<u8> in protobufs by gasmith in https://github.com/foxglove/foxglove-sdk/pull/272
* rust: Wrap Context in Arc<> by gasmith in https://github.com/foxglove/foxglove-sdk/pull/280
* rust: Add SinkId for identifying sinks by gasmith in https://github.com/foxglove/foxglove-sdk/pull/290
* rust: Plumb Context through Sink builders by gasmith in https://github.com/foxglove/foxglove-sdk/pull/291
* rust: Rename LogContext->Context, LogSink->Sink by gasmith in https://github.com/foxglove/foxglove-sdk/pull/279
* rust: Move client-publish example by gasmith in https://github.com/foxglove/foxglove-sdk/pull/297
* rust: Add subscription manager by gasmith in https://github.com/foxglove/foxglove-sdk/pull/281
* rust: Use subscription manager by gasmith in https://github.com/foxglove/foxglove-sdk/pull/292
* rust: Manage websocket channel subscriptions dynamically by gasmith in https://github.com/foxglove/foxglove-sdk/pull/293
* rust: Make channel fields private by gasmith in https://github.com/foxglove/foxglove-sdk/pull/299
* rust: Remove arbitrary sleeps from tests by gasmith in https://github.com/foxglove/foxglove-sdk/pull/298
* rust: Fix websocket service schema encoding by gasmith in https://github.com/foxglove/foxglove-sdk/pull/304
* rust: Actually fix websocket service schema encoding by gasmith in https://github.com/foxglove/foxglove-sdk/pull/308
* rust: Miscellaneous tidying by gasmith in https://github.com/foxglove/foxglove-sdk/pull/306
* rust: Cope with buggy websocket service/asset handlers by gasmith in https://github.com/foxglove/foxglove-sdk/pull/305
* rust: Remove ClientChannelView by jtbandes in https://github.com/foxglove/foxglove-sdk/pull/286
* rust: Change ClientChannel schema data to binary; unify base64 handling by jtbandes in https://github.com/foxglove/foxglove-sdk/pull/285
C/C++
_Note: C and C++ support is in early development and not yet ready for testing._
* C/C++: add basic channel wrapper and log method by jtbandes in https://github.com/foxglove/foxglove-sdk/pull/267
* C/C++: add server callbacks for on_un/subscribe by jtbandes in https://github.com/foxglove/foxglove-sdk/pull/274
* C/C++: run sanitizers in CI by jtbandes in https://github.com/foxglove/foxglove-sdk/pull/282
* C/C++: client publishing support by jtbandes in https://github.com/foxglove/foxglove-sdk/pull/287
* C/C++: address review comments from client publishing by jtbandes in https://github.com/foxglove/foxglove-sdk/pull/302
* C/C++ Add mcap writer by eloff in https://github.com/foxglove/foxglove-sdk/pull/295
**Full Changelog**: https://github.com/foxglove/foxglove-sdk/compare/sdk/v0.3.0...sdk/v0.4.0