p-org / PSharp

A framework for rapid development of reliable asynchronous software.
MIT License
390 stars 37 forks source link

Using P# for ClojureCLR and IronPython #442

Closed ivanserdyuk closed 4 years ago

ivanserdyuk commented 5 years ago

Hello.

I wonder if that is possible to have any usage of P# for .NET port of Clojure? The compiler is working for .NET Framework 4.x+ and is now ported to .NET Core 2.2:

https://github.com/clojure/clojure-clr . Not sure where exactly it might be used - but something could be assembled with the DLR. My guess is that some features of Clojure, implemented in C#, could be translated from P#.

https://github.com/IronLanguages/ironpython3 - this language is also depending on the DLR. It is known that is has no async/await features implemented, yet (Python 3.5). I was thinking about PLinq - but it is not clear whether it is supported for .NET Core 3.0 (surely for .NET Framework - and there is no support for Mono).

Another issue here is that CPython's API for external C lib. invocation would have anything related with IronPython's options for P/Invoke - so it might have sense to consider using both P and P#, for establishing consistency, within the same source code base.

This could be discussed on Gitter: https://gitter.im/IronLanguages/ironpython https://gitter.im/clojure-clr/community

Ivan

pdeligia commented 4 years ago

Closing this due to inactivity. You seem to be speculating if P# can be used in one of these projects, but I do not fully understand the goal (especially the part related to P/Invoke).

P# is a programming framework (provided as a C# library) for building (and systematically testing) reliable asynchronous software. To use P#, you have to write from scratch C# code using the P# actor-based state machine programming model and APIs (or rewrite existing code to use P# state machines). You can then deploy that code to production for efficient asynchronous execution, or systematically test it in-memory and on your local machine. Beyond that, what we provide is general purpose and doesn't confine you to some specific deployment environment (beyond .NET).

If I misunderstood, or you have some specific use-case in mind and want to discuss its viability please feel free to open a new issue.