On this page
Changelog 2.0.0-dev.33 2.0.0-dev.32 Please refer to https://fzyzcjy.github.io/flutter_rust_bridge/guides/miscellaneous/whats-new for what's changed in V2. Support self in non-opaque case (&self already supported before) #1880 Support &SomeStructOrEnum in non-opaque case (SomeStructOrEnum already supported before) #1880 Support &str type (String already supported before) #1880 Support instance and static methods for enums without fields #1879 Revert stream default semantics to not wait for Rust function execution #1877 Allow users to customize whether to await for Rust function for streams #1877 Hint users when a type is automatically inferred as both opaque and non-opaque #1876 Add check to ensure Rust and Dart has in-sync generated code #1878 2.0.0-dev.31 Please refer to https://fzyzcjy.github.io/flutter_rust_bridge/guides/miscellaneous/whats-new for what's changed in V2. Support methods in external crates #1861 Support inserting arbitrary Dart code #1860 Support disabling default Hash/Eq generation #1860 Support passing stream object at arbitrary location and arbitrary amount #1867 Let Rust function finish execution before returning stream object #1867 Support cases when using Rust conditional compilation #1856 Fix not exporting some struct types needed for customizing handlers #1865 Fix ignoring user-provided custom handler objects #1865 Fix ReceivePort is not closed when subscription is cancelled before Rust closes the stream #1857 2.0.0-dev.30 2.0.0-dev.29 2.0.0-dev.28 2.0.0-dev.27 Please refer to https://fzyzcjy.github.io/flutter_rust_bridge/guides/miscellaneous/whats-new for what's changed in V2. Improve procedure macros #1800 #1676 (thanks @Desdaemon) Add support for ffigen upgrades #1799 #1757 (thanks @aran) Improve hints when structs are in lib.rs #1802 #1579 (thanks @h3x4d3c1m4l) Improve scenarios when opaque-by-default is more natural #1805 Improve behavior of constructor #1804 Fix when using non-opaque struct + option + opaque inner type #1803 2.0.0-dev.26 2.0.0-dev.25 Please refer to https://fzyzcjy.github.io/flutter_rust_bridge/guides/miscellaneous/whats-new for what's changed in V2. Generate decl of store_dart_post_cobject
when full_dep enabled #1773 (thanks @Berrysoft) Support type Self (originally needs to specify the concrete type, now can use this shortcut) #160 Provide hints when struct/enum is never used #1763 Improve hints when types are exported but not used #1779 Auto understand when user structs have name conflict with builtin types #1782 Fix when non-enum + specify default value + dart_enums_style being true #1780 Fix Vec<Uuid>
error when using CST codec (the SSE codec does not have this bug) #1762 Fix build-web cannot find Dart program in some platforms #1758 2.0.0-dev.24 Please refer to https://fzyzcjy.github.io/flutter_rust_bridge/guides/miscellaneous/whats-new for what's changed in V2. Support ignoring all methods of a struct #1730 Allow Rust structs to become Dart callable objects #1728 Improve hints when using non-meaningful &mut
#1739 Allow Dart GC to collect when a Stream is created but not closed #1737 Make rust_builder has unique name to avoid conflicts #1738 Inform users when both config file and command line arguments are used #1731 2.0.0-dev.23 2.0.0-dev.22 Please refer to https://fzyzcjy.github.io/flutter_rust_bridge/guides/miscellaneous/whats-new for what's changed in V2. Automatically upgrade flutter_rust_bridge Dart/Rust runtime versions when running generate #1704 Fix failure of formatting Dart code when path is too long #1702 Add checks when build_runner needs to be a dependency #1695 Fix generated code is breaking cargo test because of its doc-test contains a moved import #1706 Add uuid and chrono for SSE codec (the CST/DCO codec already supports it) #169 Add example using build.rs #1696 Add doc about movement of things like StreamSink #1703 Add tests and doc about multiple Dart Isolates #1699 2.0.0-dev.21 Please refer to https://fzyzcjy.github.io/flutter_rust_bridge/guides/miscellaneous/whats-new for what's changed in V2. Support more fine-grained rust-auto-opaque #1680 Add RustAutoOpaque as an extra alternative approach to fully automatic arbitrary types #1679 Fix when primitive enums + has custom discriminator values + using SSE codec #1677 Fix when StreamSink + rust-auto-opaque types #1682 Fix when using types in external crate and use HashMap to contain it (continue from @aran's PR) #1684 Add doc to explain how to configure ios build system to avoid "linker undefined symbols" #1678 Improve comments for generated code #1685 2.0.0-dev.20 Please refer to https://fzyzcjy.github.io/flutter_rust_bridge/guides/miscellaneous/whats-new for what's changed in V2. Fix module parsing when two modules have the same name #1664 (thanks @alanlzhang) Fix integrate command's default template has rust_lib hardcoded instead of custom names #1669 Support Vec<Vec<u8>>
for CST/DCO codec (SSE codec already supports it) #1663 Make LLVM dependency optional #1666 Add checks of versions #1667 2.0.0-dev.19 2.0.0-dev.18 2.0.0-dev.17 2.0.0-dev.16 2.0.0-dev.15 2.0.0-dev.14 2.0.0-dev.13 2.0.0-dev.12 2.0.0-dev.11 2.0.0-dev.10 Please refer to https://fzyzcjy.github.io/flutter_rust_bridge/guides/miscellaneous/whats-new for what's changed in V2. Let integrate update .gitignore #1552 Fix linter errors when some extra linter rules are enabled #1560 Add prefix for generated C symbols #1558 Support isize (mimic existing usize) #1482 Let flutter_rust_bridge create/integrate support customizing rust crate name and directory #1567 Improve flutter_rust_bridge_codegen integrate #1566 Add CI for release mode and generate final artifacts #1572 No need to let user write AssertUnwindSafe everywhere #1574 Allow users to quickly define Rust initialization functions (via #[frb(init)]
) #1580 Wrap allo-isolate post to return Result instead of bool for better error checking #1584 Provide setup for logging, backtrace, etc, by default, but allow easy customization #1581 Fix awaiting DartFn, i.e. Rust callback to Dart #1585 2.0.0-dev.9 2.0.0-dev.8 2.0.0-dev.7 2.0.0-dev.6 2.0.0-dev.5 2.0.0-dev.4 2.0.0-dev.3 2.0.0-dev.2 2.0.0-dev.1 2.0.0-dev.0 Please refer to https://fzyzcjy.github.io/flutter_rust_bridge/guides/miscellaneous/whats-new for what's changed in V2. The 2.0.0-dev.0 will contain bugs and missing features, because I have to have a real (pre-)release before I can start
working on the last part of tests and functionalities. So it is a chicken-and-egg problem ;) But I expect
2.0.0-dev.2 (or -dev.3) to be stable. 1.82.6 Bump README (since before 2.0 stable version, the 1.x will be the default page on pub.dev etc) 1.82.5 Fix rustfmt::skip
#1420 (thanks @rogurotus) 1.82.4 Fix Result<SyncReturn(T), E>
#1407 (thanks @rogurotus) 1.82.3 Fix Rust error string not displayed in Dart #1390 (thanks @OfficialBoyfriend) 1.82.2 Refactor Vec<Option<_>>
#1388 (thanks @Desdaemon) 1.82.1 Fix cargo expand missing code #1372 (thanks @erikas-taroza) Use delegate-attr to simplify code #1364 (thanks @upsuper) 1.82.0 Support for Result<T, E> with exception throwing on Dart (thanks @lattice0, @SiongSng, @JustSimplyKyle) Fix invalid sdk spec syntax #1331 (thanks @aran) Document some common android fixes #1335 (thanks @powpingdone) Add support of Vec<bool>
(thanks @NightFeather0615) Update ffigen version (thanks @aran) 1.81.0 Allow macros to be used and will be expanded #1320 (thanks @MnlPhlp) 1.80.2 Fix and test for SyncReturn of mirrored type #1315 (thanks @MnlPhlp) Fix better check for whether the file need to generate freezed structs/enums #1312 (thanks @SiongSng) 1.80.1 Manually bump proc-macro2 -> 1.0.66 #1306 (thanks @gutenfries) 1.80.0 Reinforce error handling and reduce usage of panic in codegen #1298 (thanks @Desdaemon) fix: sync return with Freezed metadata #1304 (thanks @SiongSng) 1.79.0 Update example tab on pub.dev and remove low-quality dependency #1263 Adjust type constraints to allow mirror types in Streams #1285 (thanks @MnlPhlp) 1.78.0 Translate tuples to records and enums to sealed classes #1238 (thanks @Desdaemon) 1.77.1 Fix on zero-copy cargo feature #1229 (thanks @temeddix) 1.77.0 Provide zero-copy
cargo feature #1228 (thanks @temeddix) Add steps in macOS integration in docs #1227 (thanks @temeddix) 1.76.0 Support Dart 3 and Flutter 3.10 (thanks @Zaitam for partial impl) 1.75.3 Fix bridge access for Rust opaques #1206 (thanks @Desdaemon) 1.75.2 Warn user about using lib.rs as a Rust input #1193 (thanks @erikas-taroza) Allow enum member in struct, and fix enum errors in dart strict dynamic checker #1202 (thanks @alanlzhang) 1.75.1 Fix compile error when building frb_codegen w/o serde feature #1185 (thanks @phlip9) 1.75.0 Allow removing bridge
field in dart model #1170 (thanks @huang12zheng) 1.74.0 Allow RustOpaque to be non-Clone #989 (thanks @anlumo) 1.73.0 Support generating Dart structs with freezed + methods #970 (thanks @anlumo) 1.72.2 Fix: Handle fallible case for TypeGeneralListGenerator. #1149 (thanks @trobanga) 1.72.1 Fix for enums that contain mirrored structs Enum1(MyStruct) and Unit Tests #1144 (thanks @alexthe2) 1.72.0 Added support for raw strings #1139 (thanks @alexthe2) 1.71.2 Code refactor #1137 Remove SupportedInnerType #1117 (thanks @coder0xff) 1.71.1 Fix log_initial for panic! and refine a panic! info #1124 (thanks @dbsxdbsx) 1.71.0 Support for list of primitive enums #1128 (thanks @erikas-taroza) 1.70.0 Add tests to gen, build, run pure_dart #1106 (thanks @coder0xff) Generate Dart enum variants in camelCase #1112 (thanks @erikas-taroza) General CLI improvements: dumping, upgrade clap, yaml config, serialize IR, bump versions, etc #1119 (thanks
@Desdaemon) Fixes for serde-yml #1122 (thanks @Desdaemon) 1.69.0 Check for dart keywords #958 (thanks @anstadnik) 1.68.0 feat: return dynamic data as DartAbi
#1102 (thanks @Desdaemon) fix: incorrect ffi.Usize type #1102 (thanks @Desdaemon) fix: default on freezed structs not applied #1101 (thanks @Desdaemon) 1.67.0 Refractor and refine for frb_codegen #1093 (thanks @dbsxdbsx) Translate Rust method comments #1094 (thanks @Desdaemon) Add documentation for Rust versions 1.68 and above with the latest Android NDK #1096 (thanks @polypixeldev) Parameter defaults, make structs const-constructible #1095 (thanks @Desdaemon) 1.66.0 Implement List<DateTime>
, List<Duration>
#972 (thanks @Desdaemon) 1.65.1 Fix the duplicated "dummy_method_to_enforce_bundling" in C header within multi-blocks #1024 (thanks @dbsxdbsx) 1.65.0 Support empty structs #1071 (thanks @alexthe2) Fix Optional<DateTime>
#1079 (thanks @alexthe2) 1.64.0 Support Option<Datetime>
#1066 (thanks @alexthe2) 1.63.1 Fix the problem with using worker-max feature in WASM #1056 (thanks @temeddix) 1.63.0 Provide cargo features to change the number of pool workers #1026 (thanks @temeddix) 1.62.1 Add logging to disk for frb_codegen #1019 (thanks @dbsxdbsx) Upgrade dart sys, upgrade ci version, and fix linters #1023 (thanks @rogurotus) 1.62.0 Migration to dart-sys #998 (thanks @rogurotus) 1.61.1 Add import package:meta/meta.dart to all generated files #980 (thanks @jsonmona) 1.61.0 Allow opt-out of WASM initializer #963 (thanks @Desdaemon) 1.60.0 Refactors for Boxed
and Option
(Refactors EnumRef
to make Option<FieldlessEnum>
work; Box<primitive>
and Option<Box<primitive>>
on WASM no longer allocates a Box, but receives a (nullable) value directly from Dart)
#949 thanks @Desdaemon 1.59.0 Fix unexpected content in c output header #937 (thanks @dbsxdbsx) 1.58.2 Fix SyncReturn<RustOpaque<T>>
#934 (thanks @rogurotus) 1.58.1 fix SyncReturn restrictions and update CI #936 (thanks @rogurotus) 1.58.0 Support nest type alias with topology sort #929 (thanks @huang12zheng) 1.57.0 Make sync mode support whatever types that classical async mode supports #882 (thanks @ngasull) docs: add Dart/Flutter library setup documentation #899 (thanks @GregoryConrad) Fix lookup symbol store dart post cobject #898 (thanks @Roms1383) 1.56.0 Return error when rust input file cannot be read #912 (thanks @w1th0utnam3) 1.55.1 Fix mirroring to support Result
return type and Option<T>
field #907 (thanks @codercengiz) Bump Dart SDK to 2.15 #906 (thanks @ngasull) 1.55.0 Bump chrono #905 (thanks @Roms1383) Support type aliases #900 (thanks @huang12zheng) 1.54.1 Delete dart_sys #890 (thanks @rogurotus) 1.54.0 Extend SyncReturn
to support RustOpaque
, DartOpaque
, Option
and so on #876 (thanks @rogurotus) 1.53.0 Add Dart opaque types, allowing to use any Dart objects in Rust code #853 (thanks @rogurotus) 1.52.0 Move semantics of opaque rust for Dart #869 (thanks @rogurotus) 1.51.1 Fix function generation related to opaque rust #867 (thanks @rogurotus) 1.51.0 support wasm with no decl set #861 (thanks @huang12zheng) 1.50.0 Implement opaque types, enabling arbitrary Rust structs to be used as opaque Dart objects, by generating wrappers and
raw Arc pointers #795 (thanks @rogurotus) 1.49.2 Fix parsing of packages in pubspec.yaml that have no explicit version specification #846 (thanks @banool) 1.49.1 Bump constraint on ffigen #823 (thanks @CicadaCinema) Set default version strategy requirement for chrono #821 (thanks @vincent-herlemont) 1.49.0 Fix return for struct with methods #764 (thanks @Zaitam) Support array as parameter types #623 (thanks @Cupnfish) 1.48.1 Pass JS BigInt to wire #747 (thanks @Desdaemon) 1.48.0 Support uuid #728 (thanks @Roms1383) 1.47.1 Allow streaming functions to omit return type #730 (thanks @Desdaemon) 1.47.0 Support chrono date time #694 (thanks @Roms1383) 1.46.0 Fix WireSyncReturnStruct should be freed after buffer being consumed #720 (thanks @hsfzxjy) 1.45.0 Add support for the Web platform, parallel to the existing mobile/desktop platforms, via WASM and JavaScript as
intermediate values #589 (thanks @Desdaemon) 1.44.0 1.43.0 Add crate version to generated code header #666 (thanks @Roms1383) 1.42.0 Refactor and enhance SyncReturn to support more types #663 (thanks @SoLongAndThanksForAllThePizza) 1.41.3 Fix "Skipping unresolvable module" by align latest #651 (thanks @alanlzhang) 1.41.2 Add cli arg to skip dependencies check #640 (thanks @Roms1383) 1.41.1 Fix bug with conflicting names in enum name and variant #604 (thanks @Roms1383) 1.41.0 Allow multi-mirror
#619 (thanks @Cupnfish) 1.40.0 Improve version check #613 (thanks @Roms1383) 1.39.0 Avoid global ffigen #605 (thanks @Roms1383) Code cleanup #603 (thanks @Roms1383) 1.38.2 Run build_runner either for Dart or Flutter #599 (thanks @Roms1383) 1.38.1 Fix case when returning a struct with a method in a non method function #587 (thanks @lattice0) 1.38.0 Support methods, such that Rust struct impls can be converted to Dart class methods #543 (thanks @lattice0) 1.37.2 Fix compile errors when using enums within fields #564 (thanks @Desdaemon) 1.37.1 Update doc #552 (thanks @dbsxdbsx) Bump dart release since previous one did not release successfully 1.37.0 Allow generating multiple Rust and Dart files #527 (thanks @dbsxdbsx) 1.36.0 Add support for stream sink into any argument #542 (thanks @lattice0) 1.35.0 Fix for store_dart_post_cobject
signature mismatch with ffigen
>= 6.0 #536 (thanks @SecondFlight) Multiple blocks of files in one command #516 (thanks @dbsxdbsx) 1.34.2 1.34.1 Add suitable ignore_for_file
1.34.0 Generate Dart constMeta
as a field, such that users can refer to it when needed #487 1.33.0 Adding an option to prevent free_WireSyncReturnStruct function from being generated #481 (thanks @sccheruku) 1.32.0 Allow FlutterRustBridgeTimeoutMixin
to disable timeout 1.31.0 Support #[frb(metadata=("freezed", "immutable" import "package:meta/meta.dart" as meta))]
for structs #463 (thanks
@alanlzhang) 1.30.0 Support non-final fields in Dart structs #452 (thanks @surban) 1.29.0 Make code generator a lib to be used in build.rs; add error types for codegen; depend on cbindgen directly; update
docs #434 (thanks @sagudev) Update dep in locks #441 (thanks @sagudev) Add support for usize and [T;N] #442 (thanks @trobanga) 1.28.1 Fix LLVM path #431 (thanks @sagudev) Bump dependency 1.28.0 Add doc for Android NDK bug #423 (thanks @AlienKevin) Update to match current template #426 (thanks @Desdaemon) Add LLVM 14 #416 (thanks @sagudev) 1.27.2 1.27.1 Format frb_dart
package line length from 120 to 80 1.27.0 Add brackets to boxed variable #414 (thanks @Syndim) 1.26.0 Add default LLVM installation path for Windows #408 (thanks @Desdaemon) 1.25.0 Ignore prefer_const_constructors in generated code #401 (thanks @Surban) Add IntoDartExceptPrimitive impl for enums #404 (thanks @Desdaemon) 1.24.0 Skip unresolvable modules #400 (thanks @Surban) 1.23.0 Fix extra comma in enum structs #391 (thanks @Desdaemon) 1.22.2 1.22.1 Improve dart analyzer ignores 1.22.0 Make mirroring work for more use cases: tuple structs, enum variants, wrapping in Vec and Optional #359 (thanks
@Unoqwy) Bump dependency versions 1.21.1 1.21.0 CLI improvements: Run build_runner
automatically, and more flags #363 (thanks @Desdaemon) Disable import parsing in source_graph #364 (thanks @Secondflight) 1.20.1 More code comments and CI related to Corrosion #358 (thanks @Desdaemon) 1.20.0 Add struct mirrors to use external types #352 (thanks @Unoqwy) Add examples to documentation 1.19.2 Avoid converting syn types to strings before parsing #346 (thanks @antonok-edm) 1.19.1 Documentation overhaul (thanks @Desdaemon as well) 1.18.0 Refactor to beautify the implementation #338 1.17.0 Support bridging functions with return types other than Result
#335 (thanks @antonok-edm) 1.16.0 Allow structs and enums to be imported into the api file from elsewhere in the crate #319 (thanks @SecondFlight) Refactor command module to fix Windows build failures #325 (thanks @Desdaemon) Quote arguments when calling external commands #322 (thanks @Desdaemon) Update examples to fix compile error Bump dependency version #314 1.15.1 Bump dependency version #311 1.15.0 Fix potential name collision with port argument #305 (thanks @valeth) 1.14.0 Separate generated definitions from implementations #298 1.13.0 When running codegen, create folders for output paths if they don't exist #286 (thanks @SecondFlight) 1.12.0 Redesign documentation and make it a mdBook #272 Remove syn
dependency from macros to speed up #277 (thanks @Desdaemon) 1.11.0 Marker attributes for expressiveness #261 (thanks @Desdaemon) Improvements #267 (thanks @Desdaemon): Resolve #265, Resolve #266, Fix attributes not working on enum variants, Add
comments on enum variants and fields, (Internal) unify tuple and normal enum structs Avoid user parameter collision in wire functions #270 (thanks @Desdaemon) 1.10.0 Support enum structs (Rust's expressive enums with fields) #256 (thanks @Desdaemon) 1.9.1 Bump versions of dependencies 1.9.0 Support field-less enum types #239 (thanks @Desdaemon) 1.8.2 Fix bug that returning u32 from Rust results in wrong value received by Dart #234 1.8.1 1.8.0 Add support for unit return type #198 (thanks @surban) Add flutter example for macOS and add macOS instructions in README #211 (thanks @AlienKevin) 1.7.0 Enrich metadata of generated ffi calls - now we can have more "reflection" information. Add llvm-compiler-opts as command-line argument #210 (thanks @trobanga) 1.6.1 Remove extra newline on empty comment #203 (thanks @Desdaemon) 1.6.0 Implement Vec<String>
#193 (thanks @Desdaemon) Add logging for FlutterRustBridgeSetupMixin for users to debug easily. Set names of threads for ThreadPoolExecutor
to make debugging easier when looking at threads. 1.5.0 Copy Rust comments over to Dart generated file (#182, thanks @Desdaemon) 1.4.0 Support synchronous function calls in addition to existing asynchronous Future and Stream approaches (#175, #176) Remove unnecessary dependency of lint
for the Dart package. 1.3.0 Support more types of the formVec<primitive_type>
and ZeroCopyBuffer<Vec<primitive_type>>
, such as Vec<f32>
and ZeroCopyBuffer<Vec<f32>>
to be transformed into Float32List
in Dart. (#162, #153) Do not generate unnecessary Dart to Rust wire code to fix bugs such as when Vec<ZeroCopyBuffer<Vec<u8>>>
is in
output argument. Warn when ffigen
emits any [SEVERE]
log messages. Make outputs change less when input of codegen changes. Simplify Wire2Api<Option<T>>
generated code. 1.2.2 Add Linux and Windows out-of-the-box support for the with_flutter
example. Improve linter hints 1.2.1 Add --skip-add-mod-to-lib
flag. Allow Rust input file in directories besides root directory of the crate. Warn when command's output seems to indicate errors. Do not include stdarg.h
automatically (related: #108 and #53). Fix windows path handling problem (#119, thanks @smw-wagnerma). Add --llvm-path
flag. 1.2.0 Enable Option<T>
types to be transformed (thanks @Desdaemon) Support Stream
s: call function once, "return" multiple times with different data. Add FlutterRustBridgeSetupMixin
(an optional helper class), which allows custom setup hooks before ffi can be
executed. Add hint
parameter in generated Dart code, allowing users to pass custom data to the Dart executor, thus increasing
flexibility. Improve panic handling in extreme cases (avoid panic across languages, which is undefined behavior). Refactored Handler
, now it is much easier to customize your own handler functionality. Remove one Box::new(FnOnce)
, thus enables better inlining for ffi function calls. Fix bug: Dart struct(class) is not generated if the struct only appears in the return type #98. Add FlutterRustBridgeTimeoutMixin
. If used, a timeout exception will be thrown for ffi calls that do not return
within time limit. 1.1.0 Generate dummy_method_to_enforce_bundling
to avoid "symbols not found" problems in iOS release build Allow customizations for generated Dart classes Add pure-Dart tutorial Update examples and tutorials, and fix outdated documentations Formatting problems for generated code 1.0.3 Fix bugs and add features (details to be written later) 1.0.2 Fix bugs and add features (details to be written later) 1.0.1 Fix bugs and add features (details to be written later) 1.0.0