I've finished all of the changes that were discussed in the initial std.parallelism review. I know I said I needed more time than this, but honestly, I hit a best-case scenario. I had more time than I anticipated to work on it *and* the changes (especially fixing the exception handling issue) took less time than I anticipated.

I would say that the documentation has now improved "radically", like Andrei suggested it needs to. I want to thank Andrei and Michael Fortin for their extremely useful suggestions, and apologize for getting defensive at times. I felt compelled to defend my initial design in cases where I shouldn't have, due to a combination of time pressure and a misunderstanding of the review process. Andrei's suggestions in particular led to a tremendous improvement of the documentation and, to a lesser extent, an improvement of the API.

In addition to improving the documentation, I added Task.executeInNewThread() to allow Task to be useful without a TaskPool. (Should this have a less verbose name?) I also fixed some exception handling bugs, implemented exception chaining for exceptions thrown concurrently, and fixed some silliness with respect to seed values in reduce().

One thing Andrei mentioned that I'm really not sure about is what to do with TaskPool.join(). My example for it is still terrible, because I think it's an evolutionary artifact. It was useful in earlier designs that were never released and didn't have high-level data parallelism primitives. I never use it, don't have any good use cases for it and would be inclined to remove it entirely. Andrei seems to have some good use cases in mind, but he has not detailed any that I believe are reasonably implementable and I'm not sure whether they could be solved better using the higher-level data parallelism primitives.

As far as the vote, I know I asked for more time and to allow another module ahead of me, and of course I'll honor that. I'd like to un-git stash this review as soon as isemail is done, though. I anticipate a decent amount more suggestions now, given how major the changes have been, but most will probably be minor things like documentation clarifications and renaming stuff.

The new docs are at http://cis.jhu.edu/~dsimcha/d/phobos/std_parallelism.html .

Reply via email to