Inference-driven resource managemenent and polymorphism in systems programming
Inferencí řízená správa zdrojů a polymorfismus pro systémové programování
diploma thesis (DEFENDED)
View/ Open
Permanent link
http://hdl.handle.net/20.500.11956/176279Identifiers
Study Information System: 234874
Collections
- Kvalifikační práce [11981]
Author
Advisor
Referee
Bednárek, David
Faculty / Institute
Faculty of Mathematics and Physics
Discipline
Computer Science - Software Systems
Department
Department of Software Engineering
Date of defense
13. 9. 2022
Publisher
Univerzita Karlova, Matematicko-fyzikální fakultaLanguage
English
Grade
Excellent
Keywords (Czech)
programovací jazyky|typové systémy|kompilátory|systémové programování|správa zdrojůKeywords (English)
programming languages|type systems|compilers|systems programming|resource managementJazyky pro Systémové programování usnadňují implementaci softwaru, který běží v omezených prostředích blízko hardwaru, jako jsou operační sys- témy, drivery, systémy reálného času a vestavěné systémy. Implementace prospěšných prvků pro tyto jazyky, jako jsou generické programování a ty- pový systém zajišťující bezchybnost kódu, je ztěžována úzkými požadavky na běhovýmé vlastnostni programu. Hlavní náplní této práce je prozk- oumat novou kombinaci jazyka C-- s prvky typového systému umožňující typovou kontrolu vysoce polymorfního kódu a demonstruje možnosti typově vedené správy zdrojů v tomto jazyku. Jako hlavní výstup práce podává důkaz konceptu zprostředkovaný prototypem překladače rožšířeného jazyka C-- do LLVM a popisuje typový systém založený na odkládajícím řešení omezujících podmínek, který je schopen typové inference za přítomnosti více- parametrových typových tříd a subtypy C--. Funkcionalitu typového systému a překladače demonstrujeme na vybraných ukázkách programů a popisujeme několik rozpoznaných komplikací návrhu, které lze adresovat pro praktičtější implementaci. 1
Systems programming languages facilitate the implementation of software that runs in restricted environments close to the hardware, such as operating systems, drivers, and real-time and embedded systems. Implementation of desirable features of such languages, such as generic programming and type system capabilities that prevent programmer errors, are complicated by strict constraints on the run-time properties of the program. This thesis explores a novel combination of C-- language with advanced type system features that allow type checking of highly polymorphic generic code and demonstrates type-driven resource management in this language. As the main result, the thesis provides a proof-of-concept in a prototype compiler of an extended ver- sion of C-- to LLVM and describes a type system based on deferred constraint solving that is capable of type inference in the presence of multi-parameter typeclasses and C-- subtypes. We demonstrate the functionality of the type system and the compiler on selected program examples and report several identified design challenges that may be addressed to make the system more practical. 1
