Skip to content

Releases: fastly/Viceroy

v0.17.0

27 Apr 14:49
b468d67

Choose a tag to compare

Enhancements to code quality, improved TLS handling, and experimental WebAssembly features to help you build more robust Compute services.


🧪 Better backend testing with health status mocking

Added by @kailan in #606

You can now mock backend health status using the new health config parameter for backends in your fastly.toml. This allows you to simulate unhealthy backends and test how your service handles backend failures, timeouts, and degraded conditions. Simply add health = "unhealthy" (or "healthy" / "unknown") to any backend definition to control its health status during testing.

🔐 Improved TLS certificate handling

Big thanks to @jedisct1 who added this in #478

TLS certificate loading, handling and validation has been significantly improved in this release. The server now provides better error handling when working with certificates, more robust validation, and clearer feedback when certificate issues arise.

🔑 Test API key validation locally

Contributed by @kailan in #599

The new fake_valid_fastly_keys config parameter lets you test the fastly_key_is_valid hostcall with fake valid keys during local development.

🧬 Experimental WebAssembly features

Thanks to @dgohman-fastly for adding this in #601

For those wanting to experiment with cutting-edge WebAssembly features, Viceroy now includes options to enable WebAssembly garbage collection (GC) and exceptions. These are experimental features that can be enabled for testing future WebAssembly capabilities. Note that these features are not yet available in production Compute.

⚠️ Breaking change: Error type rename

Fixed in #612 thanks to external contributor @jsoref

The error type Error::InvalidAlpnRepsonse has been renamed to Error::InvalidAlpnResponse to correct a typo. If you're using viceroy-lib directly and matching on this error variant, you'll need to update your code to use the corrected spelling.

🔧 Under the hood improvements

  • Stub implementations added for resvpnproxy hostcalls to support upcoming SDK features - by @clintjedwards (#596)
  • Code quality improvements with cargo clippy now running in CI (#603)
  • Upgraded to Rust 1.95 for the latest language improvements (#604)

If you use the Fastly CLI, you should see this functionality available later today. If using directly, run cargo install viceroy to update to the latest version. Happy hacking!

Full Changelog: v0.16.5...v0.17.0

v0.16.5

23 Mar 21:56

Choose a tag to compare

Merge remote-tracking branch 'origin/main' into release-0.16.5

v0.16.4

27 Jan 16:29

Choose a tag to compare

Update changelog for 0.16.4.

v0.16.3

20 Jan 18:05
bf929f9

Choose a tag to compare

Update `release.yml` to use 1.87

v0.16.2

12 Dec 22:03
5823c14

Choose a tag to compare

Merge pull request #565 from fastly/release-0.16.2

Release v0.16.2

v0.16.1

25 Nov 22:16
v0.16.1
12c2430

Choose a tag to compare

Viceroy 0.16.1 release

v0.16.0

14 Nov 15:03
6cf5251

Choose a tag to compare

A few tweaks to support more HTTP functionality and bring the server closer to functional parity with the Compute platform


💡 Rudimentary HTTP 103 support

Courtesy of @bahamat in #550

The server will now catch, log, and drop 103s so that they are displayed in the output, but they will not be sent to the client due to limitations in the HTTP library we use. The end result is that developers can test 103 support when developing their Compute services, and see that the 103s were generated and transmitted out of the service, but they will be elided from the response stream sent back to the client. The client will still receive the final response.

💿 Core Cache consistency

Try saying that three times... thanks @cceckman! (#552)

The Compute platform, at the moment, only returns FOUND if within the USABLE period (in HTTP semantics, "fresh" or "stale-while-revalidate"). Unfortunately, SDKs rely on this property, and check FOUND or USABLE variously; sometimes (e.g. in Rust), this results in a FOUND-but-not-USABLE result being returned. This change updates the local testing server to match this behaviour, only returning FOUND if the object is USABLE.

🔧 Set HTTP framing headers manually

Added by @kailan in #551

Developers can now use the set_framing_headers_mode SDK method to indicate that they would like to set framing headers (Content-Length and Transfer-Encoding) on requests and responses themselves, instead of the platform handling it for them. This is helpful when streaming files to a client where the size is known ahead of time. Previously, using this method would throw an error, halting execution of the request. Similar to the behaviour of Compute in production, the content of the headers will be validated and if it is invalid, the server will fall back to automatic framing headers.


If you use the Fastly CLI, you should see this functionality available later today. If using directly, run cargo install viceroy to update to the latest version. Happy hacking!

Full Changelog: v0.15.0...v0.16.0

v0.15.0

28 Oct 18:20

Choose a tag to compare

Release v0.15.0

- Update lock files
- Update changelog

v0.14.4

02 Oct 07:47

Choose a tag to compare

Prepare release v0.14.4

v0.14.3

17 Sep 19:59

Choose a tag to compare

Prepare release v0.14.3