mirror of
https://github.com/extism/extism.git
synced 2026-04-23 03:00:11 -04:00
- Requires modules compiled to run with manifests that set `max_memory`
to have an exported memory with lower and upper bounds
- Includes the size of memory exported from modules when calculating
available memory for plugins
## How to compile a module with bounded memory
You will need to pass `--max-memory=$NUM_BYTES` to wasm-ld. `$NUM_BYTES`
must be a multiple of the page size. Here are some examples for
supported PDK languages:
**C**
Pass `-Wl,--max-memory=65536` to your C compiler
**Rust**:
In a `.cargo/config` file:
```toml
[target.wasm32-unknown-unknown]
rustflags = ["-Clink-args=--max-memory=65536"]
```
**Haskell**
Add the following to the cabal file entry for your `cabal.project` file:
```
package myproject
ghc-options:
-optl -Wl,--max-memory=65536
```
**AssemblyScript**
Pass `--maximumMemory 65536` to the assemblyscropt compiler
**TinyGo**:
Create a `target.json` file:
```json
{
"inherits": [ "wasm" ],
"ldflags": [
"--max-memory=65536",
]
}
```
and build using `tinygo -target ./target.json`
17 lines
461 B
PHP
17 lines
461 B
PHP
<?php
|
|
|
|
require_once __DIR__ . '/vendor/autoload.php';
|
|
|
|
$wasm = file_get_contents("../../wasm/code.wasm");
|
|
$plugin = new \Extism\Plugin($wasm);
|
|
|
|
$output = $plugin->call("count_vowels", "this is an example");
|
|
$json = json_decode(pack('C*', ...$output));
|
|
echo "Vowels counted = " . $json->{'count'} . PHP_EOL;
|
|
|
|
$wasm = file_get_contents("../../wasm/code.wasm");
|
|
$ok = $plugin->update($wasm);
|
|
if ($ok) {
|
|
$id = $plugin->getId();
|
|
echo "updated plugin: $id";
|
|
} |