'. '


From APIDesign

Jump to: navigation, search

GraalVM Insight has been introduced in version 19.3 of GraalVM. It is a multipurpose, flexible tool that allows to dynamically apply complex insights gathering hooks on already deployed applications running at full speed. Insight further blurs the difference between various DevOps tasks - code once, apply your insights anytime, anywhere! See Insight.md.


Always Improving

Insight builds on the polyglot nature of GraalVM and its instrumentation capabilities. One can write Insights in any language - e.g. JavaScript, Ruby, etc. and apply them to any other language including also C, C++, Fortran, etc. The capabilities of Insight are improved with every GraalVM release. Version 20.0 for example improved embedding of Insight into custom applications. Version 20.1 added access to local variables of C and other Sulong based programs. Version 20.2 allows to modify local variables and write insight scripts in Python.

OpenTracing with Jaeger

Insight is obviously great fit for tracing. The close co-operation with Pavol Loffay from Jaeger - the industry leading implementation of OpenTelemetry solution - has resulted in a medium post about agent-like instrumentation for GraalVM.

Instrumentation vs. Insight

Instrumentation has always been part of Truffle system. However, prior to invention of Insight it was necessary to write your instruments in Java. Generating a Truffle-based language implementation compiled by native image may take a while. Recompiling everytime you want to change your instrument, slows you down significantly. That's not a problem for GraalVM Insight - all the hooks are written in dynamic languages and compiled on the fly into the appropriate user code. There is no limit on what these hooks can do - Insight are fully Turing complete code snippets capable to do everything the surrounding programming language can.

Post Mortem Debugging

A promising direction of research is usage of Insight as a harness for post-mortem debugging. Apply watchpoints dynamically, capture the state of execution whenever a program goes though them and replay the recorded stream in advanced tools like Chrome dev tools or NetBeans.

Personal tools