hpi-swa-lab / native-image-visualizations Goto Github PK
View Code? Open in Web Editor NEWVisualizing GraalVM Native Images for Exploring Ways of Reducing File Sizes
License: MIT License
Visualizing GraalVM Native Images for Exploring Ways of Reducing File Sizes
License: MIT License
The causality graph analysis program uses typeflow saturation for two reasons:
Previously, upon saturation, there would be a conceptual edge created from the AllInstantiated-typeflow to the saturated one.
However, this is not correct and may make the result indeterministic, depending on the visiting order of nodes: A typeflow may saturate with types not contained in the AllInstantiated-typeflow, which then get lost due to stopped propagation. This may occur because the model deviates a bit from the original analysis with regards to saturation rules.
We thought about integrating the results of the analysis process inside an IDE. For this we'd need to set up a language server. In order to do so, we need to do some background research.
Goals:
depends on #46
On November 2nd we brainstormed data and visualization parameters for some of the visualizations. These should be noted down in the wiki so that we don't lose track of them.
Here the parameters we gathered last time:
Some code sites where types get marked reachable by the analysis are yet ignored wrt. the Causality Export:
AnalysisUniverse.lookupAllowUnresolved()
ImageHeapScanner
and ReflectionDataBuilder
One Problem that we want to solve is to display which parts of the native image belong to which package/class. For this we want to explore different visualizations. The goal of this issue is to generate 10 new ideas on how to do that.
Avoid looking at visualizations specifically made for this. That would limit our creative output
depends on #56
On November 16th we will present us / our project in front of the chair. This presentation needs to be prepared
Parts of the presentation:
One Problem that we want to solve is to display which parts of the code talks to which other part. For this we want to explore different visualizations. The goal of this issue is to generate 10 new ideas on how to do that.
Idea: Could be a little blink for the added item like seen here
https://www.w3docs.com/tools/code-editor/13723
We decided to use a micronaut app as benchmark for out tools. Therefore we should make sure that it works on each of our development setups.
Steps:
keywords:
takes two nodes, outputs a node
So far we did not document any issues here but only on telegram. That can lead to missing some stuff. Therefore all issues written on telegram should be transformed into issues
When cutting a node, highlight what's removed
or split the tree in 2:
As of now, we haven't really used color to convey something meaningful. It would be nice to have different options that can be switch during the exploration.
Jens want to have the sizes be measured differently:
And this marking/flagging/highlighting is kept across visualizations
Subtasks:
Currently, all visualizations are stand-alone. It would be nice to have some way to switch the visualization while maintaining the context.
Currently, the graph resulting from the Causality Export reflects the results of -H:+InlineBeforeAnalysis
(which is enabled by default).
This is problematic:
Image methods A, B, C which form a call chain A -> B -> C. In reality, the reachability of C is dependent on the existence of B (given that there are no other ingoing edges to C).
However, due to inlining, our causality graph model contains a direct edge A -> C. According to it, removing B would have no effect.
In projects where the main-Method is trivial (i.e. only calling a framework entry routine), such as Micronaut or Spring apps, It gets inlined into JavaMainWrapper.runCore0(...), while still existing due to a reflection registration. Then, successive purge analysis yields a minimal cut-weight instead of the expected tremendous one.
or things like highlighting, selection, etc
Die müssen per default erstmal nicht angezeigt werden, aber der Nutzer muss die Möglichkeit haben die (performant) einzusehen
At one point in time we will build a system and have tests for it. These test should be executed automatically with a CI job.
The heap assignment tracing agent aims to trace and expose all side effects happening in class initializers at image build time that are relevant to the analysis.
Yet one is missing: The code executed by class initializers is responsible for the initialization of all other classes used by its code.
Currently, this relation is only recorded for classes that were not initialized until required by a running class initializer. Their initialization is then accounted only to the class initializer that (possibly randomly) first used them.
In order to get a correct causality export, during the run of a particular class initializer we'd have to track each action that would trigger the initialization of another class, irrespective of the fact that it may also be triggered by other reasons. That is:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.