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).
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)