Releases: vmware-labs/mod_wasm
Release list
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:
wasmtimefrom7.0.1to10.0.1.once_cellto1.18.0.
- Updated
cargo.lockdependencies 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/htdocsIn 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:
wasmtimefrom8.0.1to7.0.1.
- Updated
cargo.lockdependencies 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:
wasmtimeto8.0.1.anyhowto1.0.71.
- Updated
cargo.lockdependencies 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.rsto address #40. - Updated
cargo.lockdependencies 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
\0NULL 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.shper #36.
libwasm_runtime.so
- Now the Wasm module
stdoutis 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_alltarget in Makefile. - Dependencies:
- Bump version dependencies:
wasmtimeto7.0.0.anyhowto1.0.70.
- Updated
cargo.lockdependencies viacargo update.
- Bump version dependencies:
httpd-mod-wasm demo container
- Enabling
mod_rewrite. - Adding
/php-hello-slimdemo. - Adding
WasmEnv TMPDIR /tmpdirective 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:
wasmtimeto6.0.1.anyhowto1.0.69.once_cellto1.17.1.
- Updated
cargo.lockdependencies viacargo update.
- Bump version dependencies:
v0.10.2
0.10.2 (2023/01/09)
libwasm_runtime.so
- Dependencies:
- Bump version dependencies:
wasmtimeto4.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
anyhowto1.0.66.once_cellto1.17.0.
- Updated
cargo.lockdependencies 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:
wasmtimeto3.0.1.
- Updated
cargo.lockdependencies 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
stdoutbuffer, 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
WasmRootdirective. Now,WasmModuleaccepts the full Wasm module filepath. - Removed legacy code:
- In previous versions, given the only-one Wasm module limitation,
mod_wasm.cimplemented a mechanism to reset the WASI context for each HTTP request. This is not needed anymore. - Old code inherited from
mod_example_hooks.cand 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:
wasmtimeto3.0.0.once_cellto1.16.0.
- New dependency:
randto0.8.5.
- Updated
cargo.lockdependencies viacargo update.
- Bump version dependencies: