cargo extism 1.0.0
v1.0.0

latest releases: 1.9.1, 1.9.0, 1.8.0...
10 months ago

Today we're no longer deploying 1.0.0-rcX versions or versions from the stable branch. We're officially cutting 1.0.0 across all repos. This has been a massive undertaking and we have a few highlights we'd like to call out from the community:

Community Highlights

  • Philippe Charrière @k33g has been instrumental in getting eyeballs on Extism. There is really too much to highlight. But here are a few things:
    • Simplism is a really awesome FAAS wrapper around Extism. It's really incredible to see Extism turned into a full on FAAS!
    • Phillipe also did some presentations where he talked about Extism
  • Doğu Us @usdogu is pretty much single-handedly handling our Zig support!
    • He created the Zig SDK
    • He created the Zig PDK
    • He's also been super responsive to issues and updates
  • Chance Snow @chances created a new D SDK!
  • Thomas Darimont @thomasdarimont is the primary driver of the Java SDK and has been crucial to
    helping us break into the Java ecosystem
  • Etienne Anne @Zwiterrion from Otoroshi was also crucial on our Java SDK and has done some interesting work to get OPA to work in Extism.
  • Egon Elbre @egonelbre has made some great improvements to the Go PDK including removing the C dependency
  • Quinn Millican @syke99 has also made improvements to the Go PDK as well as providing lots feedback and ideas on our Go ecosystem
  • Luke Paireepinart @lukevp has made a ton of contributions to our Dotnet and our JS ecosystem.

Migration Notes

Here are some notes about breaking changes if you're trying to migrate from 0.5.x:

Overview

  • There is a new Extism CLI rewritten in Go: https://github.com/extism/cli
  • The Rust SDK and C SDK are still in extism/extism
  • The other SDKs have been moved from extism/extism to their own repos (for example, extism/python-sdk)
  • The Go SDK uses Wazero and the JS SDK uses the native WASM engine for the JS runtime being used (node, deno, bun, browser)
  • The Context type has been removed and plugin creation no longer takes a context argument in any SDK.
  • The module namespace for Extism host function has been changed to extism:host/env and user-defined host functions are now in extism:host/user by default.

Runtime/Rust SDK

  • extism-runtime and extism crates have been combined. Only extism should be used now.
  • Plugin::new_with_manifest has been removed - manifests can be passed to Plugin::new directly
  • PluginBuilder::new_with_module has been removed, raw wasm can be passed to PluginBuilder::new directly
  • Function::new now requires a user-data argument when before it was an Option parameter, UserData::default() can be used instead.
  • The nn feature has been removed, please reach out if this is an issue for you!
  • extism-convert is used to convert Rust types in and out of Extism memory
  • Plugin::call and other places where data is copied into Extism memory, accept any type that implements extism_convert::ToBytes and returns any type that implements extism_convert::FromBytes
  • Maximum memory is no longer statically checked, an error will be raised when the allocated memory exceeds the configured limit

C SDK

  • ExtismContext has been removed and ExtismPlugin is now a direct pointer to the extism::Plugin type
  • extism_plugin_new takes an additional out-argument to get the error message. Use extism_plugin_new_error_free to free error messages.

Changelog since 0.5.x

  • release: Bump the rest of the SDKs by @bhelx in #430
  • release: Bump elixir nif to rust 0.5 by @bhelx in #431
  • chore(deps): Update cbindgen requirement from 0.24 to 0.25 by @dependabot in #434
  • chore(deps-dev): Bump ex_doc from 0.30.5 to 0.30.6 in /elixir by @dependabot in #440
  • chore(deps-dev): Bump @types/node from 20.5.1 to 20.5.7 in /node by @dependabot in #437
  • chore(deps-dev): Bump typedoc from 0.24.8 to 0.25.0 in /node by @dependabot in #439
  • chore(deps-dev): Bump typescript from 5.1.6 to 5.2.2 in /node by @dependabot in #438
  • chore(deps-dev): Bump jest and @types/jest in /node by @dependabot in #436
  • refactor!: Remove context, unify extism-runtime and extism crates by @zshipko in #421
  • chore(deps-dev): Bump prettier from 3.0.2 to 3.0.3 in /node by @dependabot in #445
  • chore(deps-dev): Bump @types/node from 20.5.7 to 20.5.9 in /node by @dependabot in #444
  • fix: toml manifests load the extism runtime by @chrisdickinson in #447
  • feat: Add EXTISM_ENABLE_WASI_OUTPUT to inherit stdout/stderr by @zshipko in #446
  • chore(deps-dev): Update minitest requirement from ~> 5.19.0 to ~> 5.20.0 in /ruby by @dependabot in #450
  • chore(deps-dev): Bump @types/node from 20.5.9 to 20.6.0 in /node by @dependabot in #449
  • chore(deps-dev): Bump typedoc from 0.25.0 to 0.25.1 in /node by @dependabot in #448
  • feat(ruby): Host functions and clean up FFI code by @bhelx in #442
  • feat(ocaml): add missing flags to extism-call executable by @zshipko in #451
  • feat(browser): Allow Initialization of Plugin from WebAssembly.Module by @wikiwong in #453
  • chore(browser): bump package version by @wikiwong in #454
  • feat: Add extism-convert crate and use it for input/output to plugin calls by @zshipko in #443
  • feat(build): Add "latest" snapshot builds by @chrisdickinson in #457
  • fix(kernel): avoid allocating 0-length blocks by @zshipko in #465
  • fix(main): Fixes rounding issue in kernel num_pages by @zshipko in #468
  • ci: automate PRs to build canonical version of extism-runtime.wasm by @zshipko in #473
  • chore(deps-dev): Bump jest and @types/jest in /node by @dependabot in #463
  • chore(deps-dev): Bump @types/ffi-napi from 4.0.7 to 4.0.8 in /node by @dependabot in #462
  • chore(deps-dev): Bump @types/node from 20.6.0 to 20.6.2 in /node by @dependabot in #461
  • chore(deps): Update cbindgen requirement from 0.25 to 0.26 by @dependabot in #460
  • chore(deps): Update toml requirement from 0.7 to 0.8 by @dependabot in #459
  • fix(main): improve the way the kernel calculates how many pages to allocate by @zshipko in #472
  • docs: Add note about stable branch by @bhelx in #479
  • feat(build): add extism-maturin wheel builds by @chrisdickinson in #480
  • fix(build): remove windows gnu wheel builds by @chrisdickinson in #481
  • cleanup(runtime): remove restrictions around memory.max_pages option, fix crash by @zshipko in #482
  • chore: bump wasmtime lower bound to 13.0.0, remove wasi-nn support by @zshipko in #483
  • chore(deps): Update ffi requirement from ~> 1.15.5 to ~> 1.16.1 in /ruby by @dependabot in #485
  • chore(deps-dev): Bump @types/node from 20.6.2 to 20.6.5 in /node by @dependabot in #484
  • chore: prepare extism-convert to be released by @zshipko in #494
  • docs: Add readme, bump convert crate by @bhelx in #495
  • feat(build): GHA release-python now releases extism_sys packages by @chrisdickinson in #498
  • feat: kernel hardening by @zshipko in #499
  • fix(rust): return extism_error message from Plugin::call if it is set by @zshipko in #508
  • feat: add benchmarking, optimize bounds checking in the kernel by @zshipko in #505
  • fix(kernel): update outdated implementation of MemoryBlock::next_ptr by @zshipko in #509
  • fix: undo change to extism_memory_bytes left over from debugging by @zshipko in #519
  • chore(deps-dev): Bump @babel/traverse from 7.20.13 to 7.23.2 in /browser by @dependabot in #518
  • chore(deps): Bump @types/ref-array-di from 1.2.5 to 1.2.6 in /node by @dependabot in #491
  • chore(deps-dev): Bump typedoc from 0.25.1 to 0.25.2 in /node by @dependabot in #502
  • chore(deps-dev): Bump ex_doc from 0.30.6 to 0.30.7 in /elixir by @dependabot in #513
  • chore(deps-dev): Bump @types/node from 20.6.5 to 20.8.6 in /node by @dependabot in #515
  • chore(deps-dev): Bump @babel/traverse from 7.19.6 to 7.23.2 in /node by @dependabot in #517
  • ci(dotnet): publish nuget packages for all supported environments by @mhmd-azeez in #523
  • doc: add runtime/README.md and libextism/README.md by @zshipko in #526
  • chore: support wasmtime 14.0.0 by @zshipko in #529
  • chore(deps-dev): Bump ex_doc from 0.30.7 to 0.30.9 in /elixir by @dependabot in #536
  • feat(dlang): Add a D host SDK by @chances in #412
  • chore: fix docstring for Manifest/allowed_paths by @thomasdarimont in #531
  • feat: add ability to dump extism kernel memory and generate coredumps, cleanup kernel memory layout by @zshipko in #539
  • docs: Point to readmes by @bhelx in #541
  • fix(release): bump maturin manylinux floor for ring 0.17 dep by @chrisdickinson in #548
  • docs: Add some documentation for plugin.call by @bhelx in #546
  • refactor!: Cleanup UserData implementation, update example in README by @zshipko in #550
  • feat: build static libextism by @G4Vi in #552
  • refactor!: Use extism:host/env namespace for extism functions and extism:host/user for user-defined host functions by @zshipko in #511
  • fix: set epoch deadline before each plugin call by @zshipko in #557
  • cleanup: add PTR as an alias for ValType::I64 by @zshipko in #558
  • feat: pkg-config by @G4Vi in #559
  • cleanup: add PTR as an alias for I64 in C API by @zshipko in #560
  • cleanup: update error message by @zshipko in #561
  • test: add some http tests by @zshipko in #562
  • fix: improve handling of custom error messages by @zshipko in #568
  • chore: fix cargo resolver warning by @bhelx in #570
  • refactor!: allow Plugin::new to take raw wasm or Manifest by @zshipko in #569
  • feat: add x86_64-unknown-linux-musl target, specifying target to make by @G4Vi in #571
  • fix: libextism - make fully static target no longer hardcoded to musl-gcc by @G4Vi in #572
  • feat: add add_subdirectory compatible cmake config by @G4Vi in #574
  • build: libextism/CMakeLists.txt add installing to support in-tree builds that use shared libraries by @G4Vi in #575
  • cleanup: simplify logging, include plugin ID in log messages by @zshipko in #573
  • fix: nuget packing in release-dotnet-native.yaml by @mhmd-azeez in #524
  • docs: fix readme for runtime rust sdk by @bhelx in #577
  • 1.0.0-beta.0 by @bhelx in #587
  • chore: loosen dependency requirements for base64 by @wikiwong in #576
  • release 1.0.0-rc2 by @bhelx in #588
  • refactor!: use tracing crate for logging, add extism_log_callback function by @zshipko in #578
  • refactor(bench): Add throughput information to reflect function. by @chrisdickinson in #592
  • build(bench): add "consume" and "echo" benchmarks by @chrisdickinson in #595
  • Fix typo in README.md by @thomas-zahner in #593
  • Update release-dotnet-native.yaml to be resilient against file name changes by @mhmd-azeez in #589
  • ci: check formatting of all crates by @george-hopkins in #598
  • Implement convenience traits for encoded types by @george-hopkins in #597
  • chore: support wasmtime 15 by @zshipko in #601
  • release: 1.0.0-rc3 by @bhelx in #603
  • doc: add DEVELOPING.md with release workflow by @chrisdickinson in #602
  • cleanup: remove old SDKs by @zshipko in #583
  • build: drive crate versions from workspace; drive workspace version from ci by @chrisdickinson in #604
  • build: drive cargo releases from git tag by @chrisdickinson in #610
  • feat: enable wasmtime caching by @zshipko in #605
  • cleanup: simplify main module resolution by @zshipko in #612
  • cleanup: avoid matching meta.name twice by @zshipko in #613
  • docs: Some readme changes on api status by @bhelx in #614
  • doc: add example of linking modules in a plugin by @chrisdickinson in #616
  • build: combine rust release workflows by @chrisdickinson in #611
  • cleanup: implement Debug and PartialEq for manifest types by @zshipko in #618
  • fix manifest link by @neuronicnobody in #617
  • fix: improve handling of 0 length blocks by @zshipko in #622
  • refactor!: better scoping of arguments in host_fn macro, allow visibility in macros to be specified by @zshipko in #621
  • ci: bring back nuget packages for Extism runtime by @mhmd-azeez in #624
  • build: add c++ compat to extism.h by @G4Vi in #625
  • feat: Add extism_convert::Raw to allow direct encoding using bytemuck by @zshipko in #626
  • fix(kernel): improve performance after large allocations, add extism_plugin_reset to give users more control when dealing with large allocations by @zshipko in #627
  • ci: release extism.dll.lib and extism.dll.a by @mhmd-azeez in #633
  • fix(kernel): length function should return 0 for invalid offsets by @zshipko in #635
  • fix: give extism_log_drain's param a named type by @chrisdickinson in #638
  • cleanup: remove default timeout by @zshipko in #641
  • chore: update wasmtime bounds to include 16.0.0 by @zshipko in #642
  • Toggle off default clap feature for cbindgen by @CosmicHorrorDev in #644
  • feat(kernel): add extism_length_unsafe by @zshipko in #648
  • feat: add Plugin::call_get_error_code to get Extism error code along with the error by @zshipko in #649
  • cleanup: improve wat detection by @zshipko in #650
  • cleanup: improve wat detection (again) by @zshipko in #651
  • feat: add rust-protobuf support to extism-convert by @nilslice in #653

Full Changelog: v0.5.0...v1.0.0

Don't miss a new extism release

NewReleases is sending notifications on new releases.