SCG News

A Sampling Profiler for a JIT Compiler

Andreas Wälchli. A Sampling Profiler for a JIT Compiler. Masters thesis, University of Bern, September 2020. Details.

Abstract

For efficient execution of dynamically typed languages, many implementations use a two-tier architecture. The first tier is used for low-latency startup and collects dynamic profiles, e.g., the types of all program variables. The second tier provides high throughput through the use of an optimizing compiler. This compiler specializes the code for the type information recorded in the first tier. If a program suddenly changes its behavior and presents the compiled code with types that have not been seen before and that are incompatible with the compiled version, that specialization becomes invalid. It is deoptimized and control is transferred back to the first tier where new profiles are gathered and specialization can start anew. But if the program behavior becomes more specific, for instance, if a variable suddenly becomes monomorphic (i.e., only takes on one single type) this will not trigger a deoptimization as it is still compatible with the compiled version. If the program were recompiled with that monomorphic variable in mind, performance could be improved. Once the program is running in an optimized form there are no means to notice such optimization opportunities. We propose the use of a sampling profiler to monitor native code without instrumentation. With the absence of instrumentation we incur no overhead when the profiler is inactive and can control the active profiler overhead by limiting the sampling rate. It also allows sampling at random points in the program and not just at predefined locations. Our implementation is R-hacek in the context of the optimizing R JIT-compiler for the R language. Based on the collected R-hacek profiles we are able to detect when the native code produced by R is specialized for stale type information and trigger recompilation for more specific type information. We show that sampling with our profiler adds an overhead of less than 3% in most cases and up to 9% in some cases when active. We also show that it reliably detects stale type information within milliseconds.

Posted by scg at 4 September 2020, 8:15 pm comment link

Modeling requirements artifacts in an IDE

Robert Niemiec. Modeling requirements artifacts in an IDE. Masters thesis, University of Bern, September 2020. Details.

Abstract

A plethora of artifacts are available for practitioners to document and communicate requirements. Artifacts evolve as the requirements engineering (RE) process advances. Therefore, using numerous artifacts with various granularities of details they hold, causes problems like manual translation efforts and inconsistencies while reflecting requirements changes across artifacts. Furthermore, employing distinct tools for creation and management of artifacts only leads to fragmented knowledge, and eventually, traceability issues. In this thesis, we propose an approach to manage requirements related artifacts inside a single platform, i.e., the integrated development environment (IDE). First, we compiled a list of artifacts from a selection of studies. We performed a classification of the selected artifacts to reason about their characteristics and usage patterns. Towards providing a practical tool to illustrate our approach, we modeled a selection of artifacts in the Pharo programming environment. It serves as a centralized platform for creating, viewing, and managing requirements through a combination of selected artifacts. We speculate that such an approach can bring requirements specification closer to their implementation. Additionally, it will facilitate and support collaboration among diverse stakeholders by preserving their knowledge within a single tool.

Posted by scg at 1 September 2020, 2:15 pm comment link

Modeling requirements artifacts in an IDE

Robert Niemiec. Modeling requirements artifacts in an IDE. Masters thesis, University of Bern, September 2020. Details.

Abstract

A plethora of artifacts are available for practitioners to document and communicate requirements. Artifacts evolve as the requirements engineering (RE) process advances. Therefore, using numerous artifacts with various granularities of details they hold, causes problems like manual translation efforts and inconsistencies while reflecting requirements changes across artifacts. Furthermore, employing distinct tools for creation and management of artifacts only leads to fragmented knowledge, and eventually, traceability issues. In this thesis, we propose an approach to manage requirements related artifacts inside a single platform, i.e., the integrated development environment (IDE). First, we compiled a list of artifacts from a selection of studies. We performed a classification of the selected artifacts to reason about their characteristics and usage patterns. Towards providing a practical tool to illustrate our approach, we modeled a selection of artifacts in the Pharo programming environment. It serves as a centralized platform for creating, viewing, and managing requirements through a combination of selected artifacts. We speculate that such an approach can bring requirements specification closer to their implementation. Additionally, it will facilitate and support collaboration among diverse stakeholders by preserving their knowledge within a single tool.

Posted by scg at 1 September 2020, 12:15 pm comment link

Profiling Cryptography Developers

Said Ali. Profiling Cryptography Developers. Bachelor’s thesis, University of Bern, August 2020. Details.

Abstract

Profiling developer expertise on the internet can provide valuable information for a multitude of applications such as recruiting. Studies have shown that it is feasible to track and profile developer activity on various platforms, (e.g., Stack Overflow and GitHub). Furthermore, tracking developer expertise can shed some light on whether developer activity on one platform is in line with the same developer’s activity on another platform. Recently, studies have shown that developers often rely on vulnerable cryptography code snippets, which are commonly found on Stack Overflow or GitHub repositories. Therefore, we are interested to investigate to what extent cryptography experts on Stack Overflow employ cryptography on their open-source projects on GitHub. To achieve our goal, we build a five-stage pipeline. (1) We extract 40 crypto-related tags from Stack Overflow. (2) We identify 1,000 users who have accepted answers (crypto accepted answers) in discussions where the selected crypto tags were used. (3) We automatically and manually scrape the selected users’ profiles on Stack Overflow and find 522 GitHub links (i.e., users). (4) The 522 users contribute to 23,633 repositories, in which 3.4% are crypto-related. (5) Finally, we extract the contributors (i.e., crypto contributors) of crypto files in the crypto-related repositories. We use statistical and visual analyses to observe whether different groups of developers differ in terms of crypto activities (crypto score, reputation, and number of crypto accepted answers) on Stack Overflow and the number of crypto file contributions on GitHub. Our findings reveal that crypto activities between crypto contributors (189) and users without crypto contributions (332) do not differ significantly. Moreover, crypto contributors with a high number of crypto activities on Stack Overflow do not have a higher number of crypto contributions on GitHub. Overall we are unable to find any correlation between crypto developer activity on Stack Overflow and crypto developer contribution on GitHub.

Posted by scg at 1 September 2020, 9:15 am comment link

Simple MLE Deployer — A simple (Web) Tool for exercising the Oracle Multilingual Engine

Julian Weyermann. Simple MLE Deployer — A simple (Web) Tool for exercising the Oracle Multilingual Engine. Bachelor’s thesis, University of Bern, July 2020. Details.

Abstract

Programming for relational database management systems with SQL and/or its various extensions and performing data analysis directly on the database is difficult. This comes from the fact that language support is limited. For example PL/SQL (in the case of Oracle) is not widely used and as a consequence there are not many libraries available for it. Oracle aims to resolve this issue with the Multilingual Engine (MLE for short) which is an extension of their relational database management system Oracle Database. MLE enables developers to use JavaScript or Python along with the associated libraries. However in its experimental state at version 0.3.0 of MLE the deployment of such JavaScript and Python code to the database is complicated and error-prone. As the support for JavaScript is more mature than the support for Python, the goal of this project is to simplify the deployment process of JavaScript source code to MLE, enabling developers to try out MLE without the need to know a lot about its internals. This is achieved by the creation of a small library which automates the deployment process almost completely. Alongside the library a website is available that interfaces with the library and further facilitates testing of MLE.

Posted by scg at 24 August 2020, 7:15 pm comment link
<< 1 2 3 4 5 6 7 8 9 10 >>
Last changed by admin on 21 April 2009