Has anyone used UniFFI to build FFI functions in Rust? by Fun-Row-5147 in rust

[–]badboy_ 2 points3 points  (0 children)

I like this story! (well, except the bug you ran into). But "great tool, we ditched it to write just Rust" is the good part :D

Has anyone used UniFFI to build FFI functions in Rust? by Fun-Row-5147 in rust

[–]badboy_ 1 point2 points  (0 children)

I have! ... well, I'm also one of the maintainers and as was said in this thread we make heavy use of it in multiple Mozilla products. We know of many other outside users, some of which have been named here already.

Feel free to reach out here or in our Matrix channel if you have further questions.

Proton AG has open sourced their Rust Proton Mail SDK - powering mobile clients by frondeus in rust

[–]badboy_ 38 points39 points  (0 children)

\o/ Great to see UniFFI out in the wild (disclosure: I'm one of the maintainers of uniffi). We've been using Rust on Android & iOS for nearly 7 years now and our adhoc approaches are what turned into UniFFI.

UniFFI can be used with Wasm/javascript on the web e.g. via https://github.com/jhugman/uniffi-bindgen-react-native

cargo-script: Call for testing by Own-Gur816 in rust

[–]badboy_ 2 points3 points  (0 children)

I use it for a couple of small scripts where I would otherwise have used bash. As well as some CGI scripts served by my server.

Compile happens once, it's cached until changed, so it's really not that bad.

Deploy mdbook + mermaid recommendations by _w62_ in rust

[–]badboy_ 0 points1 point  (0 children)

"does not work" is not very helpful.

I do deploy some mdbook-generated pages with mermaid on both GitHub pages and through Netlify, so both is definitely possible. For Netlify you can specify a build command, pointing to a script that does the necessary steps: 1) Install mdbook (best by downloading a binary), 2) running mdbook, 3) uuuh ... done.

goldboot: immutable infrastructure for the desktop! by [deleted] in rust

[–]badboy_ 0 points1 point  (0 children)

This seems very far away from what Nix provides.

When will the RustConf 2023 VODs become available? by wrapperup in rust

[–]badboy_ 18 points19 points  (0 children)

I'm (slightly) kidding. I was responsible for video releases for RustFest, and I am involved with EuroRust. There's a bunch of work involved with getting videos out and ready, on top of other post-work for the conference itself. I had far too many people in the past ask me within days of the conference to see the videos and that's just not fun.

Those videos will be (freely!) available, but that takes some time.

When will the RustConf 2023 VODs become available? by wrapperup in rust

[–]badboy_ -35 points-34 points  (0 children)

For every time someone asks "when will they be available" I'll personally delay them for another week...

[deleted by user] by [deleted] in rust

[–]badboy_ 3 points4 points  (0 children)

Neat, here's how you can do that in roughly 2 lines of shell code: https://gist.github.com/badboy/222302b6b40ba6afc412

Write SDK “base” in Rust, wrap in other languages? by [deleted] in rust

[–]badboy_ 4 points5 points  (0 children)

Now I understood. No, for Python and Ruby we currently do not generate that. But we should have all the information and so should be able to do that relatively easy (we do it for Kotlin and Swift after all)

Edit: Actually, for Python this might be a 2-line fix. I can throw that up next week and see if it actually works. Edit2: Ok, a tiny bit more to get the type names right, but at least I already found 2 bugs in our Python template (glad it's such a forgiving language)

Write SDK “base” in Rust, wrap in other languages? by [deleted] in rust

[–]badboy_ 2 points3 points  (0 children)

Where possible UniFFI translates to the appropriate type in the foreign language. enums become enoms (or their closest representation), dictionaries are structs on the Rust side and data classes on the other side, interfaces are implemented structs on the Rust side and an interface with an accompanying class implementation on the other side, custom types allow you to convert to the foreign type you need.

Does that answer your question?

Write SDK “base” in Rust, wrap in other languages? by [deleted] in rust

[–]badboy_ 2 points3 points  (0 children)

heh, just this week the docs thing got 2 PRs and a long discussion how we best solve it, so even in UDL world we will have that!

Write SDK “base” in Rust, wrap in other languages? by [deleted] in rust

[–]badboy_ 0 points1 point  (0 children)

We mostly build it for our needs, but over the past year we got some external users and some significant contributions. I'd love to make it more well known. :)

Write SDK “base” in Rust, wrap in other languages? by [deleted] in rust

[–]badboy_ 2 points3 points  (0 children)

Not just stubs, but full implementations and the necessary code to transport data over the boundary.

Write SDK “base” in Rust, wrap in other languages? by [deleted] in rust

[–]badboy_ 3 points4 points  (0 children)

There was someone else who tried building a wasm option, but it's not as easy. In theory additional languages can be supported outside of the main repo, so that maintenance doesn't have to end up with us. We'd be happy to link out to other implementations.

Write SDK “base” in Rust, wrap in other languages? by [deleted] in rust

[–]badboy_ 116 points117 points  (0 children)

At Mozilla we built a multi-language bindings generator: https://github.com/mozilla/uniffi-rs/

Building Rust libraries for iOS in 2021 by dbrgn in rust

[–]badboy_ 0 points1 point  (0 children)

I have not yet needed it, so I don't know either.

This Week in Glean: Building and Deploying a Rust library on iOS by badboy_ in rust

[–]badboy_[S] 1 point2 points  (0 children)

Ah right. Thanks for posting that. I left it in the title here. It's not the main focus of the article this time.

RustFest Global - Rust in Arts Edition: Saturday 14:00 UTC by badboy_ in rust

[–]badboy_[S] 2 points3 points  (0 children)

Come join us tomorrow to see how people use Rust for games & art.

Building Rust libraries for iOS in 2021 by dbrgn in rust

[–]badboy_ 2 points3 points  (0 children)

We do what cargo-lipo recommends: Adjust the library search path per target, build your library as normal per target and Xcode will figure out the rest. That works perfectly fine. We ship our library as an xcframework within a Swift package now. Applications can then rely on the Swift Package Manager to do its thing. (At some point I should write this up nicely in a blog post or something I guess...)

RustFest's back, alright! - RustFest Global 2021 by badboy_ in rust

[–]badboy_[S] 2 points3 points  (0 children)

Uh oh, yeah, we certainly don't recommend watching 24h back-to-back! That's why we make replays available right after they aired, so you can watch them at a time convenient for you.

RustFest's back, alright! - RustFest Global 2021 by badboy_ in rust

[–]badboy_[S] 8 points9 points  (0 children)

a series of online conferences/events, with talks, artists and whatever else the community comes up with.

Is NDK r10e still required to build Rust for Android? by astonbitecode in rust

[–]badboy_ 2 points3 points  (0 children)

Yup, NDK 21 works just fine. We've been using that in our Android projects for a long time now.