Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

prerelease 0.4.0 #555

Merged
merged 2 commits into from
Jun 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 64 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# Table of Contents

- [0.4.0]
- [0.3.0]
- [0.2.0]
- [0.1.1]
Expand Down Expand Up @@ -32,6 +33,67 @@ As for Nginx developers, the module can also be used to write other modules; the
best resource for that sort of information would be
[DEVELOPER.md](https://github.com/Kong/ngx_wasm_module/tree/main/docs/DEVELOPER.md).

## 0.4.0

> 2024/06/25 - Prerelease
>
> [Documentation](https://github.com/Kong/ngx_wasm_module/tree/prerelease-0.4.0/docs)
> | [Release assets](https://github.com/Kong/ngx_wasm_module/releases/tag/prerelease-0.4.0)

This prerelease introduces support for Proxy-Wasm metrics and fixes a number of
issues related to the execution of Proxy-Wasm dispatches and Lua bridge threads
(`proxy_wasm_lua_resolver` directive).

#### Changes

> [0.3.0...0.4.0](https://github.com/Kong/ngx_wasm_module/compare/prerelease-0.3.0...prerelease-0.4.0)

- Proxy-Wasm
- Feature: implement support for Proxy-Wasm ABI v0.2.1 metrics.
- Feature: allow setting the `:status` pseudo-header on response for status
manipulation.
- Bugfix: cancel dispatches when immediately producing a response before a
scheduled dispatch starts.
- Misc: consistent context checks for all request/response header setters.
- Misc: dispatch errors do not interrupt filter chains anymore.
- Wasmtime
- Feature: new `cache_config` directive to enable compilation cache.
- V8
- Bugfix: prevent a segfault loading an empty `.wat` module with V8.
- LuaJIT FFI
- Bugfix: allow `proxy_wasm.load()` to fail and be invoked again.
- Lua bridge
- Bugfix: properly support multiple parallel yielding Lua threads (e.g.
`proxy_wasm_lua_resolver` directive).
- Misc
- Feature: new `postpone_rewrite` and `postpone_access` directives.
- Bugfix: resume content phase when reading request body produced EAGAIN.
- Bugfix: fix memory reallocation when a key/value pair has its value replaced
by a larger one.

#### Dependencies

This release is tested with the following Nginx versions and dependencies:

Name | Version | Notes
---------:|:---------------:|:--------------------------------------------------
Nginx | [1.27.0](https://nginx.org/en/download.html) |
OpenSSL | [3.3.1](https://www.openssl.org/source/) |
Wasmtime | [19.0.0](https://github.com/bytecodealliance/wasmtime/releases) |
Wasmer | [3.1.1](https://github.com/wasmerio/wasmer/releases/) |
V8 | [12.0.267.17](https://github.com/Kong/ngx_wasm_runtimes/releases/) | Built by [Kong/ngx_wasm_runtimes] for convenience.
OpenResty | [1.25.3.1](https://openresty.org/en/download.html) | No binary, tested only.

#### Components

Same as [0.1.0].

#### Known Issues

N/A

[Back to TOC](#table-of-contents)

## 0.3.0

> 2024/02/22 - Prerelease
Expand Down Expand Up @@ -72,7 +134,7 @@ OpenSSL | [3.2.1](https://www.openssl.org/source/) |
Wasmtime | [14.0.3](https://github.com/bytecodealliance/wasmtime/releases) |
Wasmer | [3.1.1](https://github.com/wasmerio/wasmer/releases/) |
V8 | [12.0.267.17](https://github.com/Kong/ngx_wasm_runtimes/releases/) | Built by [Kong/ngx_wasm_runtimes] for convenience.
OpenResty | [1.25.3.2](https://openresty.org/en/download.html) | No binary, tested only.
OpenResty | [1.25.3.1](https://openresty.org/en/download.html) | No binary, tested only.

#### Components

Expand Down Expand Up @@ -271,6 +333,7 @@ lua-resty-wasmx | A LuaJIT FFI binding exposing some of ngx_wasm_module's featur

[Back to TOC](#table-of-contents)

[0.4.0]: #040
[0.3.0]: #030
[0.2.0]: #020
[0.1.1]: #011
Expand Down
6 changes: 5 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ update:

.PHONY: todo
todo:
@/bin/grep -rIFn -- 'TODO' src/ t/
@/bin/grep -rIFn -- 'TODO' src/ lib/ t/ util/

.PHONY: act-build
act-build:
Expand All @@ -93,6 +93,10 @@ act-build:
act: act-build
@act --reuse --pull=false

.PHONY: changelog
changelog:
@util/changelog.sh

.PHONY: coverage
coverage: clean
NGX_BUILD_GCOV=1 make
Expand Down
3 changes: 2 additions & 1 deletion docs/DEVELOPER.md
Original file line number Diff line number Diff line change
Expand Up @@ -174,8 +174,9 @@ release artifacts).
| `lint` | Lint the sources and test cases
| `reindex` | Automatically format the `.t` test files
| `update` | Run `cargo update` in all workspaces
| `todo` | Search the project for "TODOs" (source + tests)
| `todo` | Search the project for "TODOs" (source, tests, scripts)
| `act` | Build and run the CI environment
| `changelog` | Print all changelog-worthy commits since the last release
| `clean` | Clean the latest build
| `cleanup` | Does `clean` and also cleans some more of the build environment to free-up disk space
| `cleanall` | Destroy the build environment
Expand Down
27 changes: 27 additions & 0 deletions util/changelog.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#!/usr/bin/env bash
set -e

SCRIPT_NAME=$(basename $0)
NGX_WASM_DIR=${NGX_WASM_DIR:-"$(
cd $(dirname $(dirname ${0}))
pwd -P
)"}
if [[ ! -f "${NGX_WASM_DIR}/util/_lib.sh" ]]; then
echo "Unable to source util/_lib.sh" >&2
exit 1
fi

source $NGX_WASM_DIR/util/_lib.sh

###############################################################################

cd $NGX_WASM_DIR

# TODO: be smarter about grabbing the proper tag once we have more than just
# prerelease tags
LATEST_TAG=$(git describe --tags --abbrev=0)

# Only show user-facing commits. Include refactor(), misc() and use best
# judgement whether or not to include them in the final release description).
git --no-pager log --format=oneline $LATEST_TAG.. \ | sed "s/^[^ ]* //" \ |
$(which grep) -v -E '^(chore|tests|style|hotfix|docs)'