Dart frontend for UniFFI bindings
Reference: TODOs
This project must always work on latest stable rust + version before. We are also testing it against 1.1.70.0 , which we consider the Minimum Support Rust Version (MSRV) at this point. Rust lower than that will probably not compile the project.
uniffi-dart includes a comprehensive test suite with 30 fixtures covering all major UniFFI functionality:
- Core Types: Primitives, collections, optionals, type limits
- Async Patterns: Comprehensive async/Future support with object-oriented patterns
- Error Handling: Error types, large errors, exception scenarios
- Object-Oriented: Interfaces, constructors, methods, traits
- Time Handling: Timestamps, durations, ISO 8601 formatting
- Performance: FFI call overhead benchmarking
- Documentation: UDL and proc-macro documentation generation
- External Types: Cross-crate type sharing and custom type wrapping
See TODO.md
for detailed development priorities and blocking feature analysis.
Run all fixture tests:
cargo nextest run --all --nocapture
Run specific fixture tests:
cargo nextest run -p simple_fns --nocapture
cargo nextest run -p dart_async --nocapture
cargo nextest run -p time_types --nocapture
For nightly compiler features (genco
whitespace detection):
cargo +nightly nextest run -p hello_world --nocapture
Our comprehensive fixture suite has identified 5 critical blocking features:
- HashMap/Map support - Core collection type missing
- Proc-macro support - Modern UniFFI development pattern
- Dictionary default values - Named parameters with defaults
- Trait method support - Advanced trait functionality
- BigInt support - Large integer boundary handling
The code is released under MIT License. See the LICENSE file in the repository root for details.
The project is building on top of the great work of Mozillas UniFFI, with inspirations from other external frontends (like Kotlin and Go) and with the help of the ffi-gen lib. Thanks folks!