The format is based on Keep a Changelog.
Looking for changes that affect our C API? See the C API Changelog.
This release mostly consists of bug fixes and clean ups.
- #5259 Fix alignment and padding of the WASIX snapshot type to align with wasix-libc
- #5236 feat(benches): Add compilation benches, use remote artifacts
- #5230 fix(llvm): Fix
ADD_ABS_LO12_NC
relocation - #5226 Add make target for building
wasmer-api
withjs
feature ascdylib
- #4997 Rework WasiFs to use a "holey" FdList instead of hashmap + seed + fre…
- #5257 ci: update
CONTRIBUTING.md
reference - #5250 deps: Remove usage of unmaintained derivative crate
- #5256 deps: Upgrade wcgi crates to 0.3.0
- #5253 chore(wasix): Downgrade debug logs to trace
- #5245 Relax
wat
version requirement - #5244 Alias
.
to cwd in wasi env - #5225 Move compilation types inside of wasmer compiler
- #5268 Fix musl builds
- #5231 Fix LLVM detection
- #5235 c-api/README.md: Fix double include in usage section
- #5238 Revert "Fix handling of the root dir in
path_create_directory
andget_inode_at_path_inner
" - #5237 Fix handling of the root dir in
path_create_directory
andget_inode_at_path_inner
This release adds LLVM support to MacOS ARM64 binaries and contains minor fixes and improvements.
- #5220 fix(ci): Move addition of
brew
libs to other step - #5218 fix(ci): Add
brew
libs toRUSTFLAGS
in aarch64 - #5129 Experimental: Add support for WASMI
- #5205 Add LLVM to docs CI
- #5216 Bump up webc version
- #5215 Re-enable RISC-V
- #5194 build: Update nix flake devshell for LLVM 18
- #5202 chore: Remove
isle-in-source-tree
feature fromcranelift-codegen
- #5210 Fix(LLVM): Implement the missing relocations on aarch64, fix SIMD operations
- #5209 Revert "Fix(LLVM): Implement the missing relocations on aarch64, fix SIMD operations"
- #5207 Fix(LLVM): Implement the missing relocations on aarch64, fix SIMD operations
- #5203 Fix the wasmer-swift crate build
The main star of this release is the experimental support for three new backends: v8, wamr and wasmi. Also, many dependencies, namely LLVM, Cranelift, and rkyv are updated which bring significant enhancements.
- #5185 Add execution benchmarks
- #5174 chore(wasix): Additional logging in wasix HTTP client
- #5152 Experimental: add support for loongarch64 on LLVM
- #5188 feat: Rename
wasmer-api
towasmer-backend-api
- #5186 Remove support for emscripten
- #5181 Sunset
wasmer-registry
,wasmer-interface
and update misc dependencies - #5165 5.0.0-rc.1 post release
- #5151 Remove negative variant of exit code
- #5153 Terminate entire wasix process when a worker thread fails or calls exit
- #5172 chore(backend-api): Update GraphQL schema
- #5176 Remove unused edge-util dependency
- #5171 Refactor webc usage
- #5144 Implement app-deployment related CLI commands
- #5163 Correct the example of the README in the WASIX crate
- #5184 fix(api/wamr): Build
wamr
oniOS
- #5179 Fix build CI
- #5178 Fix usage of exit code
- #5162 Fix append-ness of new fd affecting old fds
- #5160 Fix fd with append flag can't seek correctly
This is a release candidate as we are preparing for the final release of 5.0
- #5154 Add build steps for interpreter backends
- #5138 Experimental: Add support for v8
- #5129 Experimental: Add support for WASMI
- #4515 Experimental: Add interpreter support for Wasmer
- #5158 path_create_directory shouldn't behave recursively
- #5156 Resolve double-free error in c-api
- #5149 Merge 5.0 release candidate into main
- #5148 Remove deprecated methods and types
- #5147 Feat(compiler/llvm): Replace runtime assertions (in debug mode) with errors
- #5146 feat(api/build/v8): Use blob to build v8
- #5142 Upgrade
rkyv
- #5098
js::module
: leave warning comment on theSend
impl - #5139 deps: Update corosensei
- #5136 Replace v3 usage of download-artifact
- #5135 Use upload/download artifact v4
- #4834 Fix
path_open
trailing slash edge case - #4821 Fix
path_open
sometimes ignoring trailing slash - #5137 Trying to fix js build
This release adds support for object size estimation, adds better proxy support, improves executable spawning, and contains various bug fixes.
- #5079 Add feature for objects' sizes estimation
- #5125 oss-fuzz: add cifuzz
- #5110 Add new --invoke arg for choosing entry function for single WASM modules + fix --invoke not working for WASI(X) modules
- #5090 Add the right to fetch stats on pipes
- #5088 Various cleanup chores + add a new test
- #5127 Implement proper executable spawn
- #5098
js::module
: leave warning comment on theSend
impl - #5120 Improve QueryError
- #5118 InMemory/MultiSource Improvements
- #5104 Transfer the file size when renamed
- #5102 chore(wasix): Reduce syscall instrumentation levels
- #5096 Update cargo-deny config
- #4983 deps: Upgrade some dependencies + lift to workspace root
- #5092 Replace
WASM_ANYREF
withWASM_EXTERNREF
- #5091 Apply the proxy setting in wasmer config
- #5089 feat(cli): Restore packages from webcs
This release adds support for rotating secrets, fixes a regression with the filesystem, and contains other fixes and improvments.
- #5070 Add
rotate-secrets
subcommand for volumes and minor changes - #5057 Add
cwd
to the manifest as a command annotation - #5060 feat(backend-api): Add env var to toggle GQL variable logging
- #5059 feat(backend-api): Add updatedAt timestamps to Edge App/Version
- #5016 add access to php integration test secrets
- #5036 Add help-docs for the
--watch
flag inwasmer app logs
- #5066 Prevent redundant merging of the filesystems
- #5037 post slack message on integration tests ci failure
- #5063 refactor volumes schema
- #5056 Improve validation requests in "wasmer deploy"
- #5053 Reduce overhead of chunk timeouts in wasix package downloads
- #5042 Expose memory and wasi generic imports
- #5040 deps: bump tun-tap version for wasmer-cli
- #5043 Remove serde_cbor as a dependency
- #5030 Improve loop metering tests
- #5039 Fix missing hash from a compiled artifact
The star of this release is the volume subcommand that allows inspecting and interacting with volumes through the client. There are also numerous bug fixes and quality of life improvements included in this release.
- #5022 feat(cli): Add --print-rclone-config to "app volumes s3-credentials"
- #4980 feat(backend-api): Add disabledAt/Reason to AppVersion
- #5007 add access to php integration test secrets
- #5003 Added a transaction and auto_consistency journal
- #5011 Add module-level middleware errors
- #4982 Mount [fs] entries as additional mapped directories when running a lo…
- #4990 Added a patch for corrupt freed FD lists after replaying journals
- #4967 CLI: Add flag and logic to redeploy an app after changing secrets
- #4960 Add
regions
subcommand toapp
subcommand - #4941 App config: add
locality
field
- #5020 Allow memories exported from WASI(X) modules to be named anything
- #5025 CLI: Allow sorting in "app list" command
- #5018 Translate English sentance in German README.md
- #5008 Allow nested mounted paths in
UnionFilesystem
- #5021 feat(virtual-fs): Expose create_dir_all
- #5017 Use ___chkstk_ms for mingw
- #4996 CLI(package/tag): Don't cache previously fetched user package
- #5015 Consume unused result in
lib/compiler/src/engine/artifact.rs
- #5013 CLI: Volumes commands
- #5001 deps: use windows-sys instead of winapi
- #4994 Check if a user can deploy an app before deploying it
- #4995 refactor(cli): Rename "container unpack" command to "package unpack"
- #4988 chore: Use hex encoding for Sha256Hash debug impl
- #4780 WASIX Test Suite
- #4987 feat: Support filtering logs by request id and by instance id
- #4975 CLI: Ask users to allow networking capabilities if not set
- #4977 feat(wasix): Expose the builtin package loder module
- #4968 CLI: Introduce new
auth
subcommand - #4973 feat: Implement image validation in BuiltinPackageLoader
- #4976 CLI: No string manipulation on
app.yaml
- #4970 CLI: Cache templates from different registries in diffferent directories
- #4965 CLI: Try to fetch owner from
app_id
if necessary while deploying - #4955 Move
WasmerConfig
out of theregistry_api
crate and introduce alogout
subcommand - #4943 Run tests in wasmer-integration-tests repo on pull requests
- #4954 App config: https redirect setting
- #4689 redirect to child node in a different fs
- #4939 Clearer doc comments
- #5032 fix(wasix): Prevent blocking package hash validations after downloads
- #5026 Various volumes CLI fixes
- #4986 Multiple fixes for the journal to fix bootstrapping
- #5005 Enable feature
net
for mio in virtual-net, fix #5004 - #4992 fix(cli/WasmerEnv): strip
registry.
only if hostname starts with it - #4989 fix(wasix): Fix panic on unknown socket in sock_send
- #4956 Fix impossible relocation error in emit sdiv64 for singlepass compiler
- #4938 fix(cli/package/tag): Better messages when tagging an existing package
- #4946 Fixes a panic caused on the recv_from path
- #4942 Fix size computation for
pwrite
This release adds support for managing secrets alongside fixes and refactors to help with stability.
- #4930 CLI: Add support for Secrets
- #4933 CLI: Manually exit upon SIGINT reception
- #4927 Upgrade to Hyper 1.x
- #4932 Follow directory when deploying from create
- #4928 Prevent unnecessary panics when compiling on x86_64 CPUs that dont support AVX or SSE4.2
- #4920 Compile
wasmer-api
crate towasm32-unknown-unknown
- #4925 Fix stack_low detection when data_end is above stack_pointer and stac…
- #4929 Fix indirect call to dynamic imported function
This release contains a fix for the webc version resolution logic.
- #4914 Add tests for
msync
- #4922 fix(wasix): Fix incorrect webc version mapping
This release mainly contains fixes and refactors to help with the stability. Also some improvements to the cli and journaling.
- #4885 Added another journal transaction point used for durability
- #4906 feat(backend-api): Add query for retrieving app versions by id
- #4861 feat(cli/deploy): Add
--path
flag
- #4898 chore: More logging during package downloads
- #4912 feat(cli/push): Push with name if available (+ CLI flag)
- #4907 Update README: new zig bindings for wasmer with WASI Support
- #4897 App create: Ask for framework before fetching templates
- #4896 Re-use previously closed FDs
- #4883 cli(app/create): Ask for directory to create the app in
- #4884 feat(cli): Amend
app
command description - #4874 Switch to webc v3 by default
- #4860 CLI: Use a channel to signal that the main fn is done
- #4877 Replace mach with mach2
- #4824 Merge
ScopedDirectoryFileSystem
intohost_fs::Filesystem
- #4862 feat(cli/deploy): Check status when waiting for the app to be available
- #4848 feat(cli/package-tag): Manifest is not mandatory anymore while tagging
- #4858 chore: Small tracing log improvements for wasix
- #4841 Restore cursor after SIGINT during dialogue
- #4846 Restored sockets from journals will no longer attempt to send data
- #4836 Dynamically detect libgcc-vs-libunwind
- #4838 Don't pass auth header when downloading a package
- #4832 4.3.2 post release
- #4913 Fix mac runners
- #4840 fix(journal): Correctly handle client socket closing during compaction
- #4844 fix(cli): Respect WASMER_REGISTRY env var in all commands
- #4834 Fix
path_open
trailing slash edge case - #4835 Fix for dead sockets restored in the journal
This release mainly introduces the InstaBoot feature. Numerous bug fixes to the virtual-fs is also included, making it more robust. Support for the execve syscall is also added to the runtime alongside the ability to spawn local wasm files.
- #4819 Add support for spawning local wasm files
- #4813 feat(configs): Add headers and max_age to InstaBoot capability
- #4810 feat(cli): Add "app purge-cache" command
- #4754 feat(config): Add app instaboot config
- #4735 Add traversal for
Root
inode - #4743 Benchmarks: add new benchmark for function imports in modules
- #4797 feat(cli): Show exact version of package in "package download" command
- #4749 Only warn if needed
- #4826 chore(virtual-fs)!: Remove old stale WebcFileSystem
- #4805 CLI: app create - Template handling improvements
- #4823 Enable mounting
tmp
directory locally - #4756 Introduce
proc_exec2
- #4817 chore(cli): Update yanked
zip
version - #4815 Useful link
- #4759 Disallow empty path on path_open
- #4794 Disallow opening directory with rights::fd_write
- #4793 Respect
oflags::excl
when opening all files - #4790 chore: Minor tweaks to the HttpRequest definitions
- #4730 Mount current directory to
/home
and Set CWD to/home
when running WASI - #4770 Reduce package upload chunk size to make the progress bar smoother
- #4769 Use
_strict
graphql function so the error from backend is reported - #4765 Update the webc dependency
- #4706 Multiple improvements for the journal load times
- #4739 Allow blocking for realtime
- #4821 Fix
path_open
sometimes ignoring trailing slash - #4822 fix(cli): Respect owner in app.yaml during app resolution
- #4779 Multiple fixes for journaling with fast boot and resumption
- #4776 Fix wasi-fyi test.sh on darwin
- #4747 Fix for interrupts
- #4762 fix(wasix): Remove redundant module hash generation in BinaryPackage
- #4783 Fix metadata conversion to carry over the modified timestamp
- #4740 Fix wasi-fyi tests
This release adds support for subcommands to generate shell completions and manual pages. Also, number of fixes to the cli are included to further improve the developer experience. Various bug fixes and stability improvements are also added to WASIX.
- #4736 Argus: Compare v2 and v3 + add webhook message
- #4710 Add libc dep to workspace dependency
- #4683 Add subcommands to generate shell completions and manual pages
- #4673 Add tracing setup support in C API
- #4733 New CLI integration tests
- #4732 Poll for write-readiness after connecting a blocking socket
- #4731 Change the default directory the manual pages are generated to
- #4715 Refactor
wasmer_config::package::PackageHash
to be an enum - #4726 Update LLVM install instructions to use v15
- #4720 Revert "make path_create_directory return error if no dir was created"
- #4719 Enable windows in CI again
- #4714 Disable windows in Unit-test packages job
- #4713 Remove owner and spurious informations from templates
- #4703 Use registry templates to create new app
- #4709 Remove
clock_time_get
instrumentation - #4700
wasmer app logs
: support app IDs, improve output format - #4702 Rename when redirect is to the same fs
- #4693 feat(cli): Reimplement the webc upload progress bar
- #4695 feat(cli): Allow "wasmer app get" with an app version id
- #4689 redirect to child node in a different fs
- #4692 Pass down owner from deploy to publish
- #4682 Calculate the duration when timeout is absolute
- #4670 V4.3.0 post release
- #4734 fix(cli): Actively wait for packages only after tag
- #4728 feat(cli): Fix erroneous subcommand as a
run
tentative - #4716 Fix progress bar tick chars
- #4708 Fix wasi-fyi tests
- #4698 Fix calculation of stat.st_size in the presence of combined seeks and writes
- #4679 [bugfix] correct error message when app version is not found
- #4685 Fix offset in append mode
This release stabilizes the new and improved publish and deploy flow. Also, wasmer is 25% faster (on cold startups) and more stable since various fixes and stability improvements are included.
- #4666 Add integration tests for deploy
- #4651 Add option for using webc v3
- #4640 add proxy support to the
package download
subcommand
- #4668 Allow users to specify an "incomplete" registry url via CLI flag
- #4654 Store and restore hash from a compiled module
- #4662 feat(cli): Better final messages for
push
,tag
andpublish
- #4658 Third solution to the rewind buffer issue: Read lower end of stack from __stack_low or __data_end
- #4661 Remove a leftover println from the tag command
- #4660 Miscellaneous nitpicks for publish (and deploy)
- #4653 Revert
wasmer-wasix
dependency to per project instead of workspace - #4648 return non-zero modified timestamp when using webc v2
- #4665 Fix for an exit function that is not running on rewind exits, this could leak memory
- #4652 Fix deprecated usage of the
time
crate
This release improves the deploy and publish flow. Also, it contains bug fixes to virtual fs, caching, and a memory corruption issue when unwinding the stack.
- #4633 Added a fix so that try_read calls close the connection without returning errors and causing a panic
- #4566 feat(backend-api): Add permalink to DeployApp
- #4643 Adopt the push-tag publishing mechanism
- #4645 sync modified timestamp upon creating the inode
- #4639 Move rewind buffer to after TLS area if it's at the bottom of the stack
- #4644 prepare wasmer-config 0.2.0 release
- #4638 Handle local package resolution
- #4627 reuse atom signatures
- #4630 Support partial manifest fields
- #4631 enable socks support
- #4624 respect proxy env vars
- #4629 chore(wasix): More logging improvements
- #4625 expose modified time in
webc_volume_fs
- #4618 propagate timestamps to virtual file handles
- #4622 Improve error message for unknown atoms
- #4619 feat(wasix): More improvements to spawn error propagation
- #4616 feat: Improve wasix SpawnError
- #4614 Renamed all master -> main
- #4617 4.3.0 alpha.1 leftover fixes
- #4628 Fix for the sha256 caching issue
- #4623 fix(CLI): Pass the
no_wait
flag toDeploy
This release introduces support for publishing unnamed packages. It also fixes an issue with code generation when using Singlepass and contains fixes to WASIX.
- #4532 Unnamed packages
- #4548 Added a fix so that closed sockets do not cause errors
- #4560 chore(backend-api): Add hostname to AppAlias type
- #4543 build: Add Wasmer CLI package definition to Nix flake
- #4582 feat: wasmer-config
- #4359 Use nanoseconds in
filestat
for directories - #4557 Safely handle offset in fd_seek
- #4555 Fd validity and basic bound checks on
fd_advise
- #4538 deps: Switch from unmaintained term_size to terminal_size
- #4563 chore: Remove accidentally committed wasm file
- #4561 chore: Make wasmer_wasix::os::console submodule public (again)
- #4562 chore: remove repetitive words
- #4552 Module cache optimization round2
- #4546 Expose
store::StoreObjects
- #4559 Fix ImpossibleRelocation panics in singlepass/aarch64
- #4514 Fix for snapshots in certain use cases
- #4590 Fix fd_seek underflow
This release improves journal support and improves the performance of the singlepass backend. Also contains fixes to the Edge CLI.
- #4510 Added support for creating log file journals directly from buffers
- #4506 feat: add wasmer-argus
- #4508 Upgrade edge-{schema,util} crates + add some helper methdos
- #4541 Removed some dead code
- #4539 deps: Upgrade h2 due to RUSTSEC advisory
- #4527 allow owner field in app.yaml
- #4526 feat(singlepass): use SIMD insts for popcount
- #4507 deps: Upgrade edge-schema to 0.0.3
- #4462 DProxy
- #4542 Various fixes detected in the build
- #4537 Fix owner issues with app create
- #4535 fix(cli): Fix Edge WinterJS template
- #4525 Fix bug with
app deploy
: app URL is stale - #4520 Fix singlepass panic
This release adds the wasmer domain
command for DNS records management, and also includes an important fix to the stack_restore
WASIX syscall (used by the longjmp
function).
- #4478 chore(backend-api): Add size to PackageDistribution
- #4492 No longer restoring the thread local memory when we longjmp
- #4487 Manage DNS records
- #4220 Ability to detect a tainted instance
- #4455 Implemented an exponential CPU backoff that kicks in when a run token is not held
- #4470 chore: Completely remove wasix_http_client
- #4490 Fix for a panic in the sock_recv when a file handle is missing
- #4335 Fixed an issue where the package loader was blocking the tokio runtime
- #4473 fix: fix feature = "cargo-clippy" deprecation
This release includes a number of DX improvements for the Wasmer CLI, as well as fixes to WASI and its filesystem implementation.
- #4459 feat(backend-api): Add download_url to PackageDistribution
- #4460 fix(cli): Add missing output in "app get" command and fix output of "app info"
- #4448 Add wasi-fyi tests and run them in CI
- #4454 add pagination to app list queries
- #4443 feat(backend-api): Add get_app_by_id_opt
- #4385 feat(api): Add SharedMemoryHandle
- #3517 Add HTTP example which does dynamic allocation
- #4472 feat(cli): "wasmer deploy": return app version as json if --json specified
- #4471 chore: Remove wasi-experimental-io-devices
- #4466 Clean up wasmer-wasix-types and remove wasix-http-client
- #4458 tests: Disable flaky network tests on MUSL
- #4440 cli: allow filtering by log stream
- #4435 Use M1 runner for building & testing m1
- #4434 Update Rust toolchain to 1.73
- #4428 Try to build the package before publishing it
- #4441 increase pagination size for app logs
- #4429 Return Notsup for absolute symlinks instead of panicking
- #4427 Migrate deprecated usage
- #4426 deps: Unify wasmparser usage to a single version
- #4292 deps: Upgrade wasmparser
- #4398 Make public API consistent
- #4407 CLI: Big CLI cleanup + merge Edge CLI
- #4395 chore(wasix): Increase log level for WapmSource
- #4403 Allow users to provide custom host functions to
WasiRunner
andWasiEnvBuilder
- #4359 Use nanoseconds in
filestat
for directories - #4100 Tweak logging annotations to simplify performance troubleshooting
- #4175 Update dependencies and remove unused dependencies
- #4302 Allow
WasiRunner
to mountFileSystem
instances - #4394 ignore append when truncate is set
- #4263 WASI journal and stateful persistence
- #4389 remove memory footprint computation
- #4352 Wait for webc, bindings, exe generation during package-publish with
--wait
flag - #4388 Temporarily exclude tokio from docs builds
- #4345 Asyncify filesystem cache
- #4467 fix(cli): Fix auto-package version bumping in 'wasmer deploy'
- #4452 CLI: Fix logic error in indexing in app logs command
- #4444 Fix note about unaligned references in
WasmRef
docs - #4338 [SINGLEPASS]Fix bug #4092 which was due to resource leak while doing …
- #4430 deps: Fix accidental hyper 1.0 upgrade + remove some duplicate dependencies
- #4322 fix: Prevent panicking in VirtualTaskManagerExt::spawn_and_block_on
- #4411 chore: Fix clippy lints for headless CLI build
- #4410 fix(cli): publish: Fix panic + Make waiting for build results more modular
- #4402 Fixed some compilation errors introduced by #4204 that assume
tokio::task::block_in_place()
always exists - #3448 Fix make install-capi-lib
- #4393 fix(api): Provide stub impls for new LinearMemory methods
- #4391 Fixed an issue where the caching compiled modules were not saving properly
- #4386 chore: Fix clippy lints in API crate
- #4387 fix: Don't log the
FmtSpan::ENTER
event because it generates unnecessary logs
This release includes substantial improvements to Wasmer's startup time when loading cached modules. Also includes a couple of filesystem-related fixes and updates the Edge application templates.
- #4370 feat(wasix): Add optional chunk timeout to ReqwestHttpClient
- #4369 WASIX: Add QueryError::Timeout
- #4336 fix(docs): add cpp in Chinese
- #4372 use faster hash algorithm when loading and saving a module
- #4367 deps: Bump edge cli to 0.1.4
- #4366 Always use the download URL provided by the Wasmer registry instead of going through the frontend redirect
- #4350 Optimize sleep_now for TokioTaskManager
- #4351 Remove the wasmer-web crate and all tests
- #4229 Use
cargo nextest
when running tests in CI - #4339 deps: Bump edge-cli version
- #4368 fix(wasix): http client: use reasonable default connect timeout
- #4365 lib/api/src/js/store.rs: fix typo
- #4356 Fixed a subtract-with-overflow in
StaticFile::poll_read_ready()
- #4355 Fix the
virtual_fs::StaticFile
implementation - #4348 fix sync
This release allows publishing private packages and fixes the issue of the file system being accessible by WASI modules in the abscence of directory mapping. Also improves startup speed, and fixes multiple issues around the WASI filesystem, packages and apps.
- #4334 Add
application/wasm
to list of accepted content-types for webcs - #4328 Add
--wait
and--timeout
flags towamer publish
- #4315 Add TTY aware output to the wasmer package and wasmer container commands
- #4287 feat(cli): Add package commands
- #4247 Add support for publishing private packages
- #4291 feat(cli): add pnpm support
- #4333 deps: Bump edge-cli
- #4332 use rusty_pool instead of rayon
- #4321 deps(cli): Upgrade Edge CLI
- #4326 Always re-execute a registry query when cache lookups fail
- #4317 Bump min enumset version to 1.1.0
- #4300 Use authentication when running a package
- #4294 Terminate after flushing file descriptors
- #4273 Update memoffset to 0.9.0
- #4307 Fix for the non-flushing of file descriptors and a nasty deadlock
- #4331 Fix visibility validation to work when publishing a new package
- #4314 fix(cli): Prevent temporary file issues in "package download"
- #4296 fix: prevent potential UB by deriving repr C for union
- #4192 More fixes to support Wasmer JS
This new version fixes a bug in module bindings path.
- #4272 fix: Fix async runtime mismatch in virtual "wasmer run" command
- #4276 fix: module path using stripping a prefix
- #4241 Fix FreeBSD ucontext_t issues
- #4246 Fix Cargo.lock for 4.2.2 release
New wasmer version that utilizes the more recent LLVM15 to compile WASM modules. Also adds new application templates for Wasmer Edge.
- #4239 Wasmer Deploy CLI with js and py worker templates
- #4238 Using hard coded package version number in test...
- #4206 Remove StdioMode::Reserved variant
- #4234 Migration to LLVM15
- #4236 Updated tugstsenite
New release of wasmer with improved WASIX compatibility. MSRV was bumped to 1.70 for this release.
Now it is possible for packages to execute atoms from their dependencies, enabling e.g. python packages to not include the binary but use the one from the official python package.
- #4213 feat(wasix): Add BuiltinPackageLoader::insert_cached
- #4202 Add support for
JoinFlags::NON_BLOCKING
toproc_join
- #4223 Allow packages to have commands that use a dependency's atom
- #4224 Use write instead of send for pipe, to accomodate socketpair
- #4221 Bump the MSRV from 1.69 to 1.70
- #4214 Rephrase the docstring for
--forward-host-env
flag onwasmer run
- #4215 Ignore
fd_close(3)
to avoid breaking POSIX programs that blindly close all file descriptors - #4204 Stability improvements
New release of wasmer, with a new 0-copy module deserialization for shorter startup time, some fixes to avoid misaligned pointer acces, and faster internal stack handling, among some other fixes.
- #4199 Added some Socket filtype return for fdstat syscall
- #4186 Add stdin/stdout/stderr streams to
WasiRunner
and only use async threading when requested
- #4170 deps: Bump Edge client CLI to 0.1.25
- #4179 Faster compiles for debug by using release version of cranelift
- #4196 Replace stack pool mutex with lock-free queue
- #4180 NativeEngineExt::deserialize now returns Module
- #4190 Early check that a cached artifact is compatible with current CPU Features
- #4167 Make sure vmoffset are aligned to pointer size (for #4059)
- #4184 Allow
VirtualTaskManager
to explicitly transfer a module to a blocking task on the threadpool - #4176 Js integrity checks
- #4171 Revive "0-copy module deserialization"
- #4173 deps: Bump Edge CLI version
- #4198 chore: fix unavailable document url
- #4191 Fix invalid access to wasi instance handles in wasix proc_spawn
- #4165 Fix writing to middle of files and improve performance
Another maintenance release, bringing some networking improvements, and centralising all wasmer caches under the same folder.
- #4127 Add regression test for path_rename
- #4164 deps: Bump Edge client CLI to 0.1.22
- #4163 Bumped virtual-net crate to 0.5.0
- #4156 Disable auto-format of toml files in VS Code
- #4141 Web http client
- #4152 Test virtual-net bincode and mpsc only on linux
- #4115 Browser cfg, smaller WASM, VPN and HTTPS redirect
- #4138 Upgrade wasmer-wasix to the newest version of wasm-bindgen
- #4135 Update to time 0.3
- #4109 Update MSRV to 1.69
- #4130 Update to tracing-subscriber 0.3
- #4160 fix: Make the "wasmer cache" command use the same cache directory as the rest of the CLI
- #4148 fix(cli): Prevent panics in "wasmer login" after API failures
Bug-fix release, fixing rename in wasi(x), using newer Rust and some macOS ARM64 speicifc issues, among other things.
- #4120 Added proper definition of ucontext for macos/aarch64 to avoid unaligned issue
- #4107 Added a forced shutdown on tokio runtimes as the STDIN blocks the shu…
- #4108 Add a temporary workaround for nanasess/setup-chromedriver#190
- #4123 Upgrade Edge CLI dependency
- #4109 Update MSRV to 1.69
- #4111 Update login.rs
- #4102 Update to criterion 0.5
- #4121 Fix path_rename syscall failing
- #4117 Fixed an issue where inheritance was inverted
- #4096 Fix benchmark
This version added some more improvements and fixes, with a faster async execution, a new login flow and muliple bugfix to the --mapdir
command among other things.
More detail in the blog post about the 4.1 Release: https://wasmer.io/posts/wasmer-4.1
- #4081 Add WebcHash::parse_hex helper
- #4046 Add C API function to create Module from Engine instead of Store
- #4095 Bumped the webc version
- #4038 Clean up the integration tests
- #4085 Switch to lazily loading a Wasmer package directly from disk
- #4084 Remove unused atty dependency
- #4057 login with browser using nonce
- #4073 deps(wasmer-wasix): Remove two unused dependencies
- #4068 Enable tokio's "net" feature in the virtual-net crate
- #4065 deps: Upgrade edge CLI version
- #4064 Enable the
cfg_doc
feature on docs.rs - #4052 Selenium-style tests for wasmer.sh
- #4061 Use is-terminal to check tty
- #4056 Update hermit-abi crate, used version was yanked
- #4055 Use a no-op package loader by default in PluggableRuntime
- #4011 Move Artifact Register FrameInfo
- #4042 Disable unused cbindgen feature
- #4044 Update tempfile crate
- #4041 Canonicalize host folder on mapdir
- #4040 Removed error message when a deserializzation error occurs in Artifact
- #4032 Make the CLI respect the
--token
flag - #4030 Remove rustup build dependency
- #4031 Speed up the module cache 6x by removing LZW compression
- #4096 Fix benchmark
- #4050
epoll
with fs fixes - #4074 fix(wasix): Expose FileSystemMapping struct
- #4063 Fix docstring for MemoryView struct
- #4047 Fixed create exe when zig is not present
- #3970 Fixes for wasmer.sh
- #4035 Fix help text for
use_system_linker
option increate_exe
CLI command
Some more behind-the-scene unification and bug fixe since the last beta, mostly on the CLI, but make sure to check all the other changes of the previous beta and alpha release if you came from last stable version.
- #4013 Added a
WasmerEnv
abstraction to the CLI
- #4021 Put all cached artifacts under the
~/.wasmer/cache/
directory - #4018 Canonicalize the host path passed to
--mapdir
- #4019 Make sure
ExecutableTarget::from_file()
for*.wasm
files checks the module cache - #4022 [CI] Defined wich nightly to use to avoid not ready error
- #4001 deps: Bump edge CLI
- #4012 update links in Wasmer's README
- #3985 Display human-friendly progress when starting
wasmer run
- #4004 Ignoring archived package versions when querying the registry
- #3980 Re-work logging and command-line argument parsing
- #3983 Introduce WAPM query caching to reduce
wasmer run
's startup delay - #4002 [RISCV64][CI] Use simpler way to install riscv64 packages
More fixes and improvement to the virtual filesystem, and behind the scene work to unify wasmer tools for this new beta. RISC-V will now be built on newest Bookworm Debian release.
- #3990 fix(cli): Fix deploy command and add some aliases
- #3998 deps: Upgrade edge cli
- #3989 OverlayFS now has COW
- #3991 Renamed most appearances of Wapm to Wasmer
- #3992 [CI][RISCV64] Try to use bookworm debian instead of sid
This version added a missing sock_accept
function to WASI preview1, and also greatly improved the filesystem mappings for the resolver, improving the ease of use of the abilty to run packages with the wasmer run
command.
- #3913 Add filesystem mappings to the resolver
- #3971 Added the missing sock_accept for preview1
- #3957 Added a test for small Stack (for #3808)
- #3956 feat(virtual-fs): Add FsError::StorageFull variant
- #3710 Implemented an asyncify based implementation of asynchronous threading
- #3950 tests: Remove debug_output option from snapshot tests.
- #3961 chore: Rename wasi dir to wasiX
- #3967 Use logs instead of timing to determine if the package cache was hit
- #3955 chore(cli): Remove redundant CLI feature flags
- #3953 feat: Allow custom manifest file paths in "wasmer publish"
- #3433 Module.deserialize - accept AsEngineRef
- #3946 Allow deserialized WAPM JSON even if some version have some NULL infos
- #3944 Port create-exe and the wasmer C API over to the webc compatibility layer
This version introduce WASIX! The superset of WASI. Go to https://wasix.org for more details.
This version also merged wasmer run
and wasmer run-unstable
. Both command still exists but are now exactly the same. run-unstable
will be removed later, so switch to wasmer run
if you were using it.
- #3818 Added a quickfix for mounting relative directories
- #3924 Rename "wasmer run-unstable" to "wasmer run"
- #3938 Use unchecked deserialization for
_unchecked
module functions - #3918 Workspace metadata
- #3919 Handle non-200 status codes when downloading packages
- #3917 Rename WasiRuntime to Runtime
- #3933 Fix deserialize calls in doc comments
- #3936 Fix for excessive allocation
- #3920 Fix filesystem access when running python with
wasmer run-unstable .
- #3867 lib/wasi: try quick fix for WasiFS::get_inode_at_path
A new major release, with a few breaking changes and the removal of many deprecated functions. Also, some methods previously available from on Engine
has been moved to the NativeEngineExt
trait.
Deserialize has changed, with the default version using artifact layout validation. The old function has been renamed to _unchecked
variant. The speed impact is usually negligeable , but the old function are still present if needed
Many bugfixes and improvements on wasmer run
and wasmer run-unstable
(that will be merged into just wasmer run
soon). --allow-multiple-wasi-versions
CLI flag is now removed that is now removed and active by default. Logic for wasmer config set registry.url
that has been fixed to work with localhost:1234
- #3852 Re-work package resolution and make runners use it
- #3910 Removed all deprecated functions
- #3900 lib/virtual-net: tokio::net::lookup_host requires host:port format
- #3906 WASIX updates after superset changes
- #3907 Choose subversion of tracing crate in wasix
- #3873 Initial implementation for poll on pipe
- #3904 Changed tunables to have a VMConfig settings
- #3902 TmpFs Memory Usage Tracking and Limiting
- #3894 Rework Module deserialization functions
- #3899 enable integration tests with debug binary
- #3889 Bump llvm
- #3881 Use
js-default
feature in wai-bindgen-wasmer - #3874 refactor!: Memory API Modifications (try_clone/copy, duplicate_in_store)
- #3763 Implement NativeWasmTypeInto for u32 and u64
- #3866 Align vfs and vnet directories with crate names
- #3864 feat(cli): Integrate deploy commands
- #3771 Asynchronous threading phase2
- #3710 Implemented an asyncify based implementation of asynchronous threading
- #3859 Support static linking on Windows
- #3856 Switch FileSystemCache to use checked artifact deserialization
- #3854 deps: Upgrade clap to v4
- #3849 Support MinGW
- #3841 Introduce a module cache abstraction
- #3400 Use the wasm_bindgen_downcast crate for downcasting JsValues
- #3831 Introduce a package resolver
- #3843 Adapted the publishing script
- #3867 lib/wasi: try quick fix for WasiFS::get_inode_at_path
- #3891 Fix typos in docs
- #3898 fix: Use fallback home directory detection in config commands.
- #3861 fuzz: fix build error
- #3853 Fix cargo update
Along a few important bugfixes, this version introduce JavaScriptCore support, with full WASI support.
- #3825 Added support for JavascriptCore
- #3837 Cleaned up the GraphQL endpoint logic and added tests
- #3833 Fix Missing WaiterError export + Add notify/wait to fd_mmap memory
- #3819 ci: add docs.ts test builds
- #3782 Add FreeBSD x86 support
- #3838 Re-export
wasmer::EngineRef
- #3820 fd_write: Flush on every write to a file
- #3813 Better errors
- #3796 Fix returning negative i64 values on web target
- #3836 Fixed Chinese README example
- #3827 Made test-build-docs-rs tests docs generation for all crates under libs, and fixed broken ones
- #3796 Fix returning negative i64 values on web target
Some quick fixes for this maintenance release, mainly oriented towards Docs.
- #3782 Add FreeBSD x86 support
- #3786 Made Stack Size parametrable (for #3760)
- #3805 Wasi runner args
- #3795 Make sure the compile function passed to runners is Send+Sync
- #3777 Use webc's compat layer in more places
- #3806 Fixed FunctionEnv migration doc to 3.0
- #3804 Fixed doc comment in memory_view.rs
- #3791 Fix doc api
A lot of new features since last stable version: RISCV Support, new Runners (WCGI), API convergence for JS/SYS, and WASI eXtended.
-
RISCV support, on both Cranelift and LLVM Compiler.
-
New Runners, with WCGI as a new one
-
Most WAPM command are now available on the wasmer CLI directly
-
Using Wasmer on
sys
orjs
backend is more transparent now, with now support for running wasmer onJavaScriptCore
-
The WASI implementation has undergone a major refactoring, and will continue evolve significantly over the coming months.
-
The old
wasmer_wasi
crate was deprecated. -
To continue using WASI, please switch to the new
wasmer_wasix
crate, which follows a different versioning scheme than the main Wasmer releases. Major changes: -
An async runtime is now required. The runtime is pluggable, but only tokio is officially supported at the moment.
-
The virtual file system layer was renamed from
wasmer-vfs
tovirtual-fs
, and now is built around an async interface that builds on top oftokio::{AsyncRead/Write}
This refactor will unlock many exciting new features that will be announced soon! Just be aware that you will have to expect some instability and frequent releases with potential breaking changes until our new implementation settles. down.
-
- #3706 [CI] Add RISCV in test and build
- #3765 Added basic support to inode in filestat_get (for #3583 and #3239)
- #3751 Added some unit testing to singlepass compiler
- #3752 Added new snapshots tests that use a fixed MIO and TOKIO
- #3759 Added the wasmer.sh website to the main repo and a CI/CD build test
- #3747 Added missing crate version bump
- #3778 Upgrade to webc v5.0.0
- #3775 Ran Cargo update before release
- #3774 Wasi threads
- #3772 [DOC] Removed paragraph about default-compiler, as it's doesn't exist anymore
- #3766 deps: Upgrade memoffset
- #3690 Introduce a WebcVolumeFileSystem that works for any WEBC version
- #3424 Use "wasmer --version --verbose" in the issue template
- #3757 WASI without VM internals
- #3758 More and better snapshot tests
- #3756 Aarch64 stackprobe
- #3753 Upgrade webc from webc 5.0.0-rc.5 to webc 5.0.0-rc.6
- #3767 Fix Snapshot0 fd_filestat_get and path_filestat_get
- #3723 Fix Wait/Notify opcode, the waiters hashmap is now on the Memory itself
- #3749 Fixed publish script with latest needed changes
- #3750 Fixes Chinese docs links (for #3746)
- #3761 Fix error in Korean translation
Bug fixes for this beta release, and some exciting new possibilities with the run-unstable
function from the CLI tools.
- New wcgi runner
- Caching of runners
- Many fixes to wasix
Known issue: RISC-V build is currently broken and will be fixes on next version
- #3731 Added missing ASM instructions for wasix on singlepass
- #3743 Bumped crates version pre-beta.2 release
- #3742 Update versions of wcgi
- #3739 Use cache in runners
- #3735 [CI] More WAPM_DEV_TOKEN check for CI
- #3734 Updated spin to 0.9.8
- #3733 [CI] Use early exit for wasmer_init_works_1 and wasmer_init_works_2 when WAPM_DEV_TOKEN is empty
- #3693 Validate Module Artifacts (CLI + WASIX ModuleCache)
- #3724 ci: Cancel previous workflow runs when new commits are pushed
- #3722 Revert #3715
- #3718 Apply CGI environment variables in the correct order
- #3716 Move Package Build/Publish Logic to wasmer-registry
- #3740 Fix fuzz build
- #3741 Fixed an issue where blocking polls were being treated as nonblocking
- #3737 Fixed FileSystem createdir when parent_inode is an ArcDirectory
- #3736 Fixed Vectored IO when a partial operation occurs
- #3726 fix CI-Badge on README.md
- #3687 Master with fixes
- #3719 Fixes a bug which causes libc to thrash the futex_wake_all
- #3715 Fix annotation deserializing for the Wasi and Wcgi runners
- #3704 Fix the absolute/relative path weirdness when setting up WASI-based runner filesystems
- #3705 Fixes post 3.2.0-beta.1 release (but needed for the crates publication)
Lots of new things in the release!
- WASIX, the new WASI eXtended library, that alows WASM to use Threads, Network, and more in both Runtime and inside a Browser.
- RISC-V support, on both LLVM and Cranelift compiler.
- Improved CLI, with more commands and more WAPM integration.
- Lots of behind the scene refactoring, with sys/js convergence on the API side, and a lot of crate changes.
- #3700 Added back all removed function for Engine to avoid API breaking changes
- #3654 [SINGLEPASS] Add more ROR emitter to ARM64 backend (for #3647)
- #3664 feat(wasi): Add CapabilityThreading with max thread count
- #3556 Use standard API for js and sys for Module. Added Engine in js
- #3635 Added some fixes for the browser version to work again
- #3626 add basic coredump generation
- #3631 [CI] Add opened type for pull_request on test.yaml
- #3612 Added conveniance function FunctionEnvMut::data_and_store_mut
- #3536 Add documentation for create-exe syntax
- #3512 Add unit test for verifying that caching works when running packages twice
- #3490 Fix JS sample code by adding "&mut store"
- #3244 Feat riscv llvm and cranelift
- #3650 Wasmer run-unstable
- #3692 PluggableRuntime Cleanup
- #3681 (feat) Ability to supply your own shared tokio runtime
- #3689 Increased CURRENT_VERSION to 3
- #3691 Don't error out on webc/wasi run when exiting normaly
- #3683 Renamed some crates and changed their version to 0.1.0
- #3677 Overlay FileSystem
- #3580 Make memoryView lifetime linked to StoreRef instead of Memory
- #3682 Update wasmparser to v0.95
- #3676 Switch
wasmer_vfs::host_fs
tests over to using temp directories - #3670 Bumped cranelift to 0.91.1 following a critical security alert
- #3666 refactor(wasi): Move capabilities into root submodule
- #3644 Improvements to the tracing and logging in wasmer
- #3656 Re-enable (most) WASIX Snapshot Tests
- #3658 [CI] This should setup LLVM on Windows correctly this time
- #3655 [CI] Manually setup LLVM because Custom build doesn't include llvm-config.exe
- #3599 Move the
wcgi-runner
into Wasmer - #3646 deps: Remove tempdir dependency
- #3641 Upgrade LLVM to 14.0
- #3640 Zero memory copies on IO
- #3636 Removed choice for object-format in create-exe and create-obj commands
- #3637 Remove unused import in lib.rs example
- #3632 [CI] Another attempt to get Test on external PR
- #3628 Registry: Implement App Publishing and Token Generation
- #3627 wasi: Remove vbus leftovers and improve task joining
- #3620 ci: Remove deleted vbus crate from build workflow
- #3422 WASIX
- #3539 Document release process and update release script
- #3593 Update rkyv 0.7.40 and prettytable-rs to 0.10.0
- #3585 CI: Purge Cache with Scheduled Action
- #3590 Optimize getting byteLength in MemoryView::new
- #3586 Make AsStoreRef and friends work for anything that implements Deref
- #3582 bump inkwell to 0.1.1
- #3577 Use Cloudflare as CI Cache
- #3353 Speed up CI
- #3564 Updated Cranelift to 0.91
- #3537 bump inkwell to 0.1.0
- #3562 Improved handling of wasmer-headless generation and use on local run
- #3563 Revert "bump inkwell to 0.1.0"
- #3558 Reduce libwasmer-headless size
- #3552 create-exe: link with libwasmer-headless
- #3547 Remove setting memory for WASI compatibility
- #3531 Reenable create-exe tests
- #3534 Use JS VM store instead of artificially replicate it
- #3532 VMInstance cannot be Clone
- #3663 Dash fixes and pthreads
- #3684 Fix: module cache delta overflow
- #3680 Fix for the vectored IO
- #3668 Fix doc build
- #3665 Fix doc, threads are enabled by default now
- #3662 Why is it so difficult to type LLVM_SYS_140_PREFIX
- #3661 [CI] New attempt at fixing the Windows build on the CI
- #3659 Fixed building with with just the sys feature
- #3648 Fix CI and llvm detection
- #3643 fix(wasi): Memory leak due to cyclical WasiControlPlane references
- #3639 wasi: Thread Lifecycle Fix
- #3630 Fix linter
- #3591 fix: experimental io
- #3629 Webc Inheritance Fixes
- #3598 Wasix multithreading fix
- #3601 Update CI script to fix deprecation notices
- #3623 ci: Fix build.yaml workflow
- #3581 Fix WASI example that initialized wasi_config 2 times
- #3584 Wasix major fixes and tweaks
- #3557 Fix make-test-integration CLI producing files when running locally
- #3566 Fix create-exe with create-obj when using dashes in atom names
- #3573 Fix/compile not in memory
- #3569 Fix error message due to wapm.dev backend change
- #3551 Fix markup in Japanese README
- #3493 Fixed some memory leak issue with InstanceHandle
- #3523 Fix Windows-GNU distribution
- #3477 Added support for Wasm Module custom sections in js
- #3462 [SINGLEPASS] Added a special case on SSE4.2 backend when dst == src1
- #3511 Incremented CURRENT_VERSION, so all cache will be invalidate and be rebuilt with the 3.2 version
- #3498 Wasix Control Plane - Thread Limit + Cleanup
- #3465 Remove assert in sse_round_fn and handle case where src2 is in memory
- #3494 Update wasmer-toml version
- #3426 WASIX Preparation
- #3480 Ignore Create-exe with serialize test, something is wrong with the generated exe
- #3471 Rename
WasiState::new()
toWasiState::builder()
- #3430 Implement support for multiple commands in one native executable
- #3455 Remove hardcoded rust-toolchain and use panic=abort on windows-gnu
- #3353 Speed up CI
- #3433 Module.deserialize - accept AsEngineRef
- #3428 Implement wasmer config
- #3432 Amend changes to wasmer init
- #3439 Use GNU/Linux frame registration code for FreeBSD too
- #3324 Implement wasmer init and wasmer publish
- #3431 Revert "Implement wasmer init and wasmer publish"
- #3483 Fix feature flags for make-build-wasmer-headless
- #3496 Fixed create-exe tests for object-format serialized
- #3479 This should fix CI build of CAPI Headless
- #3473 Fix wasm publish validation
- #3467 Fix wasmer-wasi-js compilation
- #3443 Fix fuzz errors
- #3456 Fix wasmer-rust readme example
- #3440 Fix CI for external collaborator PRs
- #3427 Fix cargo-deny failing on webc crate
- #3423 Fix minor typo
- #3419 Fix CHANGELOG generation to list by PR merged date, not created date
- #3439 Use GNU/Linux frame registration code for FreeBSD too
- #3448 Fix
make install-capi-lib
install paths
- #3403 Add wasm_importtype_copy to C API
- #3416 Download and install packages via .tar.gz URLs and improve installation error message
- #3402 Do not run first command of wapm file and print all commands instead
- #3400 Use the wasm_bindgen_downcast crate for downcasting JsValues
- #3363 Store Used CpuFeature in Artifact instead of Present CpuFeatures for Singlepass
- #3378 Introduced EngineRef and AsEngineRef trait
- #3386 Restore Support For All Wasi Clock Types
- #3153 SharedMemory & Atomics
- #3415 Fix singlepass for Aarch64
- #3395 Fix create-exe to be able to cross-compile on Windows
- #3396 Fix build doc and minimum-sys build
- #3364 Added the actual LZCNT / TZCNT implementation
- #3365 Improve FreeBSD support
- #3368 Remove wasi conditional compilation from wasmer-registry
- #3367 Change LLVM detection in Makefile
- #3361 Give users feedback when they are running "wasmer add ..."
- #3360 Introduce a "wasmer_registry::queries" module with all GraphQL queries
- #3355 Fetch the pirita download URL
- #3344 Revert #3145
- #3302 Some Refactor of Singlepass compiler to have better error and cpu features handling
- #3296 Use the right collection when parsing type section
- #3292 Precompute offsets in VMOffsets
- #3290 Limit the use of clone when handling Compilation object
- #3316 Implement wasmer whoami
- #3341 Update CHANGELOG.md
- #3342 Fixes for 3.0.0 release
- #3339 Fixes for wasmer login / wasmer add
- #3337 Add automation script to automate deploying releases on GitHub
- #3338 Re-add codecov to get coverage reports
- #3295 Implement wasmer run {url}
- #3314 Add windows-gnu workflow
- #3317 Port "wapm install" to Wasmer
- #3318 Bump the MSRV to 1.63
- #3319 Disable 'Test integration CLI' on CI for the Windows platform as it's not working at all
- #3297 Implement wasmer login
- #3311 Export Module::IoCompileError as it's an error returned by an exported function
- #2800 RISC-V support
- #3293 Removed call to to_vec() on assembler.finalise()
- #3288 Rollback all the TARGET_DIR changes
- #3284 Makefile now handle TARGET_DIR env. var. for build too
- #3276 Remove unnecessary checks to test internet connection
- #3266 Return ENotCapable error when accessing unknown files on root (for #3263 and #3264)
- #3275 Disable printing "local package ... not found" in release mode
- #3273 Undo Makefile commit
- #3299 Fix "create-exe" for windows-x86_64 target
- #3294 Fix test sys yaml syntax
- #3287 Fix Makefile with TARGET_DIR end with release folder, removing it
- #3286 Fix Makefile with TARGET_DIR end with release folder
- #3285 Fix CI to setup TARGET_DIR to target/release directly
- #3277 Fix red CI on master
- #3258 Migrate pirita / native executables feature from wasmer-private
- #3268 Fix fd_right nightly test to avoid foo.txt file leftover
- #3260 Fix bug in wasmer run
- #3257 Fix linux-aarch64 build
- #3222 Add function to retrieve function name from wasm_frame_t
- #3240 Fix filesystem rights on WASI, add integration test for file permissions
- #3238 Fixed main README ocaml homepage link and added ocaml in other language README
- #3145 C-API: add functions to overwrite stdin / stdout / stderr handlers
- #3215 Update wasmer --version logic, integrate wapm-cli
- #3248 Move loupe CHANGELOG entry from 2.3.0 to 3.x
- #3230 Remove test if dest file exist on path_rename wasi syscall (for #3228)
- #3061 Removed trailing zero in WASI::fd_prestat_dir_name name return (for #3025)
- #3223 Delete lib/wasi-types-generated directory
- #3178 Feat enhanced tinytunable test
- #3177 Auto-generate wasi-types from .wit files
- #3218 Seal
HostFunctionKind
- #3221 Fix #3197
- #3229 Fixed version to nightly-2022-10-09 for the CI build Minimal Wasmer Headless again
- #3227 Fixed version to nightly-2022-10-09 for the CI build Minimal Wasmer Headless
- #3226 Fixed version to nightly-2002-10-09 for the CI build Minimal Wasmer Headless
- #3211 fix popcnt for aarch64
- #3204 Fixed a typo in README
- #3176 Add support for
cargo-binstall
- #3141 The API breaking changes from future WASIX/Network/Threading addition
- #3119 Added LinearMemory trait
- #3117 Add tests for wasmer-cli create-{exe,obj} commands
- #3101 CI/build.yaml: add libwasmer headless in default distribution
- #3090 Added version to the wasmer cli
- #3089 Add wasi_* C-API function changes in migration guide for 3.0.0
- #3076 Add support for cross-compiling in create-exe with zig cc WIP
- #3072 Add back
Function::*_with_env(…)
- #3048 Add cloudcompiler.yaml
- #3068 create-{exe,obj}: add documentations and header file generation for create-obj
- #3065 Added '.' and '..' special folder t WASI fd_readdir return (for #3033)
- #3184 Test libwasmer.dll on Windows
- #3164 Synchronize between -sys and -js tests
- #3165 Initial port of make test-js-core (port wasmer API to core)
- #3138 Js imports revamp
- #3142 Bump rust toolchain
- #3116 Multithreading, full networking and RPC for WebAssembly
- #3130 Remove panics from Artifact::deserialize
- #3134 Bring libwasmer-headless.a from 22MiB to 7.2MiB (on my machine)
- #3131 Update for migration-to-3.0.0 for MemoryView changes
- #3123 Lower libwasmer headless size
- #3132 Revert "Lower libwasmer headless size"
- #3128 scripts/publish.py: validate crates version before publishing
- #3126 scripts/publish.py: replace toposort dependency with python std graphlib module
- #3122 Update Cargo.lock dependencies
- #3118 Refactor Artifact enum into a struct
- #3114 Implemented shared memory for Wasmer in preparation for multithreading
- #3104 Re-enabled ExternRef tests
- #3103 create-exe: prefer libwasmer headless when cross-compiling
- #3097 MemoryView lifetime tied to memory and not StoreRef
- #3095 create-exe: list supported cross-compilation target triples in help …
- #3096 create-exe: use cached wasmer tarballs for network fetches
- #3083 Disable wasm build in build CI
- #3081 3.0.0-beta release
- #3079 Migrate to clap from structopt
- #3075 Remove __wbindgen_thread_id
- #3074 Update chrono to 0.4.20, avoiding RUSTSEC-2020-0159
- #3070 wasmer-cli: Allow create-exe to receive a static object as input
- #3069 Remove native feature entry from docs.rs metadata
- #3057 wasmer-cli: create-obj command
- #3060 CI: Unset rustup override after usage instead of setting it to stable
- #3192 fix the typos
- #3185 Fix
wasmer compile
command for non-x86 target - #3129 Fix differences between -sys and -js API
- #3137 Fix cache path not being present during installation of cross-tarball
- #3115 Fix static object signature deserialization
- #3093 Fixed a potential issue when renaming a file
- #3088 Fixed an issue when renaming a file from a preopened dir directly (for 3084)
- #3078 Fix errors from "make lint"
- #3052 Fixed a memory corruption issue with JS memory operations that were r…
- #3058 Fix trap tracking
- #3035 Added a simple divide by zero trap wast test (for #1899)
- #3008 Add check-public-api.yaml workflow
- #3021 Added back some needed relocation for arm64 llvm compiler
- #2982 Add a
rustfmt.toml
file to the repository - #2953 Makefile: add
check
target - #2952 CI: add make build-wasmer-wasm test
- #3051 Updated Crenelift to v0.86.1
- #3038 Re-introduce create-exe to wasmer-cli v3.0
- #3049 Disable traps::trap_display_multi_module test for Windows+singlepass
- #3047 Improved EngineBuilder API
- #3046 Merge Backend into EngineBuilder and refactor feature flags
- #3039 Improved hashing/ids of function envs
- #3029 Remove Engine, Artifact traits, merge all Engines into one, make everything rkyv serialazable
- #2892 Implement new Context API for Wasmer 3.0
- #3031 Update docs/migration_to_3.0.0.md
- #3030 Remove cranelift dependency from wasmer-wasi
- #3028 Ctx store rename
- #3023 Changed CI rust install action to dtolnay one
- #3013 Context api refactor
- #2999 Support --invoke option for emscripten files without _start function
- #3003 Remove RuntimeError::raise from public API
- #3000 Allow debugging of EXC_BAD_INSTRUCTION on macOS
- #2946 Removing dylib and staticlib engines in favor of a single Universal Engine
- #2996 Migrated al examples to new Context API
- #2973 Port C API to new Context API
- #2974 Context api tests
- #2988 Have make targets install-capi-lib,install-pkgconfig work without building the wasmer binary
- #2976 Upgrade enumset minimum version to one that compiles
- #2969 Port JS API to new Context API
- #2966 Singlepass nopanic
- #2949 Switch back to using custom LLVM builds on CI
- #2963 Remove libxcb and libwayland dependencies from wasmer-cli release build
- #2957 Enable multi-value handling in Singlepass compiler
- #2941 Implementation of WASIX and a fully networking for Web Assembly
- #2947 - Converted the WASI js test into a generic stdio test that works for…
- #2940 Merge
wasmer3
back tomaster
branch - #2939 Rename NativeFunc to TypedFunction
- #3045 Fixed WASI fd_read syscall when reading multiple iovs and read is partial (for #2904)
- #2997 Fix "run --invoke [function]" to behave the same as "run"
- #3027 Fixed residual package-doc issues
- #3026 test-js.yaml: fix typo
- #3017 Fixed translation in README.md
- #3001 Fix context capi ci errors
- #2967 Fix singlepass on arm64 that was trying to emit a sub opcode with a constant as destination (for #2959)
- #2954 Some fixes to x86_64 Singlepass compiler, when using atomics
- #2950 compiler-cranelift: Fix typo in enum variant
- #2948 Fix regression on gen_import_call_trampoline_arm64()
- #2943 Fix build error on some archs by using c_char instead of i8
- #2944 Fix duplicate entries in the CHANGELOG
- #2942 Fix clippy lints
- #2862 Added CI builds for linux-aarch64 target.
- #2811 Added support for EH Frames in singlepass
- #2851 Allow Wasmer to compile to Wasm/WASI
- #2807 Run Wasm code in a separate stack
- #2802 Support Dylib engine with Singlepass
- #2836 Improve TrapInformation data stored at runtime
- #2864
wasmer-cli
: remove wasi-experimental-io-devices from default builds - #2933 Rename NativeFunc to TypedFunction.
- #2829 Improve error message oriented from JS object.
- #2828 Fix JsImportObject resolver.
- #2872 Fix
WasmerEnv
finalizer - #2821 Opt in
sys
feature
- #2812 Fixed another panic due to incorrect drop ordering.
- #2775 Added support for SSE 4.2 in the Singlepass compiler as an alternative to AVX.
- #2805 Enabled WASI experimental I/O devices by default in releases.
- #2795 Fixed a bug in the Singlepass compiler introduced in #2775.
- #2806 Fixed a panic due to incorrect drop ordering of
Module
fields.
- #2778 Fixed f32_load/f64_load in Singlepass. Also fixed issues with out-of-range conditional branches.
- #2786 Fixed a potential integer overflow in WasmPtr memory access methods.
- #2787 Fixed a codegen regression in the Singlepass compiler due to non-determinism of
HashSet
iteration.
- #2750 Added Aarch64 support to Singlepass (both Linux and macOS).
- #2753 Re-add "dylib" to the list of default features.
- #2747 Use a standard header for metadata in all serialized modules.
- #2759 Use exact version for Wasmer crate dependencies.
- #2769 Fixed deadlock in emscripten dynamic calls.
- #2742 Fixed WASMER_METADATA alignment in the dylib engine.
- #2746 Fixed invoking
wasmer binfmt register
from$PATH
. - #2748 Use trampolines for all libcalls in engine-universal and engine-dylib.
- #2766 Remove an attempt to reserve a GPR when no GPR clobbering is occurring.
- #2768 Fixed serialization of FrameInfo on Dylib engine.
- #2726 Added
externs_vec
method toImportObject
. - #2724 Added access to the raw
Instance
JS object in Wsasmer-js.
- #2711 Make C-API and Wasi dependencies more lean
- #2706 Refactored the Singlepass compiler in preparation for AArch64 support (no user visible changes).
- #2717 Allow
Exports
to be modified after being cloned. - #2719 Fixed
wasm_importtype_new
's Rust signature to not assume boxed vectors. - #2723 Fixed a bug in parameter passing in the Singlepass compiler.
- #2768 Fixed issue with Frame Info on dylib engine.
- #2574 Added Windows support to Singlepass.
- #2535 Added iOS support for Wasmer. This relies on the
dylib-engine
. - #2460 Wasmer can now compile to Javascript via
wasm-bindgen
. Use thejs-default
(and no default features) feature to try it!. - #2491 Added support for WASI to Wasmer-js.
- #2436 Added the x86-32 bit variant support to LLVM compiler.
- #2499 Added a subcommand to linux wasmer-cli to register wasmer with binfmt_misc
- #2511 Added support for calling dynamic functions defined on the host
- #2491 Added support for WASI in Wasmer-js
- #2592 Added
ImportObject::get_namespace_exports
to allow modifying the contents of an existing namespace in anImportObject
. - #2694 wasmer-js: Allow an
ImportObject
to be extended with a JS object. - #2698 Provide WASI imports when invoking an explicit export from the CLI.
- #2701 Improved VFS API for usage from JS
- #2460 breaking change
wasmer
API usage withno-default-features
requires now thesys
feature to preserve old behavior. - #2476 Removed unncessary abstraction
ModuleInfoTranslate
fromwasmer-compiler
. - #2442 breaking change Improved
WasmPtr
, addedWasmCell
for host/guest interaction.WasmPtr::deref
will now returnWasmCell<'a, T>
instead of&'a Cell<T>
,WasmPtr::deref_mut
is now deleted from the API. - #2427 Update
loupe
to 0.1.3. - #2685 The minimum LLVM version for the LLVM compiler is now 12. LLVM 13 is used by default.
- #2569 Add
Send
andSync
to uses of theLikeNamespace
trait object. - #2692 Made module serialization deterministic.
- #2693 Validate CPU features when loading a deserialized module.
- #2599 Fixed Universal engine for Linux/Aarch64 target.
- #2587 Fixed deriving
WasmerEnv
when aliasingResult
. - #2518 Remove temporary file used to creating an artifact when creating a Dylib engine artifact.
- #2494 Fixed
WasmerEnv
access when usingcall_indirect
with the Singlepass compiler. - #2479 Improved
wasmer validate
error message on non-wasm inputs. - #2454 Won't set
WASMER_CACHE_DIR
for Windows. - #2426 Fix the
wax
script generation. - #2635 Fix cross-compilation for singlepass.
- #2672 Use
ENOENT
instead ofEINVAL
in some WASI syscalls for a non-existent file - #2547 Delete temporary files created by the dylib engine.
- #2548 Fix stack probing on x86_64 linux with the cranelift compiler.
- #2557 #2559 Fix WASI dir path renaming.
- #2560 Fix signal handling on M1 MacOS.
- #2474 Fix permissions on
WASMER_CACHE_DIR
on Windows. - #2528 #2525 #2523 #2522 #2545 #2550 #2551 Fix various bugs in the new VFS implementation.
- #2552 Fix stack guard handling on Windows.
- #2585 Fix build with 64-bit MinGW toolchain.
- #2587 Fix absolute import of
Result
in derive. - #2599 Fix AArch64 support in the LLVM compiler.
- #2655 Fix argument parsing of
--dir
and--mapdir
. - #2666 Fix performance on Windows by using static memories by default.
- #2667 Fix error code for path_rename of a non-existant file
- #2672 Fix error code returned by some wasi fs syscalls for a non-existent file
- #2673 Fix BrTable codegen on the LLVM compiler
- #2674 Add missing
__WASI_RIGHT_FD_DATASYNC
for preopened directories - #2677 Support 32-bit memories with 65536 pages
- #2681 Fix slow compilation in singlepass by using dynasm's
VecAssembler
. - #2690 Fix memory leak when obtaining the stack bounds of a thread
- #2699 Partially fix unbounded memory leak from the FuncDataRegistry
- #2411 Extract types from
wasi
to a newwasi-types
crate. - #2390 Make
wasmer-vm
to compile on Windows 32bits. - #2402 Add more examples and more doctests for
wasmer-middlewares
.
- #2399 Add the Dart integration in the
README.md
.
- #2386 Handle properly when a module has no exported functions in the CLI.
- #2383 Fix bugs in the Wasmer CLI tool with the way
--version
and the name of the CLI tool itself were printed.
- #2348 Make Wasmer available on
aarch64-linux-android
. - #2315 Make the Cranelift compiler working with the Native engine.
- #2306 Add support for the latest version of the Wasm SIMD proposal to compiler LLVM.
- #2296 Add support for the bulk memory proposal in compiler Singlepass and compiler LLVM.
- #2291 Type check tables when importing.
- #2262 Make parallelism optional for the Singlepass compiler.
- #2249 Make Cranelift unwind feature optional.
- #2208 Add a new CHANGELOG.md specific to our C API to make it easier for users primarily consuming our C API to keep up to date with changes that affect them.
- #2154 Implement Reference Types in the LLVM compiler.
- #2003 Wasmer works with musl, and is built, tested and packaged for musl.
- #2250 Use
rkyv
for the JIT/Universal engine. - #2190 Use
rkyv
to read nativeModule
artifact. - #2186 Update and improve the Fuzz Testing infrastructure.
- #2161 Make NaN canonicalization configurable.
- #2116 Add a package for Windows that is not an installer, but all the
lib
andinclude
files as for macOS and Linux. - #2123 Use
ENABLE_{{compiler_name}}=(0|1)
to resp. force to disable or enable a compiler when running theMakefile
, e.g.ENABLE_LLVM=1 make build-wasmer
. - #2123
libwasmer
comes with all available compilers per target instead of Cranelift only. - #2135 Documentation for Linux distribution maintainers
- #2104 Update WAsm core spectests and wasmparser.
- #2369 Remove the deprecated
--backend
option in the CLI. - #2368 Remove the deprecated code in the
wasmer-wasi
crate. - #2367 Remove the
deprecated
features and associated code in thewasmer
crate. - #2366 Remove the deprecated crates.
- #2364 Rename
wasmer-engine-object-file
towasmer-engine-staticlib
. - #2356 Rename
wasmer-engine-native
towasmer-engine-dylib
. - #2340 Rename
wasmer-engine-jit
towasmer-engine-universal
. - #2307 Update Cranelift, implement low hanging fruit SIMD opcodes.
- #2305 Clean up and improve the trap API, more deterministic errors etc.
- #2299 Unused trap codes (due to Wasm spec changes),
HeapSetterOutOfBounds
andTableSetterOutOfBounds
were removed fromwasmer_vm::TrapCode
and the numbering of the remaining variants has been adjusted. - #2293 The
Memory::ty
trait method now returnsMemoryType
by value.wasmer_vm::LinearMemory
now recomputesMemoryType
'sminimum
field when accessing its type. This behavior is what's expected by the latest spectests.wasmer::Memory::ty
has also been updated to follow suit, it now returnsMemoryType
by value. - #2286 Replace the
goblin
crate by theobject
crate. - #2281 Refactor the
wasmer_vm
crate to remove unnecessary structs, reuse data when available etc. - #2251 Wasmer CLI will now execute WASI modules with multiple WASI namespaces in them by default. Use
--allow-multiple-wasi-versions
to suppress the warning and use--deny-multiple-wasi-versions
to make it an error. - #2201 Implement
loupe::MemoryUsage
forwasmer::Instance
. - #2200 Implement
loupe::MemoryUsage
forwasmer::Module
. - #2199 Implement
loupe::MemoryUsage
forwasmer::Store
. - #2195 Remove dependency to
cranelift-entity
. - #2140 Reduce the number of dependencies in the
wasmer.dll
shared library by statically compiling CRT. - #2113 Bump minimum supported Rust version to 1.49
- #2144 Bump cranelift version to 0.70
- #2149
wasmer-engine-native
looks for clang-11 instead of clang-10. - #2157 Simplify the code behind
WasmPtr
- #2397 Fix WASI rename temporary file issue.
- #2391 Fix Singlepass emit bug, #2347 and #2159
- #2327 Fix memory leak preventing internal instance memory from being freed when a WasmerEnv contained an exported extern (e.g. Memory, etc.).
- #2247 Internal WasiFS logic updated to be closer to what WASI libc does when finding a preopened fd for a path.
- #2241 Fix Undefined Behavior in setting memory in emscripten
EmEnv
. - #2224 Enable SIMD based on actual Wasm features in the Cranelift compiler.
- #2217 Fix bug in
i64.rotr X 0
in the LLVM compiler. - #2290 Handle Wasm modules with no imports in the CLI.
- #2108 The Object Native Engine generates code that now compiles correctly with C++.
- #2125 Fix RUSTSEC-2021-0023.
- #2155 Fix the implementation of shift and rotate in the LLVM compiler.
- #2101 cflags emitted by
wasmer config --pkg-config
are now correct.
- #2053 Implement the non-standard
wasi_get_unordered_imports
function in the C API. - #2072 Add
wasm_config_set_target
, along withwasm_target_t
,wasm_triple_t
andwasm_cpu_features_t
in the unstable C API. - #2059 Ability to capture
stdout
andstderr
with WASI in the C API. - #2040 Add
InstanceHandle::vmoffsets
to expose the offsets of thevmctx
region. - #2026 Expose trap code of a
RuntimeError
, if it's aTrap
. - #2054 Add
wasm_config_delete
to the Wasm C API. - #2072 Added cross-compilation to Wasm C API.
- #2085 Update to latest inkwell and LLVM 11.
- #2037 Improved parallelism of LLVM with the Native/Object engine
- #2012 Refactor Singlepass init stack assembly (more performant now)
- #2036 Optimize memory allocated for Function type definitions
- #2083 Mark
wasi_env_set_instance
andwasi_env_set_memory
as deprecated. You may simply remove the calls with no side-effect. - #2056 Change back to depend on the
enumset
crate instead ofwasmer_enumset
- #2066 Include 'extern "C"' in our C headers when included by C++ code.
- #2090
wasi_env_t
needs to be freed withwasi_env_delete
in the C API. - #2084 Avoid calling the function environment finalizer more than once when the environment has been cloned in the C API.
- #2069 Use the new documentation for
include/README.md
in the Wasmer package. - #2042 Parse more exotic environment variables in
wasmer run
. - #2041 Documentation diagrams now have a solid white background rather than a transparent background.
- #2070 Do not drain the entire captured stream at first read with
wasi_env_read_stdout
or_stderr
in the C API. - #2058 Expose WASI versions to C correctly.
- #2044 Do not build C headers on docs.rs.
This release includes a breaking change in the API (changing the trait enumset::EnumsetType
to wasmer_enumset::EnumSetType
and changing enumset::EnumSet
in signatures to wasmer_enumset::EnumSet
to work around a breaking change introduced by syn
) but is being released as a minor version because 1.0.0
is also in a broken state due to a breaking change introduced by syn
which affects enumset
and thus wasmer
.
This change is unlikely to affect any users of wasmer
, but if it does please change uses of the enumset
crate to the wasmer_enumset
crate where possible.
- #2010 A new, experimental, minified build of
wasmer
calledwasmer-headless
will now be included with releases.wasmer-headless
is thewasmer
VM without any compilers attached, so it can only run precompiled Wasm modules. - #2005 Added the arguments
alias
andoptional
toWasmerEnv
derive'sexport
attribute.
- #2006 Use
wasmer_enumset
, a fork of theenumset
crate to work around a breaking change insyn
- #1985 Bump minimum supported Rust version to 1.48
- #1969 Added D integration to the README
- #1979
WasmPtr::get_utf8_string
was renamed toWasmPtr::get_utf8_str
and madeunsafe
.
- #1979
WasmPtr::get_utf8_string
now returns aString
, fixing a soundness issue in certain circumstances. The old functionality is available under a newunsafe
function,WasmPtr::get_utf8_str
.
- #1894 Added exports
wasmer::{CraneliftOptLevel, LLVMOptLevel}
to allow usingCranelift::opt_level
andLLVM::opt_level
directly via thewasmer
crate
- #1941 Turn
get_remaining_points
/set_remaining_points
of theMetering
middleware into free functions to allow using them in an ahead-of-time compilation setup - #1955 Set
jit
as a default feature of thewasmer-wasm-c-api
crate - #1944 Require
WasmerEnv
to beSend + Sync
even in dynamic functions. - #1963 Removed
to_wasm_error
in favour ofimpl From<BinaryReaderError> for WasmError
- #1962 Replace
wasmparser::Result<()>
withResult<(), MiddlewareError>
in middleware, allowing implementors to return errors inFunctionMiddleware::feed
- #1949
wasm_<type>_vec_delete
functions no longer crash when the given vector is uninitialized, in the Wasmer C API - #1949 The
wasm_frame_vec_t
,wasm_functype_vec_t
,wasm_globaltype_vec_t
,wasm_memorytype_vec_t
, andwasm_tabletype_vec_t
are now boxed vectors in the Wasmer C API
- #1916 Add the
WASMER_VERSION*
constants with thewasmer_version*
functions in the Wasmer C API - #1867 Added
Metering::get_remaining_points
andMetering::set_remaining_points
- #1881 Added
UnsupportedTarget
error toCompileError
- #1908 Implemented
TryFrom<Value<T>>
fori32
/u32
/i64
/u64
/f32
/f64
- #1927 Added mmap support in
Engine::deserialize_from_file
to speed up artifact loading - #1911 Generalized signature type in
Function::new
andFunction::new_with_env
to accept owned and referenceFunctionType
as well as array pairs. This allows users to define signatures as constants. ImplementedFrom<([Type; $N], [Type; $M])>
forFunctionType
to support this.
- #1865 Require that implementors of
WasmerEnv
also implementSend
,Sync
, andClone
. - #1851 Improve test suite and documentation of the Wasmer C API
- #1874 Set
CompilerConfig
to be owned (following wasm-c-api) - #1880 Remove cmake dependency for tests
- #1924 Rename reference implementation
wasmer::Tunables
towasmer::BaseTunables
. Export traitwasmer_engine::Tunables
aswasmer::Tunables
.
- #1865 Fix memory leaks with host function environments.
- #1870 Fixed Trap instruction address maps in Singlepass
- #1914 Implemented
TryFrom<Bytes> for Pages
instead ofFrom<Bytes> for Pages
to properly handle overflow errors
- #1839 Added support for Metering Middleware
- #1837 It is now possible to use exports of an
Instance
even after theInstance
has been freed - #1831 Added support for Apple Silicon chips (
arm64-apple-darwin
) - #1739 Improved function environment setup via
WasmerEnv
proc macro. - #1649 Add outline of migration to 1.0.0 docs.
- #1739 Environments passed to host function- must now implement the
WasmerEnv
trait. You can implement it on your existing type with#[derive(WasmerEnv)]
. - #1838 Deprecate
WasiEnv::state_mut
: preferWasiEnv::state
instead. - #1663 Function environments passed to host functions now must be passed by
&
instead of&mut
. This is a breaking change. This change fixes a race condition when a host function is called from multiple threads. If you need mutability in your environment, consider usingstd::sync::Mutex
or other synchronization primitives. - #1830 Minimum supported Rust version bumped to 1.47.0
- #1810 Make the
state
field ofWasiEnv
public
- #1857 Fix dynamic function with new Environment API
- #1855 Fix memory leak when using
wat2wasm
in the C API, the function now takes its output parameter by pointer rather than returning an allocatedwasm_byte_vec_t
. - #1841 We will now panic when attempting to use a native function with a captured env as a host function. Previously this would silently do the wrong thing. See #1840 for info about Wasmer's support of closures as host functions.
- #1764 Fix bug in WASI
path_rename
allowing renamed files to be 1 directory below a preopened directory.
- #1761 Implement the
wasm_trap_t**
argument ofwasm_instance_new
in the Wasm C API. - #1687 Add basic table example; fix ownership of local memory and local table metadata in the VM.
- #1751 Implement
wasm_trap_t
inside a function declared withwasm_func_new_with_env
in the Wasm C API. - #1741 Implement
wasm_memory_type
in the Wasm C API. - #1736 Implement
wasm_global_type
in the Wasm C API. - #1699 Update
wasm.h
to its latest version. - #1685 Implement
wasm_exporttype_delete
in the Wasm C API. - #1725 Implement
wasm_func_type
in the Wasm C API. - #1715 Register errors from
wasm_module_serialize
in the Wasm C API. - #1709 Implement
wasm_module_name
andwasm_module_set_name
in the Wasm(er) C API. - #1700 Implement
wasm_externtype_copy
in the Wasm C API. - #1785 Add more examples on the Rust API.
- #1783 Handle initialized but empty results in
wasm_func_call
in the Wasm C API. - #1780 Implement new SIMD zero-extend loads in compiler-llvm.
- #1754 Implement aarch64 ABI for compiler-llvm.
- #1693 Add
wasmer create-exe
subcommand.
- #1772 Remove lifetime parameter from
NativeFunc
. - #1762 Allow the
=
sign in a WASI environment variable value. - #1710 Memory for function call trampolines is now owned by the Artifact.
- #1781 Cranelift upgrade to 0.67.
- #1777 Wasmparser update to 0.65.
- #1775 Improve LimitingTunables implementation.
- #1720 Autodetect llvm regardless of architecture.
- #1718 Fix panic in the API in some situations when the memory's min bound was greater than the memory's max bound.
- #1731 In compiler-llvm always load before store, to trigger any traps before any bytes are written.
- #1635 Implement
wat2wasm
in the Wasm C API. - #1636 Implement
wasm_module_validate
in the Wasm C API. - #1657 Implement
wasm_trap_t
andwasm_frame_t
for Wasm C API; add examples in Rust and C of exiting early with a host function.
- #1690 Fix
wasm_memorytype_limits
wheremin
andmax
represents pages, not bytes. Additionally, fixes the max limit sentinel value. - #1671 Fix probestack firing inappropriately, and sometimes over/under allocating stack.
- #1660 Fix issue preventing map-dir aliases starting with
/
from working properly. - #1624 Add Value::I32/Value::I64 converters from unsigned ints.
- #1682 Improve error reporting when making a memory with invalid settings.
- #1691 Bump minimum supported Rust version to 1.46.0
- #1645 Move the install script to https://github.com/wasmerio/wasmer-install
- #1620 Fix bug causing the Wapm binary to not be packaged with the release
- #1619 Improve error message in engine-native when C compiler is missing
- #1566 Add support for opening special Unix files to the WASI FS
- #1602 Fix panic when calling host functions with negative numbers in certain situations
- #1590 Fix soundness issue in API of vm::Global
- Wasmer refactor lands
- #1439 Move
wasmer-interface-types
into its own repository
- #1331 Implement the
record
type and instrutions for WIT - #1345 Adding ARM testing in Azure Pipelines
- #1329 New numbers and strings instructions for WIT
- #1285 Greatly improve errors in
wasmer-interface-types
- #1303 NaN canonicalization for singlepass backend.
- #1313 Add new high-level public API through
wasmer
crate. Includes many updates including:- Minor improvement:
imports!
macro now handles no trailing comma as well as a trailing comma in namespaces and between namespaces. - New methods on
Module
:exports
,imports
, andcustom_sections
. - New way to get exports from an instance with
let func_name: Func<i32, i64> = instance.exports.get("func_name");
. - Improved
Table
APIs includingset
which now allows setting functions directly. TODO: update this more ifTable::get
gets made public in this PR - TODO: finish the list of changes here
- Minor improvement:
- #1305 Handle panics from DynamicFunc.
- #1300 Add support for multiple versions of WASI tests: wasitests now test all versions of WASI.
- #1292 Experimental Support for Android (x86_64 and AArch64)
- #1283 Workaround for floating point arguments and return values in
DynamicFunc
s.
- #1401 Make breaking change to
RuntimeError
:RuntimeError
is now more explicit about its possible error values allowing for better insight into why a call into Wasm failed. - #1382 Refactored test infranstructure (part 2)
- #1380 Refactored test infranstructure (part 1)
- #1357 Refactored bin commands into separate files
- #1335 Change mutability of
memory
toconst
inwasmer_memory_data_length
in the C API - #1332 Add option to
CompilerConfig
to force compiler IR verification off even whendebug_assertions
are enabled. This can be used to make debug builds faster, which may be important if you're creating a library that wraps Wasmer and depend on the speed of debug builds. - #1320 Change
custom_sections
field inModuleInfo
to be more standards compliant by allowing multiple custom sections with the same name. To get the old behavior with the new API, you can add.last().unwrap()
to accesses. For example,module_info.custom_sections["custom_section_name"].last().unwrap()
. - #1301 Update supported stable Rust version to 1.41.1.
- #1294 Fix bug related to system calls in WASI that rely on reading from WasmPtrs as arrays of length 0.
WasmPtr
will now succeed on length 0 arrays again.
- #1291 Fix installation packaging script to package the
wax
command.
- #1286 Updated Windows Wasmer icons. Add wax
- #1284 Implement string and memory instructions in
wasmer-interface-types
- #1272 Fix off-by-one error bug when accessing memory with a
WasmPtr
that contains the last valid byte of memory. Also changes the behavior ofWasmPtr<T, Array>
with a length of 0 andWasmPtr<T>
wherestd::mem::size_of::<T>()
is 0 to always returnNone
- #1263 Changed the behavior of some WASI syscalls to now handle preopened directories more properly. Changed default
--debug
logging to only show Wasmer-related messages. - #1217 Polymorphic host functions based on dynamic trampoline generation.
- #1252 Allow
/
in wasi--mapdir
wasm path. - #1212 Add support for GDB JIT debugging:
- Add
--generate-debug-info
and-g
flags towasmer run
to generate debug information during compilation. The debug info is passed via the GDB JIT interface to a debugger to allow source-level debugging of Wasm files. Currently only available on clif-backend. - Break public middleware APIs: there is now a
source_loc
parameter that should be passed through if applicable. - Break compiler trait methods such as
feed_local
,feed_event
as well asModuleCodeGenerator::finalize
.
- Add
- #1245 Use Ubuntu 16.04 in CI so that we use an earlier version of GLIBC.
- #1234 Check for unused excluded spectest failures.
- #1232
wasmer-interface-types
has a WAT decoder.
- #1233 Improved Wasmer C API release artifacts.
- #1216
wasmer-interface-types
receives a binary encoder. - #1228 Singlepass cleanup: Resolve several FIXMEs and remove protect_unix.
- #1218 Enable Cranelift verifier in debug mode. Fix bug with table indices being the wrong type.
- #787 New crate
wasmer-interface-types
to implement WebAssembly Interface Types. - #1213 Fixed WASI
fdstat
to detectisatty
properly. - #1192 Use
ExceptionCode
for error representation. - #1191 Fix singlepass miscompilation on
Operator::CallIndirect
. - #1180 Fix compilation for target
x86_64-unknown-linux-musl
. - #1170 Improve the WasiFs builder API with convenience methods for overriding stdin, stdout, and stderr as well as a new sub-builder for controlling the permissions and properties of preopened directories. Also breaks that implementations of
WasiFile
must beSend
-- please file an issue if this change causes you any issues. - #1161 Require imported functions to be
Send
. This is a breaking change that fixes a soundness issue in the API. - #1140 Use
blake3
as default hashing algorithm for caching. - #1129 Standard exception types for singlepass backend.
- Fix bug in wapm related to the
package.wasmer_extra_flags
entry in the manifest
Special thanks to @repi and @srenatus for their contributions!
- #1153 Added Wasmex, an Elixir language integration, to the README
- #1133 New
wasmer_trap
function in the C API, to properly error from within a host function - #1147 Remove
log
andtrace
macros fromwasmer-runtime-core
, removedebug
andtrace
features fromwasmer-*
crates, use thelog
crate for logging and usefern
in the Wasmer CLI binary to output log messages. Colorized output will be enabled automatically if printing to a terminal, to force colorization on or off, set theWASMER_COLOR
environment variable totrue
orfalse
. - #1128 Fix a crash when a host function is missing and the
allow_missing_functions
flag is enabled - #1099 Remove
backend::Backend
fromwasmer_runtime_core
- #1097 Move inline breakpoint outside of runtime backend
- #1095 Update to cranelift 0.52.
- #1092 Add
get_utf8_string_with_nul
toWasmPtr
to read nul-terminated strings from memory. - #1071 Add support for non-trapping float-to-int conversions, enabled by default.
Special thanks to @ethanfrey, @AdamSLevy, @Jasper-Bekkers, @srenatus for their contributions!
- #1078 Increase the maximum number of parameters
Func
can take - #1062 Expose some opt-in Emscripten functions to the C API
- #1032 Change the signature of the Emscripten
abort
function to work with Emscripten 1.38.30 - #1060 Test the capi with all the backends
- #1069 Add function
get_memory_and_data
toCtx
to help prevent undefined behavior and mutable aliasing. It allows accessing memory while borrowing data mutably for theCtx
lifetime. This new function is now being used inwasmer-wasi
. - #1058 Fix minor panic issue when
wasmer::compile_with
called with llvm backend. - #858 Minor panic fix when wasmer binary with
loader
option run a module without exported_start
function. - #1056 Improved
--invoke
args parsing (supportingi32
,i64
,f32
andf32
) in Wasmer CLI - #1054 Improve
--invoke
output in Wasmer CLI - #1053 For RuntimeError and breakpoints, use Box<Any + Send> instead of Box.
- #1052 Fix minor panic and improve Error handling in singlepass backend.
- #1050 Attach C & C++ headers to releases.
- #1033 Set cranelift backend as default compiler backend again, require at least one backend to be enabled for Wasmer CLI
- #1044 Enable AArch64 support in the LLVM backend.
- #1030 Ability to generate
ImportObject
for a specific version WASI version with the C API. - #1028 Introduce strict/non-strict modes for
get_wasi_version
- #1029 Add the “floating”
WasiVersion::Latest
version. - #1006 Fix minor panic issue when
wasmer::compile_with
called with llvm backend - #1009 Enable LLVM verifier for all tests, add new llvm-backend-tests crate.
- #1022 Add caching support for Singlepass backend.
- #1004 Add the Auto backend to enable to adapt backend usage depending on wasm file executed.
- #1068 Various cleanups for the singlepass backend on AArch64.
- #713 Add AArch64 support for singlepass.
- #995 Detect when a global is read without being initialized (emit a proper error instead of panicking)
- #996 Refactored spectests, emtests and wasitests to use default compiler logic
- #992 Updates WAPM version to 0.4.1, fix arguments issue introduced in #990
- #990 Default wasmer CLI to
run
. Wasmer will now attempt to parse unrecognized command line options as if they were applied to the run command:wasmer mywasm.wasm --dir=.
now works! - #987 Fix
runtime-c-api
header files when compiled by gnuc. - #957 Change the meaning of
wasmer_wasix::is_wasi_module
to detect any type of WASI module, add support for new wasi snapshot_preview1 - #934 Simplify float expressions in the LLVM backend.
- #968 Added
--invoke
option to the command - #964 Enable cross-compilation for specific target
- #971 In LLVM backend, use unaligned loads and stores for non-atomic accesses to wasmer memory.
- #960 Fix
runtime-c-api
header files when compiled by clang. - #925 Host functions can be closures with a captured environment.
- #917 Host functions (aka imported functions) may not have
&mut vm::Ctx
as first argument, i.e. the presence of the&mut vm::Ctx
argument is optional. - #915 All backends share the same definition of
Trampoline
(defined inwasmer-runtime-core
).
- #952 Use C preprocessor to properly hide trampoline functions on Windows and non-x86_64 targets.
Special thanks to @newpavlov and @Maxgy for their contributions!
- #942 Deny missing docs in runtime core and add missing docs
- #939 Fix bug causing attempts to append to files with WASI to delete the contents of the file
- #940 Update supported Rust version to 1.38+
- #923 Fix memory leak in the C API caused by an incorrect cast in
wasmer_trampoline_buffer_destroy
- #921 In LLVM backend, annotate all memory accesses with TBAA metadata.
- #883 Allow floating point operations to have arbitrary inputs, even including SNaNs.
- #856 Expose methods in the runtime C API to get a WASI import object
Special thanks to @alocquet for their contributions!
- #898 State tracking is now disabled by default in the LLVM backend. It can be enabled with
--track-state
. - #861 Add descriptions to
unimplemented!
macro in various places - #897 Removes special casing of stdin, stdout, and stderr in WASI. Closing these files now works. Removes
stdin
,stdout
, andstderr
fromWasiFS
, replaced by the methodsstdout
,stdout_mut
, and so on. - #863 Fix min and max for cases involving NaN and negative zero when using the LLVM backend.
Special thanks to @jdanford for their contributions!
- #850 New
WasiStateBuilder
API. small, add misc. breaking changes to existing API (for example, changing the preopen dirs arg onwasi::generate_import_object
fromVec<String>
toVec<Pathbuf>
) - #852 Make minor grammar/capitalization fixes to README.md
- #841 Slightly improve rustdoc documentation and small updates to outdated info in readme files
- #836 Update Cranelift fork version to
0.44.0
- #839 Change supported version to stable Rust 1.37+
- #834 Fix panic when unwraping
wasmer
arguments - #835 Add parallel execution example (independent instances created from the same
ImportObject
andModule
run with rayon) - #834 Fix panic when parsing numerical arguments for no-ABI targets run with the wasmer binary
- #833 Add doc example of using ImportObject's new
maybe_with_namespace
method - #832 Delete unused runtime ABI
- #809 Fix bugs leading to panics in
LocalBacking
. - #831 Add support for atomic operations, excluding wait and notify, to singlepass.
- #822 Update Cranelift fork version to
0.43.1
- #829 Fix deps on
make bench-*
commands; benchmarks don't compile other backends now - #807 Implement Send for
Instance
, breaking change onImportObject
, remove methodget_namespace
replaced withwith_namespace
andmaybe_with_namespace
- #817 Add document for tracking features across backends and language integrations, [docs/feature_matrix.md]
- #823 Improved Emscripten / WASI integration
- #821 Remove patch version on most deps Cargo manifests. This gives Wasmer library users more control over which versions of the deps they use.
- #820 Remove null-pointer checks in
WasmPtr
from runtime-core, re-add them in Emscripten - #803 Add method to
Ctx
to invoke functions by theirTableIndex
- #790 Fix flaky test failure with LLVM, switch to large code model.
- #788 Use union merge on the changelog file.
- #785 Include Apache license file for spectests.
- #786 In the LLVM backend, lower atomic wasm operations to atomic machine instructions.
- #784 Fix help string for wasmer run.
Special thanks to @YaronWittenstein @penberg for their contributions.
- #776 Allow WASI preopened fds to be closed
- #774 Add more methods to the
WasiFile
trait - #772 #770 Handle more internal failures by passing back errors
- #756 Allow NULL parameter and 0 arity in
wasmer_export_func_call
C API - #747 Return error instead of panicking on traps when using the Wasmer binary
- #741 Add validate Wasm fuzz target
- #733 Remove dependency on compiler backends for
middleware-common
- #732 #731 WASI bug fixes and improvements
- #726 Add serialization and deserialization for Wasi State
- #716 Improve portability of install script
- #714 Add Code of Conduct
- #708 Remove unconditional dependency on Cranelift in the C API
- #703 Fix compilation on AArch64 Linux
- #702 Add SharedMemory to Wasmer. Add
--enable-threads
flag, add partial implementation of atomics to LLVM backend. - #698 #690 #687 Fix panics in Emscripten
- #689 Replace
wasmer_runtime_code::memory::Atomic
withstd::sync::atomic
atomics, changing its interface - #680 #673 #669 #660 #659 Misc. runtime and singlepass fixes
- #677 #675 #674 LLVM backend fixes and improvements
- #671 Implement fs polling in
wasi::poll_oneoff
for Unix-like platforms - #656 Move CI to Azure Pipelines
- #650 Implement
wasi::path_rename
, improve WASI FS public api, and allow open files to exist even when the underlying file is deleted - #643 Implement
wasi::path_symlink
and improve WASI FS public api IO error reporting - #608 Implement wasi syscalls
fd_allocate
,fd_sync
,fd_pread
,path_link
,path_filestat_set_times
; update WASI fs API in a WIP way; reduce coupling of WASI code to host filesystem; make debug messages from WASI more readable; improve rights-checking when calling syscalls; implement reference counting on inodes; misc bug fixes and improvements - #616 Create the import object separately from instance instantiation in
runtime-c-api
- #620 Replace one
throw()
withnoexcept
in llvm backend - #618 Implement
InternalEvent::Breakpoint
in the llvm backend to allow metering in llvm - #615 Eliminate
FunctionEnvironment
construction infeed_event()
speeding up to 70% of compilation in clif - #609 Update dependencies
- #602 C api extract instance context from instance
- #590 Error visibility changes in wasmer-c-api
- #589 Make
wasmer_byte_array
fieldspublic
in wasmer-c-api
- #603 Update Wapm-cli, bump version numbers
- #595 Add unstable public API for interfacing with the WASI file system in plugin-like usecases
- #598 LLVM Backend is now supported in Windows
- #599 Fix llvm backend failures in fat spec tests and simd_binaryen spec test.
- #579 Fix bug in caching with LLVM and Singlepass backends.
Add
default-backend-singlepass
,default-backend-llvm
, anddefault-backend-cranelift
features towasmer-runtime
to control thedefault_compiler()
function (this is a breaking change). Addcompiler_for_backend
function inwasmer-runtime
- #561 Call the
data_finalizer
field on theCtx
- #576 fix
Drop
of uninitCtx
- #542 Add SIMD support to Wasmer (LLVM backend only)
- Updates LLVM to version 8.0
- #575 Prepare for release; update wapm to 0.3.6
- #555 WASI filesystem rewrite. Major improvements
- adds virtual root showing all preopened directories
- improved sandboxing and code-reuse
- symlinks work in a lot more situations
- many misc. improvements to most syscalls touching the filesystem
- #565 Update wapm and bump version to 0.5.6
- #563 Improve wasi testing infrastructure
- fixes arg parsing from comments & fixes the mapdir test to have the native code doing the same thing as the WASI code
- makes wasitests-generate output stdout/stderr by default & adds function to print stdout and stderr for a command if it fails
- compiles wasm with size optimizations & strips generated wasm with wasm-strip
- #554 Finish implementation of
wasi::fd_seek
, fix bug in filestat - #550 Fix singlepass compilation error with
imul
instruction
- #541 Fix dependency graph by making separate test crates; ABI implementations should not depend on compilers. Add Cranelift fork as git submodule of clif-backend
- #537 Add hidden flag (
--cache-key
) to use prehashed key into the compiled wasm cache and change compiler backend-specific caching to use directories - #536
Update cache to use compiler backend name in cache key
- #529 Updates the Wasm Interface library, which is used by wapm, with bug fixes and error message improvements
- #523 Update wapm version to fix bug related to signed packages in the global namespace and locally-stored public keys
- #516 Add workaround for singlepass miscompilation on GetLocal
- #521 Update Wapm-cli, bump version numbers
- #518 Update Cranelift and WasmParser
- #514 #519 Improved Emscripten network related calls, added a null check to
WasmPtr
- #515 Improved Emscripten dyncalls
- #513 Fix emscripten lseek implementation.
- #510 Simplify construction of floating point constants in LLVM backend. Fix LLVM assertion failure due to definition of %ctx.
- #508 Update wapm version, includes bug fixes
- #471 Added missing functions to run Python. Improved Emscripten bindings
- #494 Remove deprecated type aliases from libc in the runtime C API
- #493
wasmer_module_instantiate
has better error messages in the runtime C API - #474 Set the install name of the dylib to
@rpath
- #490 Add MiddlewareChain and StreamingCompiler to runtime
- #487 Fix stack offset check in singlepass backend
- #450 Added Metering
- #481 Added context trampoline into runtime
- #484 Fix bugs in emscripten socket syscalls
- #476 Fix bug with wasi::environ_get, fix off by one error in wasi::environ_sizes_get
- #470 Add mapdir support to Emscripten, implement getdents for Unix
- #467
wasmer_instantiate
returns better error messages in the runtime C API - #463 Fix bug in WASI path_open allowing one level above preopened dir to be accessed
- #461 Prevent passing negative lengths in various places in the runtime C API
- #459 Add monotonic and real time clocks for wasi on windows
- #447 Add trace macro (
--features trace
) for more verbose debug statements - #451 Add
--mapdir=src:dest
flag to rename host directories in the guest context - #457 Implement file metadata for WASI, fix bugs in WASI clock code for Unix platforms
- #416 Remote code loading framework
- #449 Fix bugs: opening host files in filestat and opening with write permissions unconditionally in path_open
- #442 Misc. WASI FS fixes and implement readdir
- #440 Fix type mismatch between
wasmer_instance_call
andwasmer_export_func_*_arity
functions in the runtime C API. - #269 Add better runtime docs
- #432 Fix returned value of
wasmer_last_error_message
in the runtime C API - #429 Get wasi::path_filestat_get working for some programs; misc. minor WASI FS improvements
- #413 Update LLVM backend to use new parser codegen traits
- #426 Update wapm-cli submodule, bump version to 0.4.1
- #422 Improved Emscripten functions to run optipng and pngquant compiled to wasm
- #409 Improved Emscripten functions to run JavascriptCore compiled to wasm
- #399 Add example of using a plugin extended from WASI
- #397 Fix WASI fs abstraction to work on Windows
- #390 Pin released wapm version and add it as a git submodule
- #408 Add images to windows installer and update installer to add wapm bin directory to path
- #383 Hook up wasi exit code to wasmer cli.
- #382 Improve error message on
--backend
flag to only suggest currently enabled backends - #381 Allow retrieving propagated user errors.
- #379 Fix small return types from imported functions.
- #371 Add more Debug impl for WASI types
- #368 Fix issue with write buffering
- #343 Implement preopened files for WASI and fix aligment issue when accessing WASI memory
- #367 Add caching support to the LLVM backend.
- #366 Remove
UserTrapper
trait to fix #365. - #348 Refactor internal runtime
↔️ backend abstraction. - #355 Misc changes to
Cargo.toml
s for publishing - #352 Bump version numbers to 0.3.0
- #351 Add hidden option to specify wasm program name (can be used to improve error messages)
- #350 Enforce that CHANGELOG.md is updated through CI.
- #349 Add CHANGELOG.md.
- #276 #288 #344 Use new singlepass backend (with the
--backend=singlepass
when running Wasmer) - #338 Actually catch traps/panics/etc when using a typed func.
- #325 Fixed func_index in debug mode
- #323 Add validate subcommand to validate Wasm files
- #321 Upgrade to Cranelift 0.3.0
- #319 Add Export and GlobalDescriptor to Runtime API
- #310 Cleanup warnings
- #299 #300 #301 #303 #304 #305 #306 #307 Add support for WASI 🎉
- #286 Add extend to imports
- #278 Add versioning to cache
- #250 Setup bors