395 papers · page 2 of 20
José Pedro Ferreira, João Bispo, Susana Lima
WebAssembly (Wasm) has emerged as a powerful binary format, enabling the seamless integration of languages like C and Rust into web applications. JavaScript (JS), the dominant language for client-side web development, has its code susceptible to tampering and intellectual propert…
Damian Frölich, Tommaso Pacciani, L. Thomas van Binsbergen
Debugging non-deterministic programs is inherently difficult as the compound effects of non-deterministic execution steps is hard to predict and gives rise to a (potentially) vast space of reachable program states such that manual exploration of all reachable states is infeasible…
Yuze Fu, Shigeru Chiba
Algebraic effect handling is a superior abstraction for non-local control flows, unifying over the existing non-local control flow constructs such as try/catch, destructors, shared state, async/await and generators. To encourage the adoption of effect handlers, improving their pe…
Arkadii Gerasimov, Nico Jansen, Judith Michael, Bernhard Rumpe, Sebastian Will
The reusability of modular, embeddable components is a key determinant for the success of modern programming languages to ensure efficient and high-quality development. However, there is a gap in the field of domain-specific modeling regarding reusable components at the model lev…
Simone Heisinger, Maximilian Heisinger, Martina Seidl
Feature models evolve in multiple iterations over time. When modellers change a model, they enact syntactical changes in order to produce specific semantic differences between model iterations. Many tools have been developed to analyze such syntactical differences, but the changi…
Georg Hinkel, Alexander Hert, Niklas Hettler, Kevin Weinert
Many current language workbenches do not support incremental parsing or left recursion, lack support for resolving references and pretty-printing or make it difficult to implement the Language Server Protocol (LSP) based on the generated parser. In this paper, we present AnyText,…
Nico Jansen, Alex Lüpges, Bernhard Rumpe
In software language engineering, composition and modular design are essential milestones to advance reuse in this domain. Although language engineering improves quality and development efficiency by incorporating reusable components and tooling, some disadvantages and limitation…
José Nuno Macedo, Marcos Viera, João Saraiva
Software testing is an integral part of modern software development. Testing frameworks are part of the toolset of any software language allowing programmers to test their programs in order to detect bugs. Unfortunately, there is no work on testing in attribute grammars.
In this…
Philipp Riemer, Yury Nikulin, Ashley Claymore, Mikhail Barash
In addition to requirements of a purely technical nature, the evolution of widely adopted programming languages is often governed by preferences of individual members---either persons or organizations---of the language maintenance team, who may associate issues with particular de…
Gustavo Santos, João Bispo, Alexandra Mendes
Mobile devices have become integral to our everyday lives, yet their utility hinges on their battery life. In Android apps, resource leaks caused by inefficient resource management are a significant contributor to battery drain and poor user experience. Our work introduces Alpakk…
Elizabeth Scott, Adrian Johnstone
Fully general parsers permit the syntax specification of formal languages to be unrestricted, allowing language designers to use a syntax specification that supports semantics specification, but also permitting ambiguity. Language workbenches that support fully general grammars n…
Friedrich Steimann
In his 1977 ACM Turing Award Lecture, John Backus identified the word-at-a-time style of programming, inherited from the underlying hardware and dubbed the "von Neumann bottleneck", as a major obstacle to the advancement of programming. In this keynote, I argue that the functiona…
Gizem Caylak, Daniel Lundén, Viktor Senderov, David Broman
Probabilistic programming languages (PPLs) make it possible to separate the concerns between probabilistic models and Bayesian inference algorithms. However, to make such inference efficient is technically very challenging, both in terms of execution time performance and inferenc…
Sylvan Clebsch, Matilda Blomqvist, Elias Castegren, Matthew A. Johnson, Matthew J. Parkinson
Compilation is all about tree rewriting. In functional languages where all data is tree-shaped, tree rewriting is facilitated by pattern matching, but data immutability leads to copying for each update. In object-oriented languages like Java or C++, a standard approach is to use …
Benoît Combemale
Software engineering is a complex endeavor that encompasses various socio-technical activities. These activities are traditionally orchestrated over a development life cycle from development time to operation time, and applying engineering processes both at design and run times, …
Simão Cunha, Luís Silva, João Saraiva, João Paulo Fernandes
Energy efficiency of software is crucial in minimizing environmental impact and reducing operational costs of ICT systems. Energy efficiency is therefore a key area of contemporary software language engineering research. A recurrent discussion that excites our community is whethe…
Christopher A. Esterhuyse, L. Thomas van Binsbergen
High-level, declarative specification languages are typically highly modular: specifications are comprised of fragments that are themselves meaningful. As such, complex specifications are built from incrementally composed fragments. In a cooperative specification, different fragm…
Yuefeng Hu, Hiromu Ishibe, Feng Dai, Tetsuro Yamazaki, Shigeru Chiba
Software regression has been a persistent issue in software development. Although numerous techniques have been proposed to prevent regression from being introduced before release, few are available to address regression as it occurs post-release. Therefore, identifying the root …
Laurent Huberdeau, Cassandre Hamel, Stefan Monnier, Marc Feeley
Software supply chain attacks are increasingly frequent and can be hard to guard against. Reproducible builds ensure that generated artifacts (executable programs) can be reliably created from their source code. However, the tools used by the build process are also vulnerable to …
Lars Hummelgren, Viktor Palmkvist, Linnea Stjerna, Xuechun Xu, Joakim Jaldén, David Broman
Hidden Markov models (HMMs) are frequently used in areas such as speech recognition and bioinformatics. However, implementing HMM algorithms correctly and efficiently is time-consuming and error-prone. Specifically, using model-specific knowledge to improve performance, such as s…