is creating Rust software libraries

Select a membership level

Any donation is appreciated
per month
Thank you very much!
Any donation is very much appreciated!

Your name will be mentionned either in the README section of my more important projects or on vulkano's website (I haven't chosen an exact form yet).
Thank you
per month
Thank you for financing my work!




per month


I discovered the Rust programming language in 2013 and have been active in the Rust community since 2014 under the nickname tomaka. I am convinced that the combination of safety and zero-cost abstractions makes the Rust programming language a language of the future! But for the moment many people only consider this language as "promising". What is the point of using a programming language if you can't do anything interesting with it?

Over the years I have spent a large amount of efforts contributing to several Rust libraries and building my own. I have been contributing to Rust in my own way by helping build an ecosystem of libraries instead of directly contributing to the language or the compiler.

But doing so takes a lot of time. There is still a lot of work to do: safety holes to fix, tutorials to write, issues left unresolved. By contributing to this patreon, you would allow me to continue spending time on this work. Thank you!

My projects

- Vulkano (~45k lines of code) is a safe wrapper around the Vulkan API. It is a low-level brick that allows you to interact with your GPU and execute graphical or compute (GPGPU) operations. Vulkano aims to be very explicit and predictable especially if you are familiar with the Vulkan API, but at the same time provide some high-level functionnalities. Ideal for building a game, a game engine, or a GPGPU application when performances and explicitness matter.

- Glium (~33k lines of code, unmaintained) is a safe wrapper around OpenGL and OpenGL ES. It aims to provide an easy-to-use high-level API while still remaining predictable and not hiding what it does. Even though many people have liked glium, its main goal of being safe was determined to be too difficult because of the many problems with OpenGL itself.

- Android-rs-glue allows you to easily turn your Rust code into an Android package. After installing the Android SDK and NDK, run the `cargo apk` command and you will get an .apk file which you can then install on your device. Works out of the box with vulkano, glium, winit and glutin. Also provides a docker image.

- Winit (~10k lines of code) is a cross-platform window creation library. It allows you to create a basic window on Windows, Linux, MacOS and Android, then lets you handle the events received by this window. In order to show something on the window, you are supposed to create an OpenGL, Vulkan, or DirectX context on top of it, but this is not covered by winit itself.

- Glutin (~7k lines of code) does the same as winit, but creates an OpenGL context in a cross-platform way on top of the window. The servo project from Mozilla uses a fork of glutin for its own windowing.

- Rodio is a cross-platform high-level audio playback library. It handles decoding audio files, adding filters, pausing/playing, adjusting the volume, and so on.

- Cpal is a cross-platform low-level audio playback library used by rodio. It opens a channel of communication with the system (WASAPI, ALSA, coreaudio) and allows you to stream PCM data to it.

- Hlua is a safe wrapper around the Lua runtime library. Hlua provides a high-level easy-to-use API and handles the Lua stack for you. The library is heavily templated and should have a negligible runtime overhead.

- Rouille is a web framework backed by tiny-http. Contrary to other Rust web frameworks, rouille lets you write borrow-checker-friendly Rust-code. For example additional parameters to pass to a route handler do not go through the framework but are simply passed as regular function parameters. Rouille is not as shiny-looking as other frameworks, but it should work just as well and is likely more intuitive to use.

- Immi is a utility toolkit if you want to create an immediate mode user interface. It doesn't perform any drawing, but provides some kind of framework to make your life easier.

- Tiny-http (old) is an HTTP server library started in 2014, when there was no real alternative. Even though it is not as competitive as hyper, tiny-http is pretty much complete and doesn't get any new development.

Recent posts by tomaka

How it works

Get started in 2 minutes

Choose a membership
Sign up
Add a payment method
Get benefits