Releases: vmware-labs/mod_wasm
v0.12.2
v0.12.1
0.12.1 (2023/07/03)
This version bumps Wasmtime to 10.0.1 to include PR #6348 and other improvements such as preliminary support for WASI preview 2.
libwasm_runtime.so
- Dependencies:
- Upgrading Wasmtime dependency:
wasmtime
from7.0.1
to10.0.1
.once_cell
to1.18.0
.
- Updated
cargo.lock
dependencies viacargo update
.
- Upgrading Wasmtime dependency:
v0.12.0
0.12.0 (2023/06/30)
This version introduces a new Apache directive: WasmMapCGIFileNames
.
It enables/disables the mapping of SCRIPT_FILENAME
based on the different WasmMapDir
instances when WasmEnableCGI
is enabled.
In addition, it normalizes filename paths for both Windows and Linux styes.
WasmEnableCGI On
WasmMapCGIFileNames On
WasmMapDir /app C:/myapp/htdocs
In the example, SCRIPT_FILENAME
will store /app/index.php
instead of the host path C:/myapp/htdocs/index.php
.
Without this setting, we would also need to provide a WasmDir
granting access to C:/myapp/htdocs
as the Wasm module would be trying to access it (or setting WasmMapDir C:/myapp/htdocs C:/myapp/htdocs
).
v0.11.3
0.11.3 (2023/05/08)
This release fixes a regression issue introduced in 0.11.2 when opening directories on Windows. It doesn't affect other platforms.
The issue is realated to Wasmtime 8.0.1 (see PR #6348), so downgrading to 7.0.1
.
libwasm_runtime.so
- Dependencies:
- Downgrading Wasmtime dependency:
wasmtime
from8.0.1
to7.0.1
.
- Updated
cargo.lock
dependencies viacargo update
.
- Downgrading Wasmtime dependency:
v0.11.2
0.11.2 (2023/05/02)
This is a security update to bump Wasmtime to 8.0.1 given the CVE published (low severity) and addressed in:
libwasm_runtime.so
- Dependencies:
- Bump version dependencies:
wasmtime
to8.0.1
.anyhow
to1.0.71
.
- Updated
cargo.lock
dependencies viacargo update
.
- Bump version dependencies:
v0.11.1
0.11.1 (2023/03/31)
- Fixes #40, where a new thread could not create a new Wasm execution context while another thread was running a Wasm module. This was only measurable if the execution of the Wasm module was long enough in time or if it took longer than expected (i.e.: I/O issues, infinite loop, etc.). Note that CPU-limited Wasm executions are not implemented yet (see #9).
libwasm_runtime.so
- Internal refactoring of
execution_ctx.rs
to address #40. - Updated
cargo.lock
dependencies viacargo update
.
v0.11.0
0.11.0 (2023/03/27)
- In this version, Wasm modules can now return any output type via stdout, including binaries with non UTF-8 bytes sequences or
\0
NULL terminators in the middle. - Also added some minor improvements for error management and building scripts.
mod_wasm.so
- Support for the new
wasm_executionctx_run()
signature in the wasm_runtime C-API. - Better error management when invoking
ap_scan_script_header_err_strs()
. - Some improvements in
build.sh
per #36.
libwasm_runtime.so
- Now the Wasm module
stdout
is modelled as aVec<u8>
instead of aString
:- This prevents an exception when a module emits a non UTF-8 output.
- New signature for
wasm_executionctx_run()
in the C-API now requires buffer and length pointers:- This allows NULL terminators (
\0
) in the middle of the output to be managed by C without truncating the string (ie.: requiresfwrite()
instead offprintf()
, etc.).
- This allows NULL terminators (
- Better
clean_all
target in Makefile. - Dependencies:
- Bump version dependencies:
wasmtime
to7.0.0
.anyhow
to1.0.70
.
- Updated
cargo.lock
dependencies viacargo update
.
- Bump version dependencies:
httpd-mod-wasm
demo container
- Enabling
mod_rewrite
. - Adding
/php-hello-slim
demo. - Adding
WasmEnv TMPDIR /tmp
directive to all PHP-related demos. - Adding stubs for Drupal and Drupal-Zero demos (still WIP).
v0.10.3
0.10.3 (2023/03/08)
This is a security update to bump Wasmtime to 6.0.1 given the two CVE published (one critical) and addressed in:
libwasm_runtime.so
- Dependencies:
- Bump version dependencies:
wasmtime
to6.0.1
.anyhow
to1.0.69
.once_cell
to1.17.1
.
- Updated
cargo.lock
dependencies viacargo update
.
- Bump version dependencies:
v0.10.2
0.10.2 (2023/01/09)
libwasm_runtime.so
- Dependencies:
- Bump version dependencies:
wasmtime
to4.0.0
.- As a consequence, update code to invoke
get_typed_func<Params, Results>()
with only two arguments.
- As a consequence, update code to invoke
anyhow
to1.0.66
.once_cell
to1.17.0
.
- Updated
cargo.lock
dependencies viacargo update
.
- Bump version dependencies:
0.10.1 (2022/12/12)
mod_wasm.so
- All logging is now properly route to
ap_log_error()
,ap_log_perror()
andap_log_rerror()
. - Apache-2.0 extended license headers.
- Only C89 comments (/* */).
libwasm_runtime.so
- Dependencies:
- Bump version dependencies:
wasmtime
to3.0.1
.
- Updated
cargo.lock
dependencies viacargo update
.
- Bump version dependencies:
0.10.0 (2022/11/28)
-
In this version, among other improvements, we introduce two major features implementing #6, #7, and #16.
-
Wasm multi-module support:
Now you can specify different Wasm modules to be used in different routes. For instance, now it’s possible with one-single Apache instance to load simultaneously the Wasm builds for the PHP and Python interpreters (and any other languages that compile to Wasm now or in the future).
-
Shared Wasm modules:
Now you can specify different per-route configurations to the same Wasm module. The Wasm binary is loaded in memory only once, and the different configurations are applied to the Wasm module per-HTTP request. Also, now each Wasm execution owns its own
stdout
buffer, so there are no interlocks between executions anymore.
Combining all together, you can now have a more flexible configuration such as:
<Location /wordpress> SetHandler wasm-handler WasmModule /var/www/modules/php7.4.32.wasm WasmDir /tmp … </Location> <Location /python-app> SetHandler wasm-handler WasmModule /var/www/modules/python3.11.wasm WasmArg /var/www/python-app/app.py … </Location> <Location /python-app2> SetHandler wasm-handler WasmModule /var/www/modules/python3.11.wasm WasmArg /var/www/python-app2/app2.py … </Location>
-
mod_wasm.so
- Removed the
WasmRoot
directive. Now,WasmModule
accepts the full Wasm module filepath. - Removed legacy code:
- In previous versions, given the only-one Wasm module limitation,
mod_wasm.c
implemented a mechanism to reset the WASI context for each HTTP request. This is not needed anymore. - Old code inherited from
mod_example_hooks.c
and not used.
- In previous versions, given the only-one Wasm module limitation,
libwasm_runtime.so
- C-API:
- Reorganized functions and their names to be compliant with the new features and to be more idiomatic (🚨 breaks backwards compatibility 🚨).
- Removed any kind of logic different from C <---> Rust FFI data transformation.
- Improved error messages with more information.
- Fixed most suggestions from
cargo clippy -- -W clippy::pedantic
. - Dependencies:
- Bump version dependencies:
wasmtime
to3.0.0
.once_cell
to1.16.0
.
- New dependency:
rand
to0.8.5
.
- Updated
cargo.lock
dependencies viacargo update
.
- Bump version dependencies: