No abstract available.
Proceeding Downloads
A Surprisingly Simple Lua Compiler
Dynamically-typed programming languages are often implemented using interpreters, which offer several advantages in terms of portability and flexibility of the implementation. However, as a language matures and its programs get bigger, programmers may ...
Hapi: A Domain-Specific Language for the Declaration of Access Policies
Access policies specify what are the actions that different actors can perform on the available resources. Access policies are a core notion in multiuser environments, such as operating systems and distributed databases. Currently, most of these ...
Inlining for Code Size Reduction
Function inlining is a compiler optimization that replaces the call of a function with its body. Inlining is typically seen as an optimization that improves performance at the expenses of increasing code size. This paper goes against this intuition, ...
Evaluating Optimizations for a High-Level Language
Pallene aims to be a system language counterpart for Lua, with similar syntax but ahead-of-time compilation. It also has optional typing and stricter semantics, allowing it to emit C code with unboxed values, which enable several optimizations in the C ...
New Optimization Sequences for Code-Size Reduction for the LLVM Compilation Infrastructure
Typical compilers provide users with default optimization levels: sequences of code-transformation passes that can be tuned to either generate faster or smaller executables. Regarding this last dimension of efficiency—size—clang contains two ...
High-Level Stream and Data Parallelism in C++ for Multi-Cores
Stream processing applications have seen an increasing demand with the increased availability of sensors, IoT devices, and user data. Modern systems can generate millions of data items per day that require to be processed timely. To deal with this ...
A Graph Transformation System formalism for correctness of Transactional Memory algorithms
With the constant research and development of Transactional Memory (TM) systems, various algorithms have been proposed, and their correctness is always an important aspect to take into account. When analyzing TM algorithms, one of the most commonly ...
An extension for Transactional Memory in OpenMP
- Andre D. Jardim,
- Kevin Oliveira,
- Diogo J. Cardoso,
- Daniel Di Domenico,
- Andre R. Du Bois,
- Gerson G. H. Cavalheiro
The Transactional Memory model was proposed as a mechanism offering a higher-level programming interface to abstract some of the complexities associated with simultaneous access to shared data. Although modern tools for multithreaded programming offer ...
TSDolly: A program generator for TypeScript
TypeScript is an increasingly popular open-source language that builds on JavaScript by adding optional static type definitions. Its ecosystem has many tools that require confidence in their correctness when manipulating TypeScript programs. Tool ...
Graphs based on IR as Representation of Code: Types and Insights
Mainstream compilers infer code properties from data structures, such as trees and graphs. The latter is useful to represent the control flow and the data dependencies in a code. In addition, graphs can also be used in learning tasks, such as ...
Retrofitting Typestates into Rust
As software permeates our lives, bugs become increasingly expensive; the best way to reduce their cost is to reduce the number of bugs. Of course, this is easier said than done and, at best, we can go after their root causes to mitigate them. One of ...
A Graph-based Model for Building Optimization Sequences: A Study Case on Code Size Reduction
Embedded Systems applications have several limitations, one of these limitations is the memory size. Modern compilers provide optimization sequences that reduce the code size, contributing to solve this memory issue. This paper presents a new approach ...
Refactoring Java Monoliths into Executable Microservice-Based Applications
In the last few years we have been seeing a drastic change in the way software is developed. Large-scale software projects are being assembled by a flexible composition of many (small) components possibly written in different programming languages and ...
Synthesis of Random Real-World Java Programs from Preexisting Libraries
With the great advances in the software development area, where systems are becoming larger and more complex, the testing area is suffering to keep up with. In this paper, we describe a formal procedure to perform the synthesis of random programs from ...
Index Terms
Proceedings of the 25th Brazilian Symposium on Programming Languages