23 releases

0.1.22+2.1.28 May 13, 2024
0.1.20+2.1.28 May 26, 2022
0.1.19+2.1.27 Jan 16, 2022
0.1.17 Dec 27, 2021
0.1.12 Jul 9, 2020

#85 in Authentication

Download history 22140/week @ 2024-02-15 26694/week @ 2024-02-22 26622/week @ 2024-02-29 28193/week @ 2024-03-07 28921/week @ 2024-03-14 28268/week @ 2024-03-21 30988/week @ 2024-03-28 31149/week @ 2024-04-04 27758/week @ 2024-04-11 28355/week @ 2024-04-18 26852/week @ 2024-04-25 25426/week @ 2024-05-02 29482/week @ 2024-05-09 25598/week @ 2024-05-16 25855/week @ 2024-05-23 20438/week @ 2024-05-30

106,440 downloads per month
Used in 11 crates (3 directly)


73K SLoC

C 51K SLoC // 0.2% comments M4 9K SLoC // 0.2% comments Shell 8K SLoC // 0.2% comments Visual Studio Project 2K SLoC Rust 1.5K SLoC // 0.1% comments Visual Studio Solution 479 SLoC Automake 420 SLoC // 0.5% comments Python 104 SLoC // 0.0% comments RPM Specfile 101 SLoC Batch 43 SLoC PowerShell 23 SLoC Perl 13 SLoC // 0.4% comments R 1 SLoC ReScript 1 SLoC

Contains (autotools obfuscated code, 715KB) sasl2/configure, (obscure autoconf code, 45KB) sasl2/configure.ac


crates.io CI Rust Documentation

Cyrus SASL bindings for the Rust programming language.

View documentation.


# Cargo.toml
sasl2-sys = "0.1.22"


Bindings to Cyrus SASL.

This crate provides raw bindings to the Cyrus SASL library, libsasl2. Each module corresponds to a public header file in the C API.

Build configuration


If the vendored Cargo feature is enabled, a bundled copy of libsasl2 will be compiled and statically linked. The libsasl2 version will generally track the latest upstream release. Note that the version number of this crate is unrelated to the bundled version of libsasl2.

sasl2-sys is currently bundling libsasl2 v2.1.28.

When configuring the bundled library, sasl2-sys is intentionally conservative in the features it enables. All optional features are disabled by default. The following Cargo features can be used to re-enable features as necessary.

  • gssapi-vendored enables the GSSAPI plugin (--enable-gssapi) by building and statically linking a copy of MIT's Kerberos implementation using the krb5-src crate.

    This feature is not supported on Windows.

  • plain enables the PLAIN plugin (--enable-plain).

  • scram enables the SCRAM plugin (--enable-scram). This requires linking against OpenSSL via the openssl-sys crate.

Note that specifying any of these features implies vendored.

For convenience, the vendored feature of the openssl-sys crate is re-exported as the openssl-vendored feature. This feature is unlikely to be useful unless used in conjuction with the scram feature.

The eventual goal is to expose each libsasl2 feature behind a Cargo feature of the same name. Pull requests on this front are welcomed.


Without the vendored Cargo feature, sasl2-sys will search for the libsasl2 library and headers in several standard locations. If the pkg-config feature is enabled, as it is by default, pkg-config will be queried for the location of the sasl2 library.

To override the automatic search, set the SASL2_DIR environment variable to the path of the directory containing the desired libsasl2 directory.

If the layout of the libsasl2 directory is nonstandard, set the SASL2_LIB_DIR and SASL2_INCLUDE_DIR environment variables to the path of the directory containining the libsasl2 libraries and headers, respectively. These environment variables take precedence over SASL2_DIR if set.

When linking against a system library, dynamic linking is preferred unless the SASL2_STATIC environment variable is set.

Platform support

Upstream supports most major platforms, but sasl2-sys is only tested on recent versions of Ubuntu, macOS, and Windows. Patches that improve support for other platforms are welcome.


~92K SLoC