3 ms·
I don't understand why something like this would need a separate language. Switching languages means starting over in many ways with regards to tools libraries
by BubRoss 6y ago
I don't understand why something like this would need a separate language. Switching languages means starting over in many ways with regards to tools libraries and semantics. A graph of tasks can be made with a cdecl library.
- chrisseaton 6y agoHave you read Boehm's paper 'Threads Cannot be Implemented as a Library'? It's the same reason. Your dataflow semantics need to be part of the language semantics, otherwise they're bound to be loosely defined and even more loosely enforced.
- BubRoss 6y agoThat's an assertion, but not anything to back it up. First, threads have been implemented as libraries many times. Second, if checks need to happen theg can happen at debug run time if they can't happen at compile time. I don't know what specifically has to be integrated into a language here that makes throwing away the enormous amount already built in other languages.
- deleted 6y ago[deleted]
- chrisseaton 6y agoThese points are all clearly addressed in the paper I referenced. > That's an assertion, but not anything to back it up. Yes it's an opinion on style, not a falsifiable claim. > First, threads have been implemented as libraries many times. The title isn't intended to be taken quite so literally. The author explains why they think these don't work correctly. > Second, if checks need to happen theg can happen at debug run time if they can't happen at compile time. But languages don't have mechanisms to implement these kind of checks. > I don't know what specifically has to be integrated into a language here that makes throwing away the enormous amount already built in other languages. You're mistaken. It's not 'integrated into', it's 'taken out'. Libraries let you add things, but to design a model for parallelism you generally want to take things away. You want to take away the ability to do things outside the model's rules.
- BubRoss 6y agoWhat are those checks and what things need to be taken away that have to be done at the language level? Why aren't you giving specific examples?
- _bxg1 6y agoAn often-overlooked quality of any new language is the set of things that you can't do in it. Some features can only be accomplished when certain negative guarantees can be made about programs. And it's really hard to implement negative guarantees as a library.
- lightsighter 6y agoIt's worth noting that Regent is the language that implements the Legion programming model. The Legion runtime system is just a C++ library with bindings for C, Fortran, Python, Terra, and Lua. Writing Regent code is much higher productivity than writing to the C++ Legion library directly, but if you want to you can drop down and write your tasks in any of the other languages that Legion supports. You can even mix and match tasks written in different languages.