Salvador Tamarit

PL
7papers
18citations
Novelty27%
AI Score18

7 Papers

PLSep 15, 2017Code
Erlang Code Evolution Control

David Insa, Sergio Pérez, Josep Silva et al.

During the software lifecycle, a program can evolve several times for different reasons such as the optimisation of a bottle-neck, the refactoring of an obscure function, etc. These code changes often involve several functions or modules, so it can be difficult to know whether the correct behaviour of the previous releases has been preserved in the new release. Most developers rely on a previously defined test suite to check this behaviour preservation. We propose here an alternative approach to automatically obtain a test suite that specifically focusses on comparing the old and new versions of the code. Our test case generation is directed by a sophisticated combination of several already existing tools such as TypEr, CutEr, and PropEr; and other ideas such as allowing the programmer to chose an expression of interest that must preserve the behaviour, or the recording of the sequences of values to which this expression is evaluated. All the presented work has been implemented in an open-source tool that is publicly available on GitHub.

PLFeb 12, 2018
Erlang Code Evolution Control (Use Cases)

David Insa, Sergio Pérez, Josep Silva et al.

The main goal of this work is to show how SecEr can be used in different scenarios. Concretely, we demonstrate how a user can run SecEr to obtain reports about the behaviour preservation between versions as well as how a user can use SecEr to find the source of a discrepancy. The use cases presented are three: two completely different versions of the same program, an improvement in the performance of a function and a program where an error has been introduced. A complete description of the technique and the tool is available at [1] and [2].

PLJan 25, 2017
Towards Automatic Learning of Heuristics for Mechanical Transformations of Procedural Code

Guillermo Vigueras, Manuel Carro, Salvador Tamarit et al.

The current trends in next-generation exascale systems go towards integrating a wide range of specialized (co-)processors into traditional supercomputers. Due to the efficiency of heterogeneous systems in terms of Watts and FLOPS per surface unit, opening the access of heterogeneous platforms to a wider range of users is an important problem to be tackled. However, heterogeneous platforms limit the portability of the applications and increase development complexity due to the programming skills required. Program transformation can help make programming heterogeneous systems easier by defining a step-wise transformation process that translates a given initial code into a semantically equivalent final code, but adapted to a specific platform. Program transformation systems require the definition of efficient transformation strategies to tackle the combinatorial problem that emerges due to the large set of transformations applicable at each step of the process. In this paper we propose a machine learning-based approach to learn heuristics to define program transformation strategies. Our approach proposes a novel combination of reinforcement learning and classification methods to efficiently tackle the problems inherent to this type of systems. Preliminary results demonstrate the suitability of this approach.

PLJan 12, 2017
Towards a Semantics-Aware Code Transformation Toolchain for Heterogeneous Systems

Salvador Tamarit, Julio Mariño, Guillermo Vigueras et al.

Obtaining good performance when programming heterogeneous computing platforms poses significant challenges. We present a program transformation environment, implemented in Haskell, where architecture-agnostic scientific C code with semantic annotations is transformed into functionally equivalent code better suited for a given platform. The transformation steps are represented as rules that can be fired when certain syntactic and semantic conditions are fulfilled. These rules are not hard-wired into the rewriting engine: they are written in a C-like language and are automatically processed and incorporated into the rewriting engine. That makes it possible for end-users to add their own rules or to provide sets of rules that are adapted to certain specific domains or purposes.

PLMar 10, 2016
Proceedings of the First Workshop on Program Transformation for Programmability in Heterogeneous Architectures

Salvador Tamarit, Julio Mariño, Guillermo Vigueras et al.

This volume contains the proceedings of PROHA 2016, the first workshop on Program Transformation for Programmability in Heterogeneous Architectures, held on March 12, 2016 in Barcelona, Spain, as an affiliated workshop of CGO 2016, the 14th International Symposium on Code Generation and Optimization. Developing and maintaining high-performance applications and libraries for heterogeneous architectures while preserving its semantics and with a reasonable efficiency is a time-consuming task which is often only possible for experts. It often requires manually adapting sequential, platform-agnostic code to different infrastructures, and keeping the changes in all of these infrastructures in sync. These program modification tasks are costly and error-prone. Tools to assist in and, if possible, automate such transformations are of course of great interest. However, such tools may need significant reasoning and knowledge processing capabilities, including, for example, being able to process machine-understandable descriptions of the semantics of a piece of code is expected to do; to perform program transformations inside a context in which they are applicable; to use strategies to identify the sequence of transformations leading to the best resulting code; and others.

IRJan 9, 2015
Web Template Extraction Based on Hyperlink Analysis

Julián Alarte, David Insa, Josep Silva et al.

Web templates are one of the main development resources for website engineers. Templates allow them to increase productivity by plugin content into already formatted and prepared pagelets. For the final user templates are also useful, because they provide uniformity and a common look and feel for all webpages. However, from the point of view of crawlers and indexers, templates are an important problem, because templates usually contain irrelevant information such as advertisements, menus, and banners. Processing and storing this information is likely to lead to a waste of resources (storage space, bandwidth, etc.). It has been measured that templates represent between 40% and 50% of data on the Web. Therefore, identifying templates is essential for indexing tasks. In this work we propose a novel method for automatic template extraction that is based on similarity analysis between the DOM trees of a collection of webpages that are detected using menus information. Our implementation and experiments demonstrate the usefulness of the technique.

IRSep 9, 2014
Automatic Detection of Webpages that Share the Same Web Template

Julián Alarte, David Insa, Josep Silva et al.

Template extraction is the process of isolating the template of a given webpage. It is widely used in several disciplines, including webpages development, content extraction, block detection, and webpages indexing. One of the main goals of template extraction is identifying a set of webpages with the same template without having to load and analyze too many webpages prior to identifying the template. This work introduces a new technique to automatically discover a reduced set of webpages in a website that implement the template. This set is computed with an hyperlink analysis that computes a very small set with a high level of confidence.