fp-bindgen v3.0.0 packs a lot of goodies. While we had to postpone the migration to Wasmer 3 itself, we did make all the preparations so that introducing Wasmer 3 support should be feasible without another breaking change. The main things to look out for are that some symbols, including the "host"
feature, have been renamed to refer to wasmer2
explicitly.
Other nice feaures are support for JSON maps, better ways to specify Cargo fields and dependencies, and streaming instantiation support for the TypeScript runtime (which is also enabled by default).
Added
- Added support for
serde_json::Map
(#163). - Added support for specifying custom Cargo registries with
CargoDependency
. - Added helpers for building
CargoDependency
with a git repository. - Added
description
,readme
andlicense
fields toRustPluginConfig
.
Changed
- BREAKING: The TypeScript runtime now uses streaming instantiation for the WebAssembly module by default.
- BREAKING:
BindingsType::TsRuntimeWithExtendedConfig
has been renamed back toBindingsType::TsRuntime
(and the oldBindingsType::TsRuntime
, which was deprecated in 2.0.0, is now removed). - BREAKING: Renamed the
RustWasmerRuntime
andRustWasmerWasiRuntime
toRustWasmer2Runtime
andRustWasmer2WasiRuntime
, respectively. This is in anticipation for supporting Wasmer 3 in an upcoming release. For more information, please see: #185 - BREAKING: Replaced the
rust_plugin_module
andrust_wasmer_runtime_module
annotations with a singlerust_module
annotation. - BREAKING:
RustPluginConfig
now needs to be initialized usingRustPluginConfig::builder()
. Struct initialization syntax will not work anymore. - BREAKING:
CargoDependency
is now marked as non-exhaustive to prevent future breaking changes. - BREAKING: Renamed the
host
feature towasmer2_host
. - Added MIT as an option to the project licensing.
- Struct fields annotated with
skip_serializing_if
are treated as optional by the TypeScript binding generator. - Struct fields generated by
fp-bindgen
will not automatically add any Serde annotations that were not there in the original protocol definition. - Every field in the
RustPluginConfig
builder can be set toRustPluginConfigValue::Workspace
to indicate the value in the generatedCargo.toml
should come from the workspace instead. - Changed primitive tests in example to call imported functions from the plugin.