23 releases

new 0.2.2 Nov 21, 2024
0.1.0 Nov 11, 2024
0.0.19 Mar 24, 2024
0.0.17 Sep 23, 2023
0.0.1 Nov 28, 2021

#488 in Web programming

Download history 33/week @ 2024-08-01 3/week @ 2024-08-08 1/week @ 2024-08-22 1/week @ 2024-08-29 9/week @ 2024-09-12 40/week @ 2024-09-19 35/week @ 2024-09-26 20/week @ 2024-10-03 65/week @ 2024-10-17 28/week @ 2024-10-24 26/week @ 2024-10-31 127/week @ 2024-11-07 164/week @ 2024-11-14

350 downloads per month

BSD-3-Clause

155KB
2.5K SLoC

varnish-rs

GitHub crates.io version docs.rs docs crates.io version CI build

The varnish crate provides a safe and idiomatic interface to the Varnish C API, allowing you to write Varnish modules (VMODs) in Rust. See the crate API for more details.

Some VMODs that use this library:

  • vmod-reqwest: issue HTTP calls from VCL, use dynamic, HTTPS backends (support HTTP2)
  • vmod-rers: support for dynamic regex, including response body manipulation
  • vmod-fileserver: serve files directly from disk, without the need for an HTTP backend

Don't hesitate to open GitHub issues if something is unclear or impractical. You can also join us on discord.

Requirements

When compiling, this library generates bindings from the libvarnish headers. Depending on you Linux distribution, you may need to install the related package, which could be named varnish-devel, varnish-dev or maybe libvarnish-dev.

Before v0.1.0, this library relied on a specific version of libvarnish. Since v0.1.0, this is no longer the case, and it should work with multiple supported Varnish versions.

varnish-rs (Rust) libvarnish (C)
0.1.0 - 0.2.0 7.4 - 7.6
0.0.18 - 0.0.19 7.5
0.0.17 7.4
0.0.15 - 0.0.16 7.3
0.0.12 - 0.0.14 7.2
0.0.9 - 0.0.11 7.1
0.0.0 - 0.0.8 7.0

Development

  • This project is easier to develop with just, a modern alternative to make. Install it with cargo install just.
  • To get a list of available commands, run just.
  • To run tests, use just test.

It is recommended if your varnish headers are installed where pkg-config can find them. If not, you can set the VARNISH_INCLUDE_PATHS environment variable to a colon-separated list of paths to search, but note that build.rs script cannot detect libvarnish version, and assumes the latest.

VARNISH_INCLUDE_PATHS=/my/custom/libpath:/my/other/custom/libpath cargo build

See CONTRIBUTING.md for other details.

License

Licensed under the 3-Clause BSD License (LICENSE or https://opensource.org/license/BSD-3-clause)

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you shall be licensed as above, without any additional terms or conditions.

Dependencies

~1.7–4.5MB
~94K SLoC