This changelog summarizes major changes between Truffle Tools versions.
- GR-40233: The interpretation of the
depth
parameter in Insight heap dumping was off by one and was applied to primitive values as well. This is now corrected to match the documentation.
- GR-37442: Added new options
--heap.cacheSize=<int>
and--heap.cacheReplacement=flush|lru
to enable memory cache in Heap Dumping via Insight. - GR-37442: Added new method
flush()
to heap dumping object to flush cached events to the heap dump file.
- Dumping JavaScript
Array
asObject[]
into the.hprof
file - HeapDump.newArray to start building an array
- GR-33316 Remove deprecated cpusampler APIs and CLIs
- GR-34745 Allow short-hand usage of the
--cpusampler
flag to enable and specify output. For example,--cpusampler=calltree
is equivalent to--cpusampler --cpusampler.Output=calltree
. NOTE: Since the flame graph output is unreadable in the terminal--cpusampler=flamegraph
is equivalent to--cpusampler --cpusampler.Output=flamegraph -cpusampler.OutputFile=flamegraph.svg
. - GR-34209 Added overload of
CPUSampler.takeSample
with a timeout. By default samples time out when the configured period is exceeded.
- Dumping JavaScript
Array
asObject[]
into the.hprof
file - HeapDump.newArray to start building an array
- Reimplemented CPUSampler to use the Truffle language safepoints thus deprecating several API functions.
- Added new option
--cpusampler.SampleContextInitialization
which includes code executed during context initialization in the general sampling profile instead of grouping it into a single entry. - Default CLI output of CPUSampler was simplified to not include compiled times.
- CPUSampler APIs to distingish compiled from interpreted samples were replaced by a more general API that supports an arbitrary number of compilation tiers.
- Added the --cpusampler.ShowTiers option that shows time spend in each optimization tier.
- Support for hash interoperability in Insight - no need to use
Truffle::Interop.hash_keys_as_members
anymore - Cooperative heap dumping when embedding Insight into Java applications
- Add an SVG flamegraph output format to the CPUSampler, use option
--cpusampler.OutputFormat=flamegraph
.
- Use
--heap.dump=/path/to/file/to/generate.hprof
to enable Heap Dumping via Insight - Insight object API provides access to
charIndex
,charLength
andcharEndIndex
--insight
option is no longer considered experimental- Use
ctx.iterateFrames
to access whole stack and its variables - Embedders can inject additional objects into Insight scripts
- GraalVM Insight Maven artifact is now
org.graalvm.tools:insight:20.3.0
- GraalVM Insight can intercept execution and modify return values
- GraalVM Insight can modify values of local variables
- Write GraalVM Insight scripts in Python
- GraalVM Insight can access local variables in C, C++ and other LLVM languages
- GraalVM Insight is the new name for the former T-Trace technology
- Access to source location (see
line
,column
, etc.) andsourceFilter
selector in Insight agent object API - Embedding Insight into own application is now easily done via Graal SDK
- Apply Insight scripts C/C++/Julia & co. code - e.g. hack into C with JavaScript!
- Better error handling - e.g. propagation of errors from Insight scripts to application code
- Hack your Insight scripts in R!
- Introducing GraalVM Insight - a multipurpose, flexible tool for instrumenting and monitoring applications at full speed.
- Added a CLI code coverage tool for truffle languages. Enabled with
--coverage
. See--help:tools
for more details.