Skip to content

Latest commit

 

History

History
533 lines (386 loc) · 29.9 KB

File metadata and controls

533 lines (386 loc) · 29.9 KB

Unreleased

  • Add stub implementations for resvpnproxy hostcalls.
  • Add fake_valid_fastly_keys config parameter to allow testing fastly_key_is_valid hostcall with fake valid keys. (#599)
  • Add health config parameter for backends to mock backend health status in testing. (#605)
  • Use cargo clippy to lint code in CI. (#603)
  • Rename Error::InvalidAlpnRepsonse to correct a typo (#612)
  • Upgrade to Rust 1.95 (#604)
  • Add options for experimenting with wasm gc and exceptions. (#601)
  • Improve TLS certificate loading, handling and validation (#478)

0.16.5 (2026-03-23)

  • Remove most adapter-only interfaces from the Viceroy component adapter. (#583)
  • Add support for "library" components which don't export http_incoming. (#529)
  • Add non-shift adapter when user module is using wit-bindgen. (#582)
  • Update to Wasmtime 39 (#584)
  • Remove unused WIT files from the source tree. (#580)
  • Refactor the CLI, with each subcommand in its own file. (#581)
  • Make "viceroy adapt" add "produced-by" metadata to its output. (#586)
  • Update to Rust 2024 Edition. (#588)
  • Add stub implementations for bot detection hostcalls. (#592)
  • Add no-op implementations for stale-if-error hostcalls (#591)
  • Guest profiling support added for components. (#593)
  • Add manifest_version validation to fastly.toml parsing. (#590)

0.16.4 (2026-01-26)

  • Update to the latest WITs (0.1.0—no more "prerelease") and adapter. (#574)

0.16.3 (2026-01-20)

  • Implement fastly_compute_runtime::get_heap_mib hostcall (#572)
  • Update to latest moka release to fix use-after-free bug (#569)
  • Fix manual framing headers logic to avoid falling back to automatic framing headers (#571)

0.16.2 (2025-12-10)

  • Update to the latest WITs and adapter. (#564)

    This applies version "0.0.0-prerelease.0" to wasm_abi/wit/deps/fastly/compute.wit. As a prerelease, this version is not guaranteed to be supported long-term, however from this point forward, changes will be described by version number bumps.

  • fix: use original static backend host (#549)

  • Return InvalidArgument for bad arguments to register_dynamic_backend (#563)

0.16.1 (2025-11-25)

  • Fix off-by-one error in reusable sandboxes limit (#561)
  • Add stubs for new dynamic backend config options (#560)
  • Fix yaml syntax in rust.yml (#559)
  • Add a CI script to test different Rust versions (#556)
  • Return InvalidArgument for non-103 1xx status codes (#557)
  • Fix test for 103 Early Hints (#558)

0.16.0 (2025-11-10)

  • Add rudimentary support for 103 responses (#550)
  • Add support for manual HTTP framing headers (#551)
  • Core cache: Only return FOUND if the object is not expired (#552)

0.15.0 (2025-10-27)

  • fix: don't throw error when exit code is 0 (#537)
  • Update adapter with the memory shift fix (#538)
  • Enable relaxed-simd-deterministic for Viceroy. (#539)
  • Return 5XX for requests that land in a reused session that crashes (#540)
  • Update to the latest WITs and adapter. (#543)
  • Allow components to have multiple memories. (#545)

0.14.4 (2025-10-01)

  • Enable loading Secret Store configuration through environment variables (#527)
  • Remove deprecated macos-13 runners from CI matrix (#528)
  • Remove now-unneeded adapter profiles from the top-level Cargo.toml. (#530)
  • Fix double borrows in get_with_by_ref() calls (#532)
  • Fix warnings due to SDK deprecations (#532)
  • Update references of wasm32-wasi to wasm32-wasip1 in README (#533)

0.14.3 (2025-09-17)

  • Upgrade to wasmtime v35 (#513)
  • Fix implementation of downstream_compliance_region hostcall (#519)
  • Fix warnings due to mismatched_lifetime_syntaxes lint in Rust 1.89 (#522)
  • Enable tracing in WIT bindings (#521)
  • Support overriding client IP with inspect hostcall (#523)
  • Add stub for downstream_client_tls_servername hostcall (#524)

0.14.2 (2025-08-12)

  • Upgrade to wasmtime v28

0.14.1 (2025-08-08)

  • Fix Cargo.lock file to allow publication on crates.io

0.14.0 (2025-08-08)

  • Fix for shielding support (#503)

    Shielding support in 0.13.0 was, alas, slightly broken: the toml settings were not passed through to the main library.

  • Add support for integrating with a local Pushpin instance (#497)

    Viceroy can be invoked with --local-pushpin-proxy-port=<port> to cause requests that invoke the fastly_http_req.redirect_to_grip_proxy and _v2 hostcalls to be proxied through a local Pushpin instance running on the specified port. This enables developers to locally test Fanout (real-time messaging) features like HTTP streaming or WebSockets-over-HTTP.

    Requests forwarded this way will be replayed:

    • Method, headers, path, and query of the forwarded request will be based on the request whose handle is passed to redirect_to_grip_proxy_v2 (or from the downstream request if redirect_to_grip_proxy was called).
    • The request header pushpin-route will be added, its value set to the backend name.
    • Request body of the forwarded request will contain the full body of the downstream request.

    This mechanism expects Pushpin to be configured with accept_pushpin_route to be set to true and for its routes to be set up properly. This is configured automatically if Viceroy is called through the Fastly CLI's fastly compute serve command.

  • Support the simple cache API (#487) and core cache API

    The simple cache API is fully supported in Viceroy. The core cache API is also supported, with the exception of the "replace" family of calls (#495).

    Both of these use an in-memory store for cached data; restarting Viceroy flushes the cache.

    The HTTP cache layer (readthrough cache) is not supported at this time (#496).

  • Experimental support for reusable sessions

    The default behavior for Viceroy (and Fastly Compute) is to launch a new WASM instance for each inbound HTTP request.

    This default behavior remains unchanged. However, this release adds experimental hostcalls that allow a WASM instance to receive and respond to additional HTTP requests after the first.

    This is an experimental feature (not yet available through any SDK), and requires an opt-in (using the new hostcalls). Fastly may modify or remove this feature in the future- don't rely on it (yet)!

  • Make SecretStore public (#486)

    Make the SecretStore type public, so it can be configured in integration tests that use viceroy-lib.

0.13.0 (2025-04-25)

  • Add support for shielding primitives in Viceroy (#455)

    Shielding definitions can be creating inside fastly.toml using the local-server.shielding_sites key. These definitions are just a normal TOML dictionary mapping shield sites (e.g., "pdx-or-us", "bfi-wa-us", etc.) to either the string "Local" (meaning that Viceroy should pretend to be operating in that POP), or a dictionary mapping "unencrypted" and "encrypted" to target URLs (to mimic operating off the shield POP). For example:

    [local_server.shielding_sites]
    "pdx-or-us" = "Local"
    "bfi-wa-us".unencrypted = "http://localhost"
    "bfi-wa-us".encrypted = "https://localhost"
    

    This snippet defines two shield POPs: "pdx-or-us", which Viceroy should pretend to be running on, and "bfi-wa-us", which is remote. If the guest program asks for a backend to "bfi-wa-us", Viceroy will use localhost as the target server, using HTTPS for encrypted traffic and HTTP for unencrypted traffic.

0.12.4 (2025-04-07)

  • Add support for file entries in KV Stores defined using "file"/"format" (#463)

0.12.3 (2025-03-28)

  • Add downstream_client_ddos_detected hostcall stub (#460)
  • Add support for metadata in local_server.kv_stores (#459)
  • Add support for the Image Optimizer hostcalls (#458)
  • Guest Profile sample period configuration support (#456)
  • Fix cache key type in component interface (#453)
  • Remove ubuntu-20.04 from CI (#451)
  • Allow environment variable tests to pass based on validity, rather than their value (#450)
  • Add FASTLY_IS_STAGING environment variable (#449)
  • Update KV Store key naming restrictions (#447)
  • Fixes to CI (#448)
  • Update to 0.11.1 of the Fastly Rust SDK (#445)
  • Update CI to remove tests for macOS 12 and add tests for macOS 15 (#436)

0.12.2 (2024-12-02)

  • Add support for the on_behalf_of hostcalls (#440)
  • Add new lookup_wait_v2 to fix generation parsing bug (#439)
  • Add fastly_acl hostcalls (#438)

0.12.1 (2024-10-04)

  • Stub new HTTP cache hostcalls (#433)
  • Add support for reading secrets from a JSON file (#428)
  • Added hostcalls for the new builder api hostcalls (#427)

0.12.0 (2024-09-03)

  • Add ReplaceHandle hostcall stubs for upcoming SDK release (#424)
  • Add keepalive options for dynamic backends (#423)
  • Fix bug in inspect implementation and add a test (#422)
  • Add the missing adapter calls for new cache operations (#419)
  • Implement component traits on ComponentCtx (#421)
  • Split info spans when logging request IDs (#420)
  • Rename the kv-store interface to object-store in compute.wit (#415)

0.11.0 (2024-08-20)

  • Add support for JSON files in local_server.kv_stores (#365)
  • Add get_vcpu_ms hostcall (#412)
  • Add inspect hostcall (#417)
  • Add downstream_compliance_region hostcall (#403)
  • Emit the status code for responses, in addition to other stats (#416)
  • Update compute.wit and the adapter for some api fixes (#414)
  • Use mozilla-actions/sccache-action for caching builds (#411)

0.10.2 (2024-07-22)

  • Add support for supplying client certificates in fastly.toml, through the use of the client_cert_info table, which must have one of a "certificate" or "certificate_file" key, as well as one of a "key" and "key_file" key. The "_file" variants can be used to point to certificate/key files on disk, whereas the non-"_file" variants should be multi-line string constants in the toml. In all cases, they should be in PEM format.
  • Restore compatibility with older glibc versions in release artifacts

0.10.1 (2024-07-11)

  • Revert a CI configuration change that inadvertently prevented builds being created for amd64 macOS endpoints (#405)

0.10.0 (2024-07-09)

  • Add get_addr_dest_{ip,port} hostcalls (#402)
  • Add downstream_server_ip_addr hostcall (#401)
  • Support wat files when adapting core wasm (#399)
  • Add support for environment variables in the adapter (#400)
  • Run tests as components (#396)
  • Remove some unused memory management code in the adapter (#398)
  • Allow capturing logging endpoint messages (#397)
  • Support cli args in the adapter (#394)
  • Rework component testing support to make test updates easier (#395)
  • Populate the guest cli args (#393)
  • Update to wasmtime 22.0.0 (#392)
  • Populate nwritten_out when errors occur in config-store::get or dictionary::get (#389)
  • Switch to using the on-demand allocator, instead of the pooling allocator (#391)
  • Explicitly test the dictionary host calls in the dictionary fixture (#390)
  • Enable the config-store-lookup tests (#387)
  • Run the request tests as a component (#386)
  • Update Ubuntu and macOS runners to latest (and non-EOL) versions (#388)
  • Fix trap handling when running components (#382)
  • fix(wiggle_abi): write the result's length, not the guest buffer's (#385)
  • Add adaptive buffer support for geo + device detection lookups (#383)
  • Fix buffer-len handling in the component adapter (#381)
  • Switch to reading dictionaries during the fastly_dictionary_open call (#379)
  • Support adapting core wasm to components (#374)

0.9.7 (2024-05-24)

  • Update to wasmtime-21.0.0 (#369)
  • Initial WebAssembly component support (#367)
  • Add stubs for new busy-handle hostcalls (#373)

0.9.6 (2024-04-08)

  • Return a ValueAbsent for all the downstream-tls related functions instead of a NotAvailable (#315)

0.9.5 (2024-03-15)

  • Bug fix: Honor CA certificates when they are supplied, either as part of a dynamic backend definition or as part of a backend defined in fastly.toml. (In the latter case, CA certificates can be added using the "ca_certificate" key.) (#305)

  • Consistently use Error::NotAvailable instead of Unsupported (#349)

0.9.4 (2024-02-22)

  • Added delete_async hostcall for KV stores (#332)
  • Added known_length hostcall for body handles (#344)
  • Added stubs for new functionality available in production Compute (#333, #337, #344)
  • Fixed inconsistent behavior for not-found geolocation lookups compared to production Compute (#341)

0.9.3 (2023-11-09)

  • Renamed Compute@Edge to Compute. (#328)
  • Added asynchronous versions of the KV store lookup and insert operations. (#329)
  • Added support for device detection. (#330)

0.9.2 (2023-10-23)

  • Warn instead of fail when certificates can't be loaded (#325)

  • Add support for trailers. Trailer modification calls should be considered experimental, as we finalize interfaces (#327)

0.9.1 (2023-10-09)

  • Match the number of memories to the number of core instances (#322)

0.9.0 (2023-10-09)

  • Add options to customize behavior of unknown Wasm imports (#313)
  • Lower Hostcall error log level to DEBUG (#314)
  • Add perfmap profiling strategy (#316)
  • Update to wasmtime-13.0.0 (#317)
  • Revamp profile handling CLI flags (#318)

0.8.1 (2023-09-18)

  • Fix a bug in which static backends were marked as GRPC by default (#311)

0.8.0 (2023-09-15)

  • Make viceroy_lib::Error non-exhaustive
  • Support the gRPC flag for dynamic backends (#308)
  • Update ABI definitions and stub out some hostcalls (#307)

0.7.0 (2023-08-14)

  • Add --profile-guest support to serve mode. (#301)
  • Use a ResourceLimiter for tracking allocations. (#300)
  • Support the new mTLS features for dynamic backends, allowing two-way authentication for backend connections. (#297)

0.6.1 (2023-08-03)

  • Support the new config store hostcalls. (#296)
  • Bump to wasmtime-11.0.1 (#295)
  • Unblock Secret::from_bytes test by upgrading the fastly crate dependency. (#294)
  • Map Error::UnknownBackend to FastlyStatus::Inval (#293)
  • When an upstream body is unexpectedly closed, return Httpincomplete (#290)
  • Error::ValueAbsent should map to FastlyStatus::None, not Inval (#291)
  • Switch default log level to "error", add -v to run (#288)
  • Update rustls and various dependencies (#278)
  • Change default port from 7878 to 7676, which is what the Fastly CLI defaults to (#287)

0.6.0 (2023-07-12)

  • ⏱️ Add cross-platform ability to profile guest code in run mode (#280)
  • pin to hyper 0.14.26 for the time being (#285)
  • 😯 Add support for the new secret from_bytes extension. (#283)
  • feat: Add a stub for downstream_client_h2_fingerprint (#277)
  • Fill downstream_client_request_id in (#282)
  • Bump to wasmtime-10.0.0 (#279)
  • Add a stub for downstream_client_request_id (#276)
  • Fix various warnings (#271)
  • ⛽ -> ⏲️ Switch from fuel to epoch interruptions. (#273)
  • Bump wasmtime dependencies to 9.0.1 (#272)
  • ⏩ none should not be defined in cache_override_tag witx (#269)
  • in single run mode, keep the response receiver alive during execution (#270)
  • Return appropriate exit code in run-mode, rather than just 0 or 1 (#224)

0.5.1 (2023-05-17)

  • Update crates and add http_keepalive_mode_set (#266)

0.5.0 (2023-05-11)

  • 🚧 Add stubs for Cache API primitives (#260)
  • Make is_healthy always return Unknown instead of an unsupporte…
  • 🕷️ Rework integration tests to allow parallel test execution (#257)
  • Add KVStore async lookup (#253)
  • Update to Wasmtime 8 (#251)
  • Add documentation explaining how to run rust unit tests w/ viceroy (#242)

0.4.5 (2023-04-13)

  • Remove validation on config store and dictionary names (#248)

0.4.4 (2023-04-11)

  • feat: Allow local KV Stores to be defined using [local_server.kv_stores] (#245)

0.4.3 (2023-04-04)

  • Add the fastly_backend module to the wiggle abi (#243)

0.4.2 (2023-03-30)

  • Allow config-stores to be defined using [local_server.config_stores] (#240)

0.4.1 (2023-03-23)

  • Add fastly_backend interfaces for backend introspection (#236)

0.4.0 (2023-03-17)

  • Add a run-mode that executes the input program once and then exits (#211)
  • Update to Wasmtime 6.0.0 (#226)
  • Make object and secret store config names consistent (#206)
  • Remove dictionary count limit (#227)
  • Split out run-mode and serve mode into subcommands (#229)

0.3.5 (2023-01-20)

  • Add support for Secret Store (#210)

0.3.4 (2023-01-19)

  • Update to Wasmtime 4.0.0 (#217)
  • Set fixed release build images to improve compatibility of precompiled release artifacts (#216)

0.3.3 (2023-01-18)

  • Support the streaming body finish() method introduced in version 0.9.0 of the Rust SDK (#203)
  • Update to wasmtime 3.0.0 and enable experimental wasi-nn interface (#209)

0.3.2 (2022-11-17)

  • Add geolocation implementation to Viceroy (#165)
  • Implement async select hostcalls for Viceroy (#188)
  • Update wasmtime dependency to 2.0 (#194)
  • Return a FastlyStatus::Inval when opening a non-existant object-store (#196)
  • Add limit exceeded variant to fastly_status witx definition (#199)

0.3.1 (2022-10-11)

  • Add stubs for fastly purge (#184)
  • Add stubs for mTLS information (#186)
  • Allow to enable wasmtime's profiling support (#181)
  • Add stubs for redirect_to_ (#187)

0.3.0 (2022-10-11)

  • Tagged but not released due to invalid metadata added in #173. See #189 for more details

0.2.15 (2022-08-19)

  • Add support for ObjectStore (#167)
  • Add support for dynamic backends (#163)
  • Extend backend TLS configuration with cert host and SNI (#168)

0.2.14 (2022-05-23)

  • Add support for inline TOML dictionaries (#150)

0.2.13 (2022-05-03)

  • Add stubs for JA3 hashes and WebSocket upgrades (#153)

0.2.12 (2022-03-08)

  • Add stubs for framing header controls, now available on Compute (#139)

0.2.11 (2022-02-15)

  • Implement automatic decompression of gzip backend responses (#125)
  • Remove excess logging for programs that exit with a zero exit code (#128)

0.2.10 (2022-02-08)

  • Add telemetry for wall-clock duration (#121)
  • Bump various runtime limits (#123)

0.2.9 (2022-01-11)

  • Do not panic when auto_decompress_response_set is called (#116)

0.2.8 (2022-01-07)

  • Allow partial CA store to be loaded (#104)
  • Update ABI and stub out new function (#113)

0.2.7 (2021-12-01)

  • Disable ALPN by using rustls more directly (#100)

0.2.6 (2021-11-15)

  • Catch interrupt signals (#85)
  • Include aarch64 tarballs for Linux and macOS (#88)
  • Align URI and Host header semantics with production Compute (#90)

0.2.5 (2021-10-21)

  • Replaced hyper-tls with hyper-rustls. (#75)
  • Unknown dictionary items are now logged at debug level. (#80)
  • Windows releases are now built in CI. (#82)

0.2.4 (2021-09-08)

  • Improved error messages when a file could not be read. (#70)
  • Fixed a bug for dictionary lookups that returned and error rather than None. (#69)

0.2.3 (2021-08-23)

Additions

  • Added the close functionality for RequestHandle, ResponseHandle, BodyHandle, and StreamingBodyHandle in the upcoming Rust Compute 0.8.0 SDK release (#65)
  • Added local dictionary support so that Compute programs that need dictionaries can work in Viceroy (#61)
  • Added the ability to do host overrides from the TOML configuration (#48)

Changes

  • Viceroy now tracks the latest stable Rust which as of this release is 1.54.0

0.2.2 (2021-07-15)

Enhancements

  • Renamed viceroy-cli package to viceroy, in preparation for cargo install viceroy (#41).
  • Improved UI for traces and errors (#37).
  • Increase limit on functions per wasm module (#33).
  • Be more flexible with wasm module input, allowing for WAT input as well (#32).

Fixes

  • Correctly pull in wasi tokio bindings (#44).
  • Correct --help output for --addr (#34).

0.2.1 (2021-07-12)

Fixes

  • Changed release artifacts naming format.

0.2.0 (2021-07-09)

  • Initial release.