Status and Roadmap
Status
Rid is functional at this point, but not production ready.
I have tested the example apps on macOS desktop, numerous iPhone simumlators and a physical Android device (Pixel running Android 10).
I also took great care regarding memory management and used valgrind to ensure that rid doesn't leak memory when used properly.
Rid is very well tested, especially the rid-macro
crate which is responsible for
generating the FFI glue code.
Roadmap
I am adding features to rid by building example applications and filling in what's needed.
✅ Async Support
I'm planning on building the following two applications next:
- Todo app using bloc state management
- reddit ticker which updates vote count of a post in real time
Both require to communicate state changes from Rust asynchronously which are now supported.
🔨👷 Support More Collection Types
This is an ongoing effort as they will be added on a per need basis. Most likely they will be added in the order below
Please note that supporting fields of a particular type on model structs is a different task than supporing export functions to return values of same type.
The Vec
type is currently supported for both cases.
🔨👷 Wasm Support
Rid will support all platforms that Flutter supports. Therefore it is essential that it can compile to wasm and generate the necessary glue code.
I did have a first stab at this, and realized there are a lot of pieces missing still, especially on the Dart side. Therefore I put this off for a later time. For more information please refer to to this post.
⌛ Rid CLI Tool
At this point rid apps are created via a template which includes scripts to generate glue
code and build for different devices. They rely on the rid-build
crate.
I will create a CLI tool which will have numerous features aiding in the development of apps with rid:
- scaffold command: to create a ready to run and work on Dart or Flutter application
- build command: which will create glue code and build binaries for each device
⌛ Stability
Rid is evolving very fast and has some gaps in the implementation. Even though most of them will be addressed by necessity when a new example app depends on it, I want to take some time to meticulously go through the code base and address most of them.