Closed
Description
We have attempted to gain parallelism in Servo, but in all cases where we operate over a shared data structure, this requires a significant amount of unsafe code. We'd like to support:
- Basic data-parallel operations
- More complicated traversals (top-down, bottom-up, weighted-edge priority, topological, etc.) of either DAGs or graphs
Note that the key here is being able to define kernels of computation that work on the elements stored in these structures that ensure at least the illusion of ownership transfer between the shared data structure and kernel function and back is maintained.