Back to GSoC 2025
Titiksha BansalTitiksha Bansal
Mintu GogoiMintu Gogoi
PassedPassed
Mentors:Till KamppeterTill KamppeterGaurav Guleria
GSoC 2025

Rust bindings for libcups2/3

Work Summary Titiksha Bansal

Created safe and idiomatic Rust bindings for cpdb-libs (v2.3), implementing printer discovery, job submission, queue management, async callbacks, RAII cleanup via Drop traits, and comprehensive tests across Linux and macOS.

My mentor was very supportive and approachable throughout the program. They provided timely feedback on my code, explained design decisions clearly, and encouraged me to think through problems instead of just giving direct answers.

Titiksha Bansal

Work Summary Mintu Gogoi

Developed cups-rs, a safe Rust wrapper for the CUPS printing system covering most of the C API, with printer discovery, job management, authentication callbacks, SSL/TLS certificate management, and RAII-based resource cleanup. Published as a crate (v0.3.0).

1 minute read

Introduction

1 contributor full-size (350 hours), Level of difficulty: Hard

Most software with print functionality or print administration functionality uses the CUPS library (libcups, 2.x, 3.x) to communicate with CUPS. This is easy when the software is written in C or C++ as the library is written in C. If the software is written in other languages, we need some connection between the library and the client code, the so-called bindings.

A programming language which gets more and more used nowadays is Rust, due to its memory-safety, eliminating the number-one source of crashes and vulnerabilities. Unfortunately, we do not have Rust bindings for libcups. And getting them is subject of this project.

Mentors

Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), TBD

Desired knowledge

Python, C, CUPS

Code License

GPL-2+ (GPL 2 or any later version)