I've just watched "Philip Laureano - I Can't Believe It's Not Roslyn" video (
http://vimeo.com/43612919) and I am thrilled. Really!! Meta programming in .NET is what I needed since I started using WPF. So after watching the move I was so excited.
But I didn't want to learn new language as I'm using C# at work. And I started investigating Roslyn. But I was using VS 2012 RC and liked new await/async language features. Roslyn doesn't implement them yet. Nemerle too (not that await/async like .NET's 4.5 feature - Nemerle's concurrency.n uses Threads which is very different - and in my opinion less flexible/efficient - correct me if I'm wrong). But Nemerle is ready too use. But not in VS 2012. So I thought maybe use Roslyn and I won't have to learn new language. Or maybe I will use any existing C# parser and do C# compile-time transformations myself. But after trying to use syntax unknown for VS and I saw that it would work well without integration with editor and intellisense - too much trouble. I was torn - none of the solutions was ideal. I wanted to give a try to Roslyn, but then it refused installing :) Grrrr....
So here I am. Maybe that's better. Maybe I will appreciate another Nemerle's features. I will give it a try at least. Do I have any choice? :) It's the first not mainstream language that attracted my attention. As you see it can give me the fastest access to metaprogramming in .NET. I hope that the integration with VS 2012 is planned in a near future....
As I said one reason of my indecision was async/await functionality. I wanted it all :) And hey! Roslyn couldn't give me it now. But Nemerle - why not? It's true it is targetting only .NET 4.0 now. But there is Microsoft's AsyncTargettingPack for .NET 4.0. It requires VS2012 compiler, true. But Nemerle is an extensible compiler. And compiled async code uses standard .NET 4.0 features. There is state-machine struct underneath. Rest is included in AsyncTargettingPack dll.
And now my question is:
Is anyone working on this async/await featue compatible with .NET 4.5 async/await for Nemerle?
Because if not, I would like to try myself. It sounds so interesting that I cannot resist. To make it clear - I'm not saying that I will accomplish anything!! I even don't know the basics of the language, yet. First I need to learn it. And I can do it only in my free time (which is very short). And it is not a trivial macro to write. Especially when it takes loops and try/catch statements into account. Maybe I will give up in a middle. Who knows. But I know that if its done it will not need any change when migrating to .NET 4.5. And it can be compatible with other .NET's async code.
Is there any interest for that kind of functionality?
Can I count on your help in difficult situations? :)
I think the macro possible. But I don't know the language yet. Do you know any obstacles? For example - will I have any troubles with generating private structs nested in classes, attributes for methods, goto's and labels for state machine?
I don't know Nemerle design goals. Is it the preffered way to implement it as macro? How the future versions of Nemerle and Nemerle's C# compiler (that is a big question for me) will handle this async/await functionality? Will the code be shared or different for both compilers? Will it be a macro or what?
Ok. But before anything else I'm going to start learning the basics :))
Best Regards,
Marek Gibek