Welcome to the new Golem Cloud Docs! 👋
Documentation
February 2024
💡

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