···45A suite of Rust crates intended to make it much easier to get started with atproto development, without sacrificing flexibility or performance.
67-[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.
89-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.
1011## Features
12···22 - All the building blocks of the convenient abstractions are available
23 - Use as much or as little from the crates as you need
2425-## 0.9.0 Release Highlights:
2627**`#[derive(LexiconSchema)]` + `#[lexicon_union]` macros**
28- Automatic schema generation for custom lexicons from Rust structs
···54**Caching in identity/lexicon resolver**
55- Basic LRU in-memory cache implementation using `mini-moka`
56- Reduces number of network requests for certain operations
57-- Works on both native and WebAssembly
58-- **NOTE** wasm target for `mini-moka` requires a git dependency, use the git version of the crate when compiling for wasm
5960**XRPC client improvements**
61- `set_options()` and `set_endpoint()` methods on `XrpcClient` trait
···131132```
133134-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.
135136> [!WARNING]
137> A lot of the streaming code is still pretty experimental. The examples work, though.\
···45A suite of Rust crates intended to make it much easier to get started with atproto development, without sacrificing flexibility or performance.
67+[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.
89+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.
1011## Features
12···22 - All the building blocks of the convenient abstractions are available
23 - Use as much or as little from the crates as you need
2425+## 0.9.X Release Highlights:
2627**`#[derive(LexiconSchema)]` + `#[lexicon_union]` macros**
28- Automatic schema generation for custom lexicons from Rust structs
···54**Caching in identity/lexicon resolver**
55- Basic LRU in-memory cache implementation using `mini-moka`
56- Reduces number of network requests for certain operations
57+- Works on both native and WebAssembly via vendored patched version of mini-moka
58+5960**XRPC client improvements**
61- `set_options()` and `set_endpoint()` methods on `XrpcClient` trait
···131132```
133134+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.
135136> [!WARNING]
137> A lot of the streaming code is still pretty experimental. The examples work, though.\