Insight
From APIDesign
Line 1: | Line 1: | ||
[[GraalVM]] [[Insight]] has been introduced in version 19.3 of [[GraalVM]]. It is a multipurpose, flexible tool that allows to dynamically apply complex [[insight]]s 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 [https://github.com/oracle/graal/blob/master/tools/docs/Insight.md Insight.md]. | [[GraalVM]] [[Insight]] has been introduced in version 19.3 of [[GraalVM]]. It is a multipurpose, flexible tool that allows to dynamically apply complex [[insight]]s 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 [https://github.com/oracle/graal/blob/master/tools/docs/Insight.md Insight.md]. | ||
- | [[Insight]] builds on the [[polyglot]] nature of [[GraalVM]]. One can write [[Insight]]s in any language - e.g. [[JavaScript]], [[Ruby]], etc. and apply them to any other language including also [[C]], [[C++]], [[Fortran]], etc. | + | [[Insight]] builds on the [[polyglot]] nature of [[GraalVM]]. One can write [[Insight]]s 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]]<!-- and also Java -->. |
- | + | ||
- | 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]]<!-- and also Java -->. | + | |
[[Insight]] is obviously good 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 [https://medium.com/jaegertracing/t-trace-agent-like-instrumentation-for-graalvm-d8b79b755e71 agent-like instrumentation for GraalVM]. | [[Insight]] is obviously good 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 [https://medium.com/jaegertracing/t-trace-agent-like-instrumentation-for-graalvm-d8b79b755e71 agent-like instrumentation for GraalVM]. |
Revision as of 05:22, 11 July 2020
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.
Insight builds on the polyglot nature of GraalVM. 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.
Insight is obviously good 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 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 language and compiled on the fly into the appropriate user code locations. 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.
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.