## rust-nostr v0.39 is out! 🦀

### Summary

Add NIP96 support, add NIP22 helpers, NIP01 adjustments, add `try_connect` and `wait_for_connection` methods for better connection handling, support for custom WebSocket clients (both in Rust, Python, Kotlin and Swift), new JVM bindings (Linux, macOS and Windows), huge reduction of UniFFI bindings binaries size, many cleanups, refactoring and performance improvements and more!

Full changelog: https://rust-nostr.org/changelog

### Contributors

Thanks to all code contributors!

* nostr:npub1qqqqqqqx2tj99mng5qgc07cgezv5jm95dj636x4qsq7svwkwmwnse3rfkq

* nostr:npub1zwnx29tj2lnem8wvjcx7avm8l4unswlz6zatk0vxzeu62uqagcash7fhrf

* nostr:npub1r3cnzta52fee26c83cnes8wvzkch3kud2kll67k402x04mttt26q0wfx0c

* nostr:npub1v0lxxxxutpvrelsksy8cdhgfux9l6a42hsj2qzquu2zk7vc9qnkszrqj49

* ethicnology

* Gudnessuche

Thank also to nostr:npub1useke4f9maul5nf67dj0m9sq6jcsmnjzzk4ycvldwl4qss35fvgqjdk5ks, nostr:npub1a3tx8wcrt789skl6gg7rqwj4wey0j53eesr4z6asd4h4jwrd62jq0wkq4k and spacecowboy!

### Links

https://rust-nostr.org

https://rust-nostr.org/donate

#rustnostr #nostr #rustlang #programming #rust #python #javascript #kotlin #swift #flutter

Reply to this note

Please Login to reply.

Discussion

Woah, NIP-96 👀🔥

I’ll be trying this out soon, do you need any help adding examples to the Rust Nostr Book?

Nice! Yeah haha

Always.

How far along are the flutter bindings?

For now are available: Keys signer (with both NIP04 and NIP44 support), NIP59, event de/serialization, event building and the SDK Client (NIP42 auto authentication, gossip, event sending, event fetching and subscriptions).

I'll add the other stuff as I find the time. If you need something specific, let me know that I'll expose it.

Well ive started to build an app with flutter using `ndk` pkg, seems to work ok but i would prefer to use the more performant version in rust with full event caching in local db, does nostr-sdk flutter bindings work in web too?

The rust library for flutter compiles to wasm but I don't know how to pack and ship the flutter package for web. For the desktop and mobile platforms I use cargokit but it doesn't work for the web.

Ok interesting, its not that important its just that the current version does work in web because its all Dart pkgs, having web support is really just a nice-to-have since the goal is to build a mobile app

Nice, so I'll expose the database soon

Done, I've exposed the NostrDatabase, added some other Client method and released the v0.39 (tagged in the git repo, I can't publish it to pub.dev).

How do the bindings work? If i wanted to expose the profile metadata stuff?

I usually copy the stuff I already exposed in the UniFFI bindings and adapt it to the flutter_rust_bridge.

So, in the case of metadata stuff, I would copy and adapt this: https://github.com/rust-nostr/nostr/blob/d7a8372e28a5dd7e1ce02b725ee0b43c798e332f/bindings/nostr-sdk-ffi/src/protocol/nips/nip01.rs

To adapt it, I follow these docs https://cjycode.com/flutter_rust_bridge/ or I just check the other modules I already adapted. In short: replace the uniffi macros with `frb` and use the `Result` from anyhow. If a new module is added, it must be exported in the `lib/nostr_sdk.dart` file.

👀

nostr:note1vgklqvcdhqgqymmvx4um86h8e9r5nfpkgnxd02ze8tp3c4k5d8uqrgawl7

🫡

t Y*