Return to search

Designing and Implementing a Rust API for Mimer SQL by Foreign Function Interfacing

According to research, software security vulnerabilities most often stem from memory related issues. These memory issues are mitigated in many programming languages, but often at the cost of performance. Rust, however, is a programming language which addresses these memory issues without significant losses in performance. Leveraging this strength, an Application Programming Interface (API) for interacting with Mimer SQL databases was developed in Rust. As there is no standard for writing database APIs in Rust, inspiration was drawn from other Rust APIs for relational database management systems to ensure similar functionality. The development process involved three main steps: stakeholder requirement specification, system design and implementation, and testing and evaluation. Stakeholder requirements were identified collaboratively to ensure alignment between user needs and API functionality. The system design consists of two libraries: the “FFI Library”, facilitating interaction with the Mimer SQL C API, and the “API library”, providing a user-friendly interface for Rust developers. Key features include connection management, statement preparation, cursor handling, and transaction support. Testing methodologies include unit and integration testing, performance benchmarking against the C API, and consideration for memory safety. The resulting API demonstrates performance parity with the C API and adherence to Rust conventions. / Enligt forskning beror säkerhetsbrister i programvara oftast på minnesrelaterade problem. Dessa minnesproblem motverkas i många programmeringsspråk, men ofta på bekostnad av prestanda. Rust är dock ett programmeringsspråk som åtgärdar dessa minnesproblem utan betydande prestandaförluster. Genom att utnyttja denna styrka utvecklades ett applikationsprogrammeringsgränssnitt (API) för att interagera med Mimer SQL-databaser i Rust. Eftersom det inte finns någon standard för att skriva databas-API:er i Rust hämtades inspiration från andra Rust-API:er för relationsdatabaser för att säkerställa liknande funktionalitet. Utvecklingsprocessen innefattade tre huvudsteg: specifikation av intressentkrav, systemdesign och implementering samt testning och utvärdering. Intressentkraven identifierades genom samarbete för att säkerställa överensstämmelse mellan användarbehov och API-funktionalitet. Systemdesignen består av två bibliotek: “FFI-biblioteket”, som erbjuder interaktionen med Mimer SQL C API:t, och “API-biblioteket”, som erbjuder ett användarvänligt gränssnitt för Rust-utvecklare. Nyckelfunktioner inkluderar anslutningshantering, validering av SQL-satser, iterering över resultatset och transaktionsstöd. Testmetoderna omfattar enhets- och integrationstester, prestandajämförelser med C API:t och testning av minnessäkerhet. Det resulterande API:t visar prestandaparitet med C API:t och följer konventioner i Rust.

Identiferoai:union.ndltd.org:UPSALLA1/oai:DiVA.org:uu-531146
Date January 2024
CreatorsAxelman, Edvard, Bruce, Edvin, Eriksson, Simon, Forslund, William, Hammarberg, Fredrik, Wallsten, Viktor
PublisherUppsala universitet, Institutionen för informationsteknologi
Source SetsDiVA Archive at Upsalla University
LanguageEnglish
Detected LanguageSwedish
TypeStudent thesis, info:eu-repo/semantics/bachelorThesis, text
Formatapplication/pdf
Rightsinfo:eu-repo/semantics/openAccess
RelationSjälvständigt arbete i informationsteknologi

Page generated in 0.0018 seconds