jagotu / bacil Goto Github PK
View Code? Open in Web Editor NEWAn experimental interpreter for .NET CIL binaries for GraalVM
License: MIT License
An experimental interpreter for .NET CIL binaries for GraalVM
License: MIT License
I know this project is nowhere near the point of Java <-> C# interop yet, but I can't get it off my mind.
What will calling C# code from Java code look like? I'm not familiar with how namespaces, statics, etc. work in .NET libraries. I want to assume it can't be similar to JS, because unlike in JS, in C# not every identifier is a value, but I haven't yet dived as deep into Truffle as I would like.
Hi @jagotu !
Your project looks amazing :)
Any update??
What kinds of programs can it currently run?
I know it's a bit early but your project would get public attention if you published interesting benchmarks.
The instructions mention HelloWorld.dll
, but it is not included in the build ?
While checking the reason for lower performance of some benchmarks, I noticed that if loops remain after TruffleTier (which they seem to do as TruffleTier just peels the bytecode loop), no later tiers unroll them even though form the graphs should fullfill rules for the LoopFullUnrollPhase
that runs in all three of these tiers. This prevents other optimizations and constant folding that could be achieved by unrolling the loop.
For example, this procedure:
static int simpletest()
{
int result = 0;
for (int i = 0; i < 5; i++)
{
result += i;
}
return result;
}
Copmiles to this graph after TruffleTier:
And the LoopNode
survives even after low tier:
I've tried to debug the LoopFullUnrollPhase
and it seems the detection of counted loops happens only once, when the loop is still too complex to be recognized as counted. It could very well be a bug/imperfection in truffle/graal itself, but I don't currently have the time to investigate.
Fixing this and making sure that the loops are unrolled should provide a significant boost to the slowest of benchmarks, like nbody
, which loops over an array of 6 plantes and none of the virtual calls can be constantized due to the lack of unrolling.
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.