Shared Channels on Context-free Session Types
Autor(a) principal: | |
---|---|
Data de Publicação: | 2022 |
Tipo de documento: | Dissertação |
Idioma: | eng |
Título da fonte: | Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
Texto Completo: | http://hdl.handle.net/10451/59094 |
Resumo: | Tese de mestrado, Engenharia Informática, 2022, Universidade de Lisboa, Faculdade de Ciências |
id |
RCAP_04f8934d21ac0eef63915c04367db559 |
---|---|
oai_identifier_str |
oai:repositorio.ul.pt:10451/59094 |
network_acronym_str |
RCAP |
network_name_str |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
repository_id_str |
7160 |
spelling |
Shared Channels on Context-free Session Typestipos de sessãocanais partilhadoslinguagens de programaçãoprogramação concurrenteTeses de mestrado - 2022Departamento de InformáticaTese de mestrado, Engenharia Informática, 2022, Universidade de Lisboa, Faculdade de CiênciasIn 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.Vasconcelos, Vasco Thudichum, 1964-Mordido, AndreiaRepositório da Universidade de LisboaBarros, Diogo Filipe da Paz de2023-08-31T10:11:52Z202220222022-01-01T00:00:00Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfhttp://hdl.handle.net/10451/59094enginfo:eu-repo/semantics/openAccessreponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãoinstacron:RCAAP2023-11-08T17:08:04Zoai:repositorio.ul.pt:10451/59094Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireopendoar:71602024-03-19T22:09:05.882133Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãofalse |
dc.title.none.fl_str_mv |
Shared Channels on Context-free Session Types |
title |
Shared Channels on Context-free Session Types |
spellingShingle |
Shared Channels on Context-free Session Types Barros, Diogo Filipe da Paz de tipos de sessão canais partilhados linguagens de programação programação concurrente Teses de mestrado - 2022 Departamento de Informática |
title_short |
Shared Channels on Context-free Session Types |
title_full |
Shared Channels on Context-free Session Types |
title_fullStr |
Shared Channels on Context-free Session Types |
title_full_unstemmed |
Shared Channels on Context-free Session Types |
title_sort |
Shared Channels on Context-free Session Types |
author |
Barros, Diogo Filipe da Paz de |
author_facet |
Barros, Diogo Filipe da Paz de |
author_role |
author |
dc.contributor.none.fl_str_mv |
Vasconcelos, Vasco Thudichum, 1964- Mordido, Andreia Repositório da Universidade de Lisboa |
dc.contributor.author.fl_str_mv |
Barros, Diogo Filipe da Paz de |
dc.subject.por.fl_str_mv |
tipos de sessão canais partilhados linguagens de programação programação concurrente Teses de mestrado - 2022 Departamento de Informática |
topic |
tipos de sessão canais partilhados linguagens de programação programação concurrente Teses de mestrado - 2022 Departamento de Informática |
description |
Tese de mestrado, Engenharia Informática, 2022, Universidade de Lisboa, Faculdade de Ciências |
publishDate |
2022 |
dc.date.none.fl_str_mv |
2022 2022 2022-01-01T00:00:00Z 2023-08-31T10:11:52Z |
dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
dc.type.driver.fl_str_mv |
info:eu-repo/semantics/masterThesis |
format |
masterThesis |
status_str |
publishedVersion |
dc.identifier.uri.fl_str_mv |
http://hdl.handle.net/10451/59094 |
url |
http://hdl.handle.net/10451/59094 |
dc.language.iso.fl_str_mv |
eng |
language |
eng |
dc.rights.driver.fl_str_mv |
info:eu-repo/semantics/openAccess |
eu_rights_str_mv |
openAccess |
dc.format.none.fl_str_mv |
application/pdf |
dc.source.none.fl_str_mv |
reponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação instacron:RCAAP |
instname_str |
Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação |
instacron_str |
RCAAP |
institution |
RCAAP |
reponame_str |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
collection |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
repository.name.fl_str_mv |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação |
repository.mail.fl_str_mv |
|
_version_ |
1799134647260545024 |