mozilla / uniffi-rs

a multi-language bindings generator for rust
https://mozilla.github.io/uniffi-rs/
Mozilla Public License 2.0
2.65k stars 218 forks source link

future FFI functions generated even when async function are not used #1801

Open arg0d opened 10 months ago

arg0d commented 10 months ago

From sprites example, using v0.25.0.

$ nm target/debug/libuniffi_sprites.so | grep " ffi_uniffi_sprites"
0000000000018ce0 T ffi_uniffi_sprites_foreign_executor_callback_set
0000000000018bd0 T ffi_uniffi_sprites_rustbuffer_alloc
0000000000018c50 T ffi_uniffi_sprites_rustbuffer_free
0000000000018c00 T ffi_uniffi_sprites_rustbuffer_from_bytes
0000000000018ca0 T ffi_uniffi_sprites_rustbuffer_reserve
0000000000019020 T ffi_uniffi_sprites_rust_future_cancel_f32
0000000000019080 T ffi_uniffi_sprites_rust_future_cancel_f64
0000000000018e40 T ffi_uniffi_sprites_rust_future_cancel_i16
0000000000018f00 T ffi_uniffi_sprites_rust_future_cancel_i32
0000000000018fc0 T ffi_uniffi_sprites_rust_future_cancel_i64
0000000000018d80 T ffi_uniffi_sprites_rust_future_cancel_i8
00000000000190e0 T ffi_uniffi_sprites_rust_future_cancel_pointer
0000000000019140 T ffi_uniffi_sprites_rust_future_cancel_rust_buffer
0000000000018de0 T ffi_uniffi_sprites_rust_future_cancel_u16
0000000000018ea0 T ffi_uniffi_sprites_rust_future_cancel_u32
0000000000018f60 T ffi_uniffi_sprites_rust_future_cancel_u64
0000000000018d20 T ffi_uniffi_sprites_rust_future_cancel_u8
00000000000191c0 T ffi_uniffi_sprites_rust_future_cancel_void
0000000000019030 T ffi_uniffi_sprites_rust_future_complete_f32
0000000000019090 T ffi_uniffi_sprites_rust_future_complete_f64
0000000000018e50 T ffi_uniffi_sprites_rust_future_complete_i16
0000000000018f10 T ffi_uniffi_sprites_rust_future_complete_i32
0000000000018fd0 T ffi_uniffi_sprites_rust_future_complete_i64
0000000000018d90 T ffi_uniffi_sprites_rust_future_complete_i8
00000000000190f0 T ffi_uniffi_sprites_rust_future_complete_pointer
0000000000019150 T ffi_uniffi_sprites_rust_future_complete_rust_buffer
0000000000018df0 T ffi_uniffi_sprites_rust_future_complete_u16
0000000000018eb0 T ffi_uniffi_sprites_rust_future_complete_u32
0000000000018f70 T ffi_uniffi_sprites_rust_future_complete_u64
0000000000018d30 T ffi_uniffi_sprites_rust_future_complete_u8
00000000000191d0 T ffi_uniffi_sprites_rust_future_complete_void
0000000000018cf0 T ffi_uniffi_sprites_rust_future_continuation_callback_set
0000000000019050 T ffi_uniffi_sprites_rust_future_free_f32
00000000000190b0 T ffi_uniffi_sprites_rust_future_free_f64
0000000000018e70 T ffi_uniffi_sprites_rust_future_free_i16
0000000000018f30 T ffi_uniffi_sprites_rust_future_free_i32
0000000000018ff0 T ffi_uniffi_sprites_rust_future_free_i64
0000000000018db0 T ffi_uniffi_sprites_rust_future_free_i8
0000000000019110 T ffi_uniffi_sprites_rust_future_free_pointer
0000000000019190 T ffi_uniffi_sprites_rust_future_free_rust_buffer
0000000000018e10 T ffi_uniffi_sprites_rust_future_free_u16
0000000000018ed0 T ffi_uniffi_sprites_rust_future_free_u32
0000000000018f90 T ffi_uniffi_sprites_rust_future_free_u64
0000000000018d50 T ffi_uniffi_sprites_rust_future_free_u8
00000000000191f0 T ffi_uniffi_sprites_rust_future_free_void
0000000000019000 T ffi_uniffi_sprites_rust_future_poll_f32
0000000000019060 T ffi_uniffi_sprites_rust_future_poll_f64
0000000000018e20 T ffi_uniffi_sprites_rust_future_poll_i16
0000000000018ee0 T ffi_uniffi_sprites_rust_future_poll_i32
0000000000018fa0 T ffi_uniffi_sprites_rust_future_poll_i64
0000000000018d60 T ffi_uniffi_sprites_rust_future_poll_i8
00000000000190c0 T ffi_uniffi_sprites_rust_future_poll_pointer
0000000000019120 T ffi_uniffi_sprites_rust_future_poll_rust_buffer
0000000000018dc0 T ffi_uniffi_sprites_rust_future_poll_u16
0000000000018e80 T ffi_uniffi_sprites_rust_future_poll_u32
0000000000018f40 T ffi_uniffi_sprites_rust_future_poll_u64
0000000000018d00 T ffi_uniffi_sprites_rust_future_poll_u8
00000000000191a0 T ffi_uniffi_sprites_rust_future_poll_void
0000000000018bc0 T ffi_uniffi_sprites_uniffi_contract_version
mhammond commented 4 months ago

A bit late to the party here, but the code which generates this has no idea about what is actually in the component interface. I don't see an obvious way to fix this.