Skip to content

6over3/zeroperl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

zeroperl is an experimental build of Perl5 in a sandboxed, self-contained WebAssembly module.

Read the full blog here

Build

Requires Docker or Apple Container (macOS).

Docker:

docker build -t zeroperl .
mkdir -p output
docker run --rm -v $(pwd)/output:/output zeroperl cp -r /artifacts/. /output/

Apple Container (macOS):

container build -t zeroperl .
mkdir -p output
container run --rm -v $(pwd)/output:/output zeroperl cp -r /artifacts/. /output/

Output in ./output/:

  • zeroperl.wasm — reactor with asyncify
  • zeroperl_reactor.wasm — reactor without asyncify
  • perl-wasi-prefix/ — Perl library prefix
  • exiftool.min.pl — minified ExifTool (if enabled)

Build args

Docker:

docker build --build-arg PERL_VERSION=5.42.0 --build-arg BUILD_EXIFTOOL=false -t zeroperl .

Apple Container:

container build --build-arg PERL_VERSION=5.42.0 --build-arg BUILD_EXIFTOOL=false -t zeroperl .
Available build arguments
Arg Default
PERL_VERSION 5.42.0 Perl source version
EXIFTOOL_VERSION 13.42 ExifTool version
BUILD_EXIFTOOL true Include ExifTool
STACK_SIZE 8388608 WASM stack (bytes)
INITIAL_MEMORY 33554432 WASM initial memory (bytes)
ASYNCIFY true Enable asyncify
TRIM true Strip unused modules

Iterating on stubs/zeroperl.c

Build from final stage to reuse cached wasi-perl:

Docker:

docker build --target final -t zeroperl .

Apple Container:

container build --target final -t zeroperl .

Testing

The easiest way to test a new build of zeroperl.wasm is to clone the TypeScript wrapper and run its test suite:

git clone https://github.com/6over3/zeroperl-ts

See the zeroperl-ts README for details.

Usage

Note: The first argument passed to Perl must be zeroperl. Depending on your runtime, you may need to map /dev/null as a preopen.

About

Perl5 in a sandboxed, self-contained WebAssembly module.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published