Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.

Matthias Grimmer

dblp:133/8749 · DBLP profile ↗
← Back
5ranked-venue papers
2as first author
0since 2021 · last 2018
0000-0003-4295-1579ORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 4 · 2 first-authorSystems, architecture and hardware · 2

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
4 papers
Runtime systems and virtual machines · 44% Program analysis · 24% Programming languages and type systems · 22%
Network and information security
1 paper
Systems and software security · 100%
Computer architecture, parallel and distributed computing, and storage systems
1 paper
Memory systems · 100%

Topics — the 15 heaviest of 16, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Systems and software security › memory safety
buffer overflow
0.312018
Sulong, and Thanks for All the Bugs: Finding Errors in C Programs by Abstracting from the Native Execution Model · ASPLOS 2018
Systems and software security
memory safety
0.312018
Sulong, and Thanks for All the Bugs: Finding Errors in C Programs by Abstracting from the Native Execution Model · ASPLOS 2018
Program analysis
dynamic analysis
0.312018
Sulong, and Thanks for All the Bugs: Finding Errors in C Programs by Abstracting from the Native Execution Model · ASPLOS 2018
Runtime systems and virtual machines
dynamic compilation
0.312018
Cross-Language Interoperability in a Multi-Language Runtime · ACM Trans. Program. Lang. Syst. 2018
Programming languages and type systems › interoperability
language interoperability
0.312018
Cross-Language Interoperability in a Multi-Language Runtime · ACM Trans. Program. Lang. Syst. 2018
Runtime systems and virtual machines
managed runtime
0.312018
Analytics with smart arrays: adaptive and efficient language-independent data · EuroSys 2018
Program analysis › dynamic analysis
memory error detection
0.312018
Sulong, and Thanks for All the Bugs: Finding Errors in C Programs by Abstracting from the Native Execution Model · ASPLOS 2018
Memory systems
memory management
0.312018
Analytics with smart arrays: adaptive and efficient language-independent data · EuroSys 2018
Memory systems › non-uniform memory access
NUMA data placement
0.312018
Analytics with smart arrays: adaptive and efficient language-independent data · EuroSys 2018
Runtime systems and virtual machines › dynamic language implementation
dynamic language runtime
0.312017
Practical partial evaluation for high-performance dynamic language runtimes · PLDI 2017
Runtime systems and virtual machines › dynamic compilation
just-in-time compilation
0.312017
Practical partial evaluation for high-performance dynamic language runtimes · PLDI 2017
Compilers and program optimization
partial evaluation
0.312017
Practical partial evaluation for high-performance dynamic language runtimes · PLDI 2017
Programming languages and type systems
language implementation
0.112018
Cross-Language Interoperability in a Multi-Language Runtime · ACM Trans. Program. Lang. Syst. 2018
Programming languages and type systems
language semantics
0.112018
Sulong, and Thanks for All the Bugs: Finding Errors in C Programs by Abstracting from the Native Execution Model · ASPLOS 2018
Programming languages and type systems
dynamic languages
0.112017
Practical partial evaluation for high-performance dynamic language runtimes · PLDI 2017

Methods — techniques the papers use, named apart from their topics

bit compression · 1.0adaptive data placement · 1.0intermediate representation · 0.3generic access · 0.3dynamic compilation · 0.3speculation · 0.3profiling · 0.3partial evaluation · 0.3
YearPublicationVenuePosition
2018 Sulong, and Thanks for All the Bugs: Finding Errors in C Programs by Abstracting from the Native Execution Model
abstract
In C, memory errors, such as buffer overflows, are among the most dangerous software errors; as we show, they are still on the rise. Current dynamic bug-finding tools that try to detect such errors are based on the low-level execution model of the underlying machine. They insert additional checks in an ad-hoc fashion, which makes them prone to omitting checks for corner cases. To address this, we devised a novel approach to finding bugs during the execution of a program. At the core of this approach is an interpreter written in a high-level language that performs automatic checks (such as bounds, NULL, and type checks). By mapping data structures in C to those of the high-level language, accesses are automatically checked and bugs discovered. We have implemented this approach and show that our tool (called Safe Sulong) can find bugs that state-of-the-art tools overlook, such as out-of-bounds accesses to the main function arguments.
Manuel Rigger, Roland Schatz, René Mayrhofer, Matthias Grimmer, Hanspeter Mössenböck
ASPLOS4
2018 Analytics with smart arrays: adaptive and efficient language-independent data
abstract
This paper introduces smart arrays, an abstraction for providing adaptive and efficient language-independent data storage. Their smart functionalities include NUMA-aware data placement across sockets and bit compression. We show how our single C++ implementation can be used efficiently from both native C++ and compiled Java code. We experimentally evaluate smart arrays on a diverse set of C++ and Java analytics workloads. Further, we show how their smart functionalities affect performance and lead to differences in hardware resource demands on multicore machines, motivating the need for adaptivity. We observe that smart arrays can significantly decrease the memory space requirements of analytics workloads, and improve their performance by up to 4x. Smart arrays are the first step towards general smart collections with various smart functionalities that enable the consumption of hardware resources to be traded-off against one another.
Iraklis Psaroudakis, Stefan Kaestle, Matthias Grimmer, Jean-Pierre Lozi, Tim Harris 0001
EuroSys3
2018 Cross-Language Interoperability in a Multi-Language Runtime
abstract
In large-scale software applications, programmers often combine different programming languages because this allows them to use the most suitable language for a given problem, to gradually migrate existing projects from one language to another, or to reuse existing source code. However, different programming languages have fundamentally different implementations, which are hard to combine. The composition of language implementations often results in complex interfaces between languages, insufficient flexibility, or poor performance. We propose TruffleVM, a virtual machine (VM) that can execute different programming languages and is able to compose them in a seamless way. TruffleVM supports dynamically-typed languages (e.g., JavaScript and Ruby) as well as statically typed low-level languages (e.g., C). It consists of individual language implementations, which translate source code to an intermediate representation that is executed by a shared VM. TruffleVM composes these different language implementations via generic access . Generic access is a language-agnostic mechanism that language implementations use to access foreign data or call foreign functions. It features language-agnostic messages that the TruffleVM resolves to efficient foreign-language-specific operations at runtime. Generic access supports multiple languages, enables an efficient multi-language development, and ensures high performance. We evaluate generic access with two case studies. The first one explains the transparent composition of JavaScript, Ruby, and C. The second one shows an implementation of the C extensions application programming interface (API) for Ruby. We show that generic access guarantees good runtime performance. It avoids conversion or marshalling of foreign objects at the language boundary and allows the dynamic compiler to perform its optimizations across language boundaries.
Matthias Grimmer, Roland Schatz, Chris Seaton, Thomas Würthinger, Mikel Luján
ACM Trans. Program. Lang. Syst.1
2017 Practical partial evaluation for high-performance dynamic language runtimes
abstract
Most high-performance dynamic language virtual machines duplicate language semantics in the interpreter, compiler, and runtime system. This violates the principle to not repeat yourself. In contrast, we define languages solely by writing an interpreter. The interpreter performs specializations, e.g., augments the interpreted program with type information and profiling information. Compiled code is derived automatically using partial evaluation while incorporating these specializations. This makes partial evaluation practical in the context of dynamic languages: It reduces the size of the compiled code while still compiling all parts of an operation that are relevant for a particular program. When a speculation fails, execution transfers back to the interpreter, the program re-specializes in the interpreter, and later partial evaluation again transforms the new state of the interpreter to compiled code. We evaluate our approach by comparing our implementations of JavaScript, Ruby, and R with best-in-class specialized production implementations. Our general-purpose compilation system is competitive with production systems even when they have been heavily optimized for the one language they support. For our set of benchmarks, our speedup relative to the V8 JavaScript VM is 0.83x, relative to JRuby is 3.8x, and relative to GNU R is 5x.
Thomas Würthinger, Christian Wimmer, Christian Humer, Andreas Wöß, Lukas Stadler, Chris Seaton, Gilles Duboscq, Doug Simon, Matthias Grimmer
PLDI9
2015 High-performance cross-language interoperability in a multi-language runtime
abstract
Programmers combine different programming languages because it allows them to use the most suitable language for a given problem, to gradually migrate existing projects from one language to another, or to reuse existing source code. However, existing cross-language mechanisms suffer from complex interfaces, insufficient flexibility, or poor performance. We present the TruffleVM, a multi-language runtime that allows composing different language implementations in a seamless way. It reduces the amount of required boiler-plate code to a minimum by allowing programmers to access foreign functions or objects by using the notation of the host language. We compose language implementations that translate source code to an intermediate representation (IR), which is executed on top of a shared runtime system. Language implementations use language-independent messages that the runtime resolves at their first execution by transforming them to efficient foreign-language-specific operations. The TruffleVM avoids conversion or marshaling of foreign objects at the language boundary and allows the dynamic compiler to perform its optimizations across language boundaries, which guarantees high performance. This paper presents an implementation of our ideas based on the Truffle system and its guest language implementations JavaScript, Ruby, and C.
Matthias Grimmer, Chris Seaton, Roland Schatz, Thomas Würthinger, Hanspeter Mössenböck
DLS1