Guest language categorization changed since this release notes, Tier 2 languages are now called Tier 1 languages and Tier 3 languages are now called Tier 2 languages.
Breaking changes February 2024
The Golem Cloud February 2024 release, and the first Golem Open Source release contains a couple of breaking changes requiring installation of new tooling and rebuilding/re-uploading the user's projects, as it's core WASM engine was updated to the latest version.
This version uses the final WASI Preview2 version, released earlier in January 2024.
This page only contains the changes since the January 2024 release. Please check the following pages for the previous release notes:
Update to the latest WASI and component model versions
The WASI interface definitions had breaking changes since the version implemented in earlier Golem Cloud versions, having the following consequences:
- The required versions of tooling (depending on the guest language) has been changed. Make sure to install the new versions before compiling any template for Golem Cloud!
- The existing templates cannot run on the updated version of Golem Cloud. They need to be recompiled with the new tooling.
- There are some differences in the generated bindings / required settings etc, depending on the used guest language, so the template's source code may have to be updated before recompilation. These differences are collected below.
Common changes
The WASI interfaces has been updated to the final Preview2 version, marked as 0.2.0
.
If you were directly using any of the WASI interfaces, please check the updated definitions in the golem-wit (opens in a new tab) repository.
New templates generated with the latest version of golem-cli
will contain the updated definitions.
Guest languages which are using wasm-tools
to wrap the WASM module into a WASM component need a new version of wasm-tools
and the Preview2 adapters.
The required wasm-tools
version is 1.0.57:
cargo install --force --locked wasm-tools@1.0.57
The new tier2 and tier3 adapters are in the golem-wit (opens in a new tab) repository.
Rust specific changes
Rust projects now have to use cargo-component
version 0.7.0
, which comes with some breaking changes as it is documented on it's release page (opens in a new tab).
The cargo-component-bindings
dependency has to be replaced with a wit-bindgen
dependency:
[dependencies]
wit-bindgen = { version = "0.16.0", default-features = false, features = ["realloc"] }
and the cargo_component_bindings::generate!
macro call with a simple module definition:
mod bindings;
If you are using our reqwest
fork for HTTP requests, you need to update it to the update-feb-2024
branch:
[dependencies]
reqwest = { git = "https://github.com/zivergetech/reqwest", branch = "update-feb-2024", features = ["json"] }
Beside that you need to update cargo-component
itself to 0.7.0
as well:
cargo install --force --locked cargo-component@0.7.0
Javascript and Scala.JS specific changes
The package.json
file needs to be updated to use the updated version of the jco
and componentize-js
:
{
"devDependencies": {
"@bytecodealliance/jco": "1.0.0",
"@bytecodealliance/componentize-js": "0.7.0"
}
}
Python specific changes
The version of componentize-py
(0.11.0
) must be downloaded from https://github.com/golemcloud/componentize-py/releases/tag/golem-feb-2024
(opens in a new tab)
Go specific changes
The wit-bindgen
tool needs to be updated to a specific revision:
cargo install wit-bindgen-cli --git https://github.com/bytecodealliance/wit-bindgen --force --rev 61229eff20fdbc2fe7dac12a269cf7cea24e39d0
The roundtrip.go
HTTP client implementation needs to be updated, the latest code can be found at https://github.com/golemcloud/go-wasi-http (opens in a new tab).
C specific changes
The wit-bindgen
tool needs to be updated to a specific revision:
cargo install wit-bindgen-cli --git https://github.com/bytecodealliance/wit-bindgen --force --rev 61229eff20fdbc2fe7dac12a269cf7cea24e39d0