4 ms·
I'm late to this conversation, but thanks for this information. I'm still trying to understand the role of the source language in AOT compiling - is it actuall
by sixbrx 11y ago
I'm late to this conversation, but thanks for this information. I'm still trying to understand the role of the source language in AOT compiling - is it actually looking at the source language and not the IL bytecode? If so, is that because IL is too low level or something similar, it would prefer to work at AST level?
- MichaelGG 11y agoI wrote to them and asked. Their response is: "...we only support C# and VB in a technical sense. You've picked up on one reason why[1]; we do IL scanning and rewriting and look for various patterns." They do use the normal, unmodified csc compiler to generate the IL[2]. But it sounds like they are partially decompiling the IL to get C#-level semantics? There's also this comment[3] regarding expression trees: "the JIT runtime does emit those as dynamic code, but .NET Native can interpret those" So I'm guessing they have to look through your source and figure out when you exec one and then do it head of time? I'm not sure how that can be a general solution, as you can construct arbitrary expression trees at runtime, even using external input. Maybe that part doesn't work, but normal programs don't do that? I do wish they were a bit more open and clear on all this. (And wow, the public messaging is really confusing other developers. I've had a customer come super excited because .NET Native would obviously cut his server requirements by a nice chunk... had to explain it wouldn't work at all in his scenario.) 1: I wrote asking "Are dependencies being taken on specific quirks of the C# compiler? Like, I dunno, how certain members are named, or the way C# creates Expression Trees" 2: http://blogs.msdn.com/b/dotnet/archive/2014/05/09/the-net-native-tool-chain.aspx http://blogs.msdn.com/b/dotnet/archive/2014/05/09/the-net-na... 3: http://blogs.msdn.com/b/dotnet/archive/2014/05/20/net-native-deep-dive-dynamic-features-in-static-code.aspx http://blogs.msdn.com/b/dotnet/archive/2014/05/20/net-native...