Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Future in V #11

Open
dumblob opened this issue Feb 25, 2021 · 1 comment
Open

Future in V #11

dumblob opened this issue Feb 25, 2021 · 1 comment

Comments

@dumblob
Copy link

dumblob commented Feb 25, 2021

I've just accidentally found this lib and I'm quite impressed. It seems to implement a sweet spot between CSP, real os-level threads, work stealing (Weave beats by a significant margin in all tests even hand optimized Intel libraries; see also nim-lang/RFCs#160 ), channel API, etc. quite similarly to what I envisined in vlang/v#1868 .

I would have one question:

  1. Would you be willing to integrate (or help with integration) libcsp (or its parts) into V?

V is a new alpha-state language striving for efficient parallelism & concurrency support. V can be viewed as transpiler to C and thus provides a way to do the "static analysis libcsp is doing during multistaged compilation" in a more straightforward way.

Currently V maps all it's "go routines" 1:1 to os-level threads, but a more efficient implementation (utilizing CSP per os-thread but with preemptive guarantee, work stealing with Leapfrogging, dynamic adjustment of number of os-level threads due to power management on mobile devices, etc.) is needed.

From my point of view the biggest investment in libcsp would be to support also Windows, MacOS, Android, etc. along with ARM, POWER, and other than x86 architectures (ideally should be platform-agnostic with specialized variants for certain architectures - mainly x86 which libcsp already does 😉).

Maybe @UweKrueger could also comment as he's more up to date than me.

@JalonSolov
Copy link

Please don't characterize V as a "transpiler to C". Yes, that is the current default. However, it is one of only 3 types of backend now (with more being considered), and direct x64 output will become the default once it matures.

Whatever is implemented in V needs to work across all the backends as far as possible.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants