Skip to content

Commit

Permalink
Merge pull request #255 from bytecodealliance/ydnar/cm-module
Browse files Browse the repository at this point in the history
cm: extract package cm into its own distinct module
  • Loading branch information
ydnar authored Dec 14, 2024
2 parents 4404cd2 + 272cc7e commit 8c86cf4
Show file tree
Hide file tree
Showing 12 changed files with 104 additions and 33 deletions.
6 changes: 6 additions & 0 deletions .github/dependabot.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,12 @@ updates:
interval: weekly
open-pull-requests-limit: 10

- package-ecosystem: gomod
directory: "/cm"
schedule:
interval: weekly
open-pull-requests-limit: 10

- package-ecosystem: gomod
directory: "/tests"
schedule:
Expand Down
5 changes: 4 additions & 1 deletion .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ on:
tags:
- 'v[0-9]+.[0-9]+.*'

env:
go-modules: ./... ./cm/...

jobs:
build:
name: Build binaries
Expand All @@ -30,7 +33,7 @@ jobs:
go-version-file: go.mod

- name: Run Go tests
run: go test -v ./...
run: go test ${{ env.go-modules }}

- name: Build binary
run: |
Expand Down
19 changes: 10 additions & 9 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ on:
- 'LICENSE'

env:
go-modules: ./... ./cm/...
wasm-tools-version: "1.219.1"
wasmtime-version: "26.0.0"

Expand All @@ -34,7 +35,7 @@ jobs:
go-version-file: go.mod

- name: Vet Go code
run: go vet ./...
run: go vet ${{ env.go-modules }} ./tests/...

# Test with Go
test-go:
Expand All @@ -61,15 +62,15 @@ jobs:
version: ${{ env.wasm-tools-version }}

- name: Run Go tests
run: go test -v ./...
run: go test -v ${{ env.go-modules }}

- name: Run Go tests with race detector
run: go test -v -race ./...
run: go test -v -race ${{ env.go-modules }}

- name: Test Go without cgo
env:
CGO_ENABLED: 0
run: go test -v ./...
run: go test -v ${{ env.go-modules }}

- name: Verify repo is unchanged
run: git diff --exit-code HEAD
Expand Down Expand Up @@ -108,7 +109,7 @@ jobs:
version: ${{ env.wasm-tools-version }}

- name: Test with TinyGo
run: tinygo test -v ./...
run: tinygo test -v ${{ env.go-modules }}

- name: Verify repo is unchanged
run: git diff --exit-code HEAD
Expand Down Expand Up @@ -164,19 +165,19 @@ jobs:
env:
GOARCH: wasm
GOOS: wasip1
run: go test -v ./...
run: go test -v ${{ env.go-modules }}

- name: Test wasm/wasip1 with TinyGo 0.32.0
if: ${{ matrix.tinygo-version == '0.32.0' }}
run: tinygo test -v -target=wasi ./...
run: tinygo test -v -target=wasi ${{ env.go-modules }}

- name: Test wasm/wasip1 with TinyGo >= 0.33.0
if: ${{ matrix.tinygo-version != '0.32.0' }}
run: tinygo test -v -target=wasip1 ./...
run: tinygo test -v -target=wasip1 ${{ env.go-modules }}

- name: Test wasm/wasip2 with TinyGo >= 0.33.0
if: ${{ matrix.tinygo-version != '0.32.0' }}
run: tinygo test -v -target=wasip2 ./...
run: tinygo test -v -target=wasip2 ${{ env.go-modules }}

- name: Test generated Go with TinyGo >= 0.34.0
if: ${{ matrix.tinygo-version != '0.32.0' && matrix.tinygo-version != '0.33.0' }}
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
.DS_Store
/generated
go.work.sum
12 changes: 8 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),

## [Unreleased]

### Changed

- Breaking: package [`cm`](https://pkg.go.dev/go.bytecodealliance.org/cm) is now a separate [module](https://go.dev/ref/mod). This change was made in order to minimize the runtime dependencies of programs that depend on package `cm` but not the rest of the packages in this module. To update your code that depends on package `cm`, run `go get -u go.bytecodealliance.org/...`.

### Fixed

- [#264](https://github.com/bytecodealliance/go-modules/issues/264): fix lowering for imported functions that return named `bool` types.
Expand All @@ -14,15 +18,15 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),

- `wit-bindgen-go wit` now accepts an `--interface` argument in the form of `monotonic-clock`, `wasi:clocks/monotonic-clock`, or `wasi:clocks/[email protected]`. This filters the serialized WIT to a specific interface and the other interface(s) it references. This can be used to generate focused WIT with a minimal set of dependencies, and can be combined with the `--world` argument to filter serialized WIT to the intersection of a specific world and interface.

### Fixed

- [#240](https://github.com/bytecodealliance/go-modules/issues/240): correctly handle cyclical data structures when generating variant lowering code.

### Changed

- Breaking: package `wit` no longer interprets `-` to read from stdin when loading JSON or WIT using `wit.LoadJSON` or `wit.LoadWIT`. Use `wit.DecodeJSON` or `wit.DecodeWIT` to read JSON or WIT from an `io.Reader`.
- Breaking: `wit.ParseWIT` has been removed. Use `wit.DecodeWIT(bytes.NewReader(b))` instead.

### Fixed

- [#240](https://github.com/bytecodealliance/go-modules/issues/240): correctly handle cyclical data structures when generating variant lowering code.

## [v0.4.0] — 2024-11-05

This module has been renamed. Going forward, please use `go.bytecodealliance.org` instead of `github.com/bytecodealliance/wasm-tools-go`.
Expand Down
14 changes: 12 additions & 2 deletions RELEASE.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,25 @@

This document describes the steps to release a new version of the `wit-bindgen-go` CLI.

## 1. Update [CHANGELOG.md](./CHANGELOG.md)
## 1. Prerequisites

If package `cm` has changed, make the neccessary updates to [cm/CHANGELOG.md](./cm/CHANGELOG.md) and create a new release for `go.bytecodealliance.org/cm`. Then update the dependency in this module by running:

```console
go get -u go.bytecodealliance.org/cm@latest
```

Commit those changes prior to tagging a new release of this module.

## 2. Update [CHANGELOG.md](./CHANGELOG.md)

1. Add the latest changes to [CHANGELOG.md](./CHANGELOG.md).
1. Rename the Unreleased section to reflect the new version number.
1. Update the links to new version tag in the footer of CHANGELOG.md
1. Add today’s date (YYYY-MM-DD) after an em dash (—).
1. Submit a [GitHub Pull Request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests) with these updates.

## 2. Create a new release
## 3. Create a new release

Once the PR is merged, tag the new version in Git and push the tag to GitHub.

Expand Down
10 changes: 10 additions & 0 deletions cm/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Changelog

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

Initial version, extracted into module [`go.bytecodealliance.org/cm`](https://pkg.go.dev/go.bytecodealliance.org/cm).

[Unreleased]: <https://github.com/bytecodealliance/go-modules/compare/cm/v0.1.0..HEAD>
[v0.1.0]: <https://github.com/bytecodealliance/go-modules/tree/cm/v0.1.0>
15 changes: 15 additions & 0 deletions cm/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# go.bytecodealliance.org/cm

[![pkg.go.dev](https://img.shields.io/badge/docs-pkg.go.dev-blue.svg)](https://pkg.go.dev/go.bytecodealliance.org/cm) [![build status](https://img.shields.io/github/actions/workflow/status/bytecodealliance/go-modules/test.yaml?branch=main)](https://github.com/bytecodealliance/go-modules/actions)

## About

Package `cm` contains helper types and functions used by generated packages, such as `option<t>`, `result<ok, err>`, `variant`, `list`, and `resource`. These are intended for use by generated [Component Model](https://github.com/WebAssembly/component-model/blob/main/design/mvp/Explainer.md#type-definitions) bindings, where the caller converts to a Go equivalent. It attempts to map WIT semantics to their equivalent in Go where possible.

### Note on Memory Safety

Package `cm` and generated bindings from `wit-bindgen-go` may have compatibility issues with the Go garbage collector, as they directly represent `variant` and `result` types as tagged unions where a pointer shape may be occupied by a non-pointer value. The GC may detect and throw an error if it detects a non-pointer value in an area it expects to see a pointer. This is an area of active development.

## License

This project is licensed under the Apache 2.0 license with the LLVM exception. See [LICENSE](../LICENSE) for more details.
34 changes: 34 additions & 0 deletions cm/RELEASE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Release

This document describes the steps to release a new version of module `go.bytecodealliance.org/cm`.

## 1. Update [CHANGELOG.md](./CHANGELOG.md)

1. Add the latest changes to [CHANGELOG.md](./CHANGELOG.md).
1. Rename the Unreleased section to reflect the new version number.
1. Update the links to new version tag in the footer of CHANGELOG.md
1. Add today’s date (YYYY-MM-DD) after an em dash (—).
1. Submit a [GitHub Pull Request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests) with these updates.

## 2. Create a new release

Once the PR is merged, tag the new version in Git and push the tag to GitHub.

**Note:** the tag **must** start with the prefix `cm/` in order to correctly tag this module.

For example, to tag version `cm/v0.2.0`:

```console
git tag cm/v0.2.0
git push origin cm/v0.2.0
```

## 3. Update the root module

Once the tag is pushed, you can update the root module to depend on the newly created version of package `cm` by running the following:

```console
go get -u go.bytecodealliance.org/cm@latest
```

Then follow the instructions in [RELEASE.md](../RELEASE.md) to release a new version of the root module.
3 changes: 3 additions & 0 deletions cm/go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module go.bytecodealliance.org/cm

go 1.22.0
1 change: 1 addition & 0 deletions go.work
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@ go 1.22.0

use (
.
./cm
./tests
)
17 changes: 0 additions & 17 deletions go.work.sum

This file was deleted.

0 comments on commit 8c86cf4

Please sign in to comment.