lunduniversity.lu.se

Computer Science

Faculty of Engineering, LTH

Denna sida på svenska This page in English

Compiler projects fall 2017

EDAN70: Project in Computer Science

Implementation of PQL in Java 8 using ExtendJ
David Åkerman and Yu Zhang
Abstract:
Effective use of parallelism can improve performance, but it is at the same time hard to get right. A solution to this problem is to use language specially designed to make parallelism easy, PQL is one such language. PQL is a query language embedded in Java which tries to make parallelism easier for the programmer by letting the underlying implementation take care how the computation is done. PQL has only been implemented in Java 6 and Java 9 has already been released. The PQL language can be implemented in the extensible Java compiler ExtendJ which is highly modular and more easily updated when a new version of Java is released. We have implemented a subset of PQL in ExtendJ and evaluated its performance. We found that our implementation was a bit slower than a parallel Java8 Streams in some benchmark, but has the same performance in other benchmarks.
(paper) (code)

Extending Java with new operators using ExtendJ
Wawrzyn Chonewicz and Filip Stenström
Abstract:
We have used the extensible Java compiler ExtendJ to add two new operators to the java language: print-assign and a simplified spread operator. The print-assign operator extends the assignment operator by also printing, and the spread operator creates a new array by applying a method to each element of an array. In this paper we describe the implementation, which consists of both static analysis and bytecode generation, and highlight some interesting problems. We evaluate the applicability of our operators by scanning a few open-source projects for use cases. We also evaluate the performance of our extension by compiling a few open- source projects, and we conclude that there is no noticeable difference in compilation time with or without our extension.
(paper)(code)

Extending the ExtendJ Java compiler with Java 9 support
Sebastian Hjelm and Markus Olsson
Abstract:
This report covers our extension of the ExtendJ compiler to cover parts of the Java 9 specification. We will discuss the changes we have implemented and how they work in detail. We have also made an evaluation which verifies that our extension has little performance impact on the existing compiler.
(paper)(code)

Dependency Injection in Java
Niklas Jönsson and Kim Fransson
Abstract:
In this paper we discuss the problems of slow execution times as a result of sub-optimal choices for the underlying data structures. We present our dependency injection extension for Java that collects information about library collection type uses and makes an intelligent choice on what data structure to use. Our solution lets the programmer decide if he wants help from the compiler to make the choice by specifying an interface type on the right hand side of an assignment when declaring a variable. Our solution scratches the surface of dependency injection and achieves performance gains. However there is still a lot to be discovered and these gains could be greater with more work.
(paper)(code)

A Coroutine Extension to Java
Adam Ohlsson and Erik Leffler
Abstract:
This paper present an extension to the ExtendJ Java compiler that enables the use of asymmetric, first-class, stackless coroutines. The extension perform syntactic sugaring and generate standard Java code, acting as a translator. The extension currently provide support for a fairly large subset of Java but does not provide error checking or error messages.
(paper)(code)

Implementation of graphical editor using Sirius
David Phung
Abstract:
One of the first steps in the process of model-driven development is to construct an editor that would allow for creation and modification of models. For domain specific languages, there might not be an existing product on the market that have support for the language. Moreover, the cost of building one such editor can be too expensive if done from the ground up. A number of tools and frameworks have therefore been developed to help alleviate this problem. We present our study of one such frameworks, Sirius. Sirius is an Eclipse project aims at enabling rapid development of graphical editor without high level of required knowledge. By implementing an editor ourselves using the framework, we have highlighted a number of its strengths and the factors that should be considered before a developer unfamiliar with Eclipse modeling projects can start using Sirius.
(paper)(code)