Logo do repositório
 
A carregar...
Miniatura
Publicação

Shared Channels on Context-free Session Types

Utilize este identificador para referenciar este registo.
Nome:Descrição:Tamanho:Formato: 
TM_Diogo_Barros.pdf970.19 KBAdobe PDF Ver/Abrir

Resumo(s)

In an evermore connected world, communication is key. Communication is found at a very large scale in distributed systems and global networks, but also on a smaller scale in parallel execution on our computers’ processors. As technology progresses, communication becomes more complex, more structured. We now have complex protocols that guide communication with a strict set of rules. Common knowledge tells us that for each line of code we write we possibly introduce a new bug, and the more complex the logic is, the more probable it is to happen. Thus, it is only logical that nowadays, software is more prone to communication-related bugs than ever. Session types gave programmers the missing tools to ensure the correctness of communication. With session types, programmers can express protocols as types and attach them to communication channels to guarantee the protocol is fulfilled. There have been many implementations of session types, but programming languages have shown to be the best due to their seamless integration of session types and primitives that empower the programmer in a relatively simple syntax. FreeST is one of these languages and the subject of this thesis. However, FreeST’s use cases are held down by its limiting channels. FreeST’s channels only allow for one-to-one communication and therefore, patterns such as producerconsumer, client-server and thread pools are either impossible to implement or too restrictive to use. There is a world of use cases that depend on these patterns, and FreeST can’t achieve its full potential until it supports them, or in other words, until it supports one-to-many, many-to-one and many-to-many communication through its channels. Furthermore, FreeST’s connection with the real world is only done through simple prints, so interaction with the user or with the file system is completely out of its scope. In this thesis we extend FreeST with shared session types and channels so that we can support all kinds of parallel and concurrent programming. We quickly make use of these novel channels to create abstractions made available in FreeST’s standard library, and more importantly, implement a more extensive suite of IO primitives. Standard IO can be expressed through session types, and shared channels allow these to be shared among many threads while still behaving the same way as traditional IO primitives. The cherry on top of this thesis is file IO. Finally, FreeST is able to interact with its surroundings.

Descrição

Tese de mestrado, Engenharia Informática, 2022, Universidade de Lisboa, Faculdade de Ciências

Palavras-chave

tipos de sessão canais partilhados linguagens de programação programação concurrente Teses de mestrado - 2023

Contexto Educativo

Citação

Projetos de investigação

Unidades organizacionais

Fascículo

Editora

Licença CC