···4455A suite of Rust crates intended to make it much easier to get started with atproto development, without sacrificing flexibility or performance.
6677-[Jacquard is simpler](https://whtwnd.com/nonbinary.computer/3m33efvsylz2s) because it is designed in a way which makes things simple that almost every other atproto library seems to make difficult.
77+[Jacquard is simpler](https://alpha.weaver.sh/nonbinary.computer/jacquard/jacquard_magic) because it is designed in a way which makes things simple that almost every other atproto library seems to make difficult.
8899-It is also designed around zero-copy/borrowed deserialization: types like [`Post<'_>`](https://tangled.org/@nonbinary.computer/jacquard/blob/main/crates/jacquard-api/src/app_bsky/feed/post.rs) can borrow data (via the [`CowStr<'_>`](https://docs.rs/jacquard/latest/jacquard/cowstr/enum.CowStr.html) type and a host of other types built on top of it) directly from the response buffer instead of allocating owned copies. Owned versions are themselves mostly inlined or reference-counted pointers and are therefore still quite efficient. The `IntoStatic` trait (which is derivable) makes it easy to get an owned version and avoid worrying about lifetimes.
99+It is also designed around zero-copy/borrowed deserialization: types like [`Post<'_>`](https://tangled.org/nonbinary.computer/jacquard/blob/main/crates/jacquard-api/src/app_bsky/feed/post.rs) can borrow data (via the [`CowStr<'_>`](https://docs.rs/jacquard/latest/jacquard/cowstr/enum.CowStr.html) type and a host of other types built on top of it) directly from the response buffer instead of allocating owned copies. Owned versions are themselves mostly inlined or reference-counted pointers and are therefore still quite efficient. The `IntoStatic` trait (which is derivable) makes it easy to get an owned version and avoid worrying about lifetimes.
10101111## Features
1212···2222 - All the building blocks of the convenient abstractions are available
2323 - Use as much or as little from the crates as you need
24242525-## 0.9.0 Release Highlights:
2525+## 0.9.X Release Highlights:
26262727**`#[derive(LexiconSchema)]` + `#[lexicon_union]` macros**
2828- Automatic schema generation for custom lexicons from Rust structs
···5454**Caching in identity/lexicon resolver**
5555- Basic LRU in-memory cache implementation using `mini-moka`
5656- Reduces number of network requests for certain operations
5757-- Works on both native and WebAssembly
5858-- **NOTE** wasm target for `mini-moka` requires a git dependency, use the git version of the crate when compiling for wasm
5757+- Works on both native and WebAssembly via vendored patched version of mini-moka
5858+59596060**XRPC client improvements**
6161- `set_options()` and `set_endpoint()` methods on `XrpcClient` trait
···131131132132```
133133134134-If you have `just` installed, you can run the [examples](https://tangled.org/@nonbinary.computer/jacquard/tree/main/examples) using `just example {example-name} {ARGS}` or `just examples` to see what's available.
134134+If you have `just` installed, you can run the [examples](https://tangled.org/nonbinary.computer/jacquard/tree/main/examples) using `just example {example-name} {ARGS}` or `just examples` to see what's available.
135135136136> [!WARNING]
137137> A lot of the streaming code is still pretty experimental. The examples work, though.\