| Name: | Description: | Size: | Format: | |
|---|---|---|---|---|
| 5.77 MB | Adobe PDF |
Authors
Abstract(s)
Technological advancements led manufacturers to shift from single-processor to multi-core
architectures, fostering the rise of parallel and concurrent computing. This transition has yielded
substantial benefits, such as improved performance and enhanced interprocess communication in
distributed systems. However, it has also introduced challenges requiring specialized tools and
languages to handle parallelism and concurrency efficiently and make these tasks easier for developers. Languages like Erlang and Go were purpose-built to meet these demands, while others,
such as Java, have evolved to incorporate features facilitating parallel and concurrent programming, providing accessible solutions for emerging paradigms.
FreeST is a modern, message-passing concurrent functional language featuring context-free
session types to ensure strict adherence to communication protocols. While session types were
designed for concurrent programming, FreeST, despite its strengths, stumbles upon limitations
stemming from its embryonic state and the lack of comprehensive tools for addressing various
parallel and concurrent programming paradigms. Consequently, FreeST demands substantial domain knowledge and effort to develop parallel and concurrent systems effectively, posing a steep
learning curve. Our goal in this work is to provide a set of tools that improve and ease parallel and
concurrent programming in FreeST.
This thesis proposes the development of three modules aimed at enhancing FreeST’s capability
to handle diverse parallel and concurrent programming paradigms and concepts: data parallelism
and embarrassingly parallel problems, futures and divide-and-conquer strategies, and stream programming. These modules are designed to leverage FreeST’s unique features and expand its practical utility in real-world applications, making it a more versatile and effective tool for addressing
complex parallel and concurrent computing challenges. To validate our contributions, we employ
surveys and a Lines of Code (LoC) comparison.
Description
Tese de Mestrado, Engenharia Informática, 2024, Universidade de Lisboa, Faculdade de Ciências
Keywords
Tipos de sessão Concorrência Problemas embaraçosamente paralelos Futuros Streams Teses de mestrado - 2024
