An easy to build and use set of SDL2 bindings.


License: Zlib

Language: C

Keywords: rust, rust-bindings, rust-crate, sdl2, zlib-license

License:Zlib Minimum Rust Version AppVeyor TravisCI crates.io docs.rs


  • When is 0.2? Not before SDL2-v2.0.12 comes out, which is scheduled for "before the end of the year".
  • Does this thing work with cross compilation? No, I'm dumb, I'll fix it in 0.2


The fermium crate is raw bindings to the SDL2 C API.

For the high-level wrapper crate, please see beryllium.

Compared to the common alternative, sdl2-sys, this is has consts instead of enums, it is slightly more complete, and it works much better on windows MSVC (no special setup at all).

  • There are pre-generated bindings for the following targets:
    • armv7-unknown-linux-gnueabihf
    • i686-pc-windows-msvc
    • x86_64-apple-darwin
    • x86_64-pc-windows-msvc
    • x86_64-unknown-linux-gnu
  • If your platform supports SDL2 but isn't on that list, please send in a PR!
    • Install the clang-3.9, libclang-3.9-dev, and llvm packages for your platform. Might be under different names, depending on distro and such.
    • Then cargo install bindgen
    • Then cargo build --features="use_bindgen_bin"
    • All the results go in to the OUT_DIR, something like target/debug/build/fermium-LONGHASHCODE/out.
    • There should be a 2.0.8, 2.0.9, and 2.0.10 version of the bindings for your target, it does all three versions in a single build.
    • Just PR those new files and I'll get it up on crates.io as soon as I can.

You can dynamic link or static link.

  • Dynamic linking is the default, and is the officially suggested linking style, both by me and also by the SDL2 project.
    • On Windows just grab the "Runtime Binaries" from The SDL Website or from the fermium repository. Put it in your project directory for development, and ship it with your program when you release something.
    • If you're feeling lazy, you can cargo install fermium and then just run fermium and it'll dump SDL2.dll into the current directory. It will automatically use either the 32-bit or 64-bit version.
    • On not-windows you should get SDL2 through your distro package manager (linux) or homebrew (Mac).
  • Static linking is available.
    • On Windows this will automatically build the static library for you. This takes some extra time, but is otherwise fully automated and you don't need to perform any special steps.
    • On not-Windows please be aware that not all package managers distribute SDL2 configured for static linking, so you might have to build the library from source with static linking enabled.

The default API target level is 2.0.8, but you can enable features to add in functions from 2.0.9 or 2.0.10.

  • Even without the features enabled your program will build and run with any newer version of SDL2 as well, and you'll get all relevent bug fixes and such, you just can't call the newer functions.
  • Please be aware that while Windows and Mac both have easy access to 2.0.10, Most of the Linux distributions still have 2.0.8 or 2.0.9 in their package managers. Unless you really need those newer functions, you might as well stay at the 2.0.8 API level for now.


This crate uses the Zlib license, the same license that SDL2 itself uses.

  • The old-headers-only/ directory contains header files from older versions of SDL2 and its add-ons, for use by bindgen when needed.
  • The full-source/ directory contains all the source needed to potentially build SDL2 and its add-ons on windows, for use with static linking.
  • The win32-devel-files/ directory has dynamic lib files for use when building on Windows. As with the full-source/ directory, spare files have been deleted to save on space.

Project Logo

birth of fermium

Project Statistics

Sourcerank 6
Repository Size 24.2 MB
Stars 13
Forks 3
Watchers 2
Open issues 5
Dependencies 2
Contributors 3
Tags 10
Last updated
Last pushed

Top Contributors See all

Lokathor Thom Chiovoloni Paul Clement

Packages Referencing this Repo

An opinionated crate of SDL2 bindings.
Latest release 0.1.2 - Updated - 13 stars

Recent Tags See all

v0.1.2 October 11, 2019
v0.1.1 October 08, 2019
v0.1.0 October 05, 2019
v0.1.0-alpha.5 October 01, 2019
v0.1.0-alpha.4 September 11, 2019
v0.1.0-alpha.3 September 05, 2019
v0.1.0-alpha.1 September 03, 2019
0.0.15 June 11, 2019
0.0.14 June 09, 2019
0.0.13 June 08, 2019

Something wrong with this page? Make a suggestion

Last synced: 2019-10-11 02:04:09 UTC

Login to resync this repository