Skip to content

Releases: bytecodealliance/go-modules

v0.4.0

06 Nov 00:54
80d210d
Compare
Choose a tag to compare

This module has been renamed. Going forward, please use go.bytecodealliance.org instead of github.com/bytecodealliance/wasm-tools-go.

v0.3.1

01 Nov 16:53
abfccbd
Compare
Choose a tag to compare

Added

  • wit-bindgen-go now accepts arguments that control the level of logging output on stderr. Verbose mode (-v or --verbose) will print informational log lines, warnings, and errors. Debug mode (-vv or --debug) will emit finer-grained debugging information. By default, wit-bindgen-go will print warnings or errors.
  • New method (cm.Result).Result() (ok OK, err Err, isErr bool) added to streamline common patterns using result types. It has a value receiver, allowing it to be chained off a function call that returns a Result, eliminating the need to declare a temporary variable. For example: stream, err, isErr := stream.BlockingRead(n)

Fixed

  • #215: generate variant accessor methods with the correct scope for Go names.

New Contributors

v0.3.0

11 Oct 21:34
213610c
Compare
Choose a tag to compare

Added

  • Go type aliases are now generated for each WIT type alias (type foo = bar). Deep chains of type aliases (type b = a; type c = b;) are fully supported. Generated documentation now reflects whether a type is an alias. Fixes #204.
  • go:wasmimport and go:wasmexport functions are now generated in a separate .wasm.go file. This helps enable testing or use of generated packages outside of WebAssembly.
  • wit-bindgen-go generate now generates a WIT file for each WIT world in its corresponding Go package directory. For example the wasi:http/proxy world would generate wasi/http/proxy/proxy.wit.
  • wit-bindgen-go wit now accepts a --world argument in the form of imports, wasi:clocks/imports, or wasi:clocks/[email protected]. This filters the serialized WIT to a specific world and interfaces it references. This can be used to generate focused WIT for a specific world with a minimal set of dependencies.

Changed

  • Method wit.(*Package).WIT() now interprets the non-empty string name argument as signal to render in single-file, multi-package braced form.
  • wit.(*Resolve).WIT() and wit.(*Package).WIT() now accept a *wit.World as context to filter serialized WIT to a specific world.
  • Packages are now sorted topologically by dependency in generated WIT files. For example, wasi:cli would be followed by its dependencies like wasi:io, wasi:filesystem, or wasi:random.

v0.2.4

06 Oct 20:47
21699c0
Compare
Choose a tag to compare

Added

v0.2.3

05 Oct 23:30
1d46fbc
Compare
Choose a tag to compare

Added

  • wit-bindgen-go generate now accepts a remote registry reference to pull down a WIT package and generate the Go code. Example: wit-bindgen-go generate ghcr.io/webassembly/wasi/http:0.2.0.

Changed

  • cm.List now stores list length as a uintptr, permitted by the Go wasm types proposal. It was previously a uint, which was removed from the list of permitted types. There should be no change in the memory layout in TinyGo GOARCH=wasm or Go GOARCH=wasm32 using 32-bit pointers.
  • The helper functions cm.NewList, cm.LiftList, and cm.LiftString now accept any integer type for len, defined as cm.AnyInteger.
  • cm.Option[T].Value() method now value receiver (not pointer receiver), so it can be chained.

v0.2.2

04 Oct 00:44
3e89565
Compare
Choose a tag to compare

Added

  • All struct types in package cm now include structs.HostLayout on Go 1.23 or later.
  • Added type constraints AnyList, AnyResult, and AnyVariant in package cm to constrain generic functions accepting any of those types.
  • Variant types now implement fmt.Stringer, with a String method. Breaking: variant cases named string map to String_ in Go.
  • cm.Option[T] types now have a Value() convenience method that returns the zero value for T if the option represents the none case. For example, this simplifies getting an empty string or slice from option<string> or option<list<T>>, respectively.
  • Added a release workflow to publish tagged releases to GitHub.

Fixed

  • wit-bindgen-go --version now displays the version without empty ().

v0.2.1

26 Sep 18:29
b407035
Compare
Choose a tag to compare

Added

  • Generated structs and structs in package cm now include a HostLayout field in order to conform with the relaxed types proposal for GOARCH=wasm32. The cm.HostLayout type is an alias for structs.HostLayout on Go 1.23 or later, and a polyfill for Go 1.22 or earlier.
  • #163: added cm.F32ToU64() and cm.U64ToF32() for flattening f32 and u64 types in the Canonical ABI.
  • Test data from bytecodealliance/wit-bindgen/tests/codegen.

Fixed

  • #159: correctly escape all WIT keywords, including when used in package names.
  • #160: fixed the use of Go reserved keywords in function returns as result types.
  • #161: correctly handle constructor as a WIT keyword in wit.
  • #165: fixed use of imported types in exported functions.
  • #167: fixed a logic flaw in TestHasBorrow.
  • #170: resolve implied names for interface imports and exports in a world.
  • #175: generated correct symbol names for imported and exported functions in worlds ($root) or interfaces declared inline in worlds.

v0.2.0

05 Sep 18:21
2db01f1
Compare
Choose a tag to compare

This project has moved! wasm-tools-go is now an official Bytecode Alliance project.

Going forward, please update your Go imports from github.com/ydnar/wasm-tools-go to github.com/bytecodealliance/wasm-tools-go. Thanks to @ricochet, @mossaka, @lxfontes, and others for their help making this possible.

Changed

Fixed

  • #151: backport support for JSON generated by wasm-tools prior to v1.209.0, which added @since and @unstable feature gates.

v0.1.5

23 Aug 22:13
dc4cac5
Compare
Choose a tag to compare

Added

  • wit-bindgen-go --version now reports the module version and git revision of the wit-bindgen-go command.

Changed

v0.1.4

16 Jul 19:47
fa5e4cb
Compare
Choose a tag to compare

Added

  • wit-bindgen-go generate now accepts a --cm option to specify the Go import path to package cm. Used for custom or internal implementations of package cm. Defaults to github.com/ydnar/wasm-tools-go/cm.
  • Tuple9...Tuple16 types in package cm to align with component-model#373. Tuples with 9 to 16 types will no longer generate inline struct types.
  • Documentation for Canonical ABI lift and lower helper functions in package cm.

Changed

  • Removed outdated documentation in design.