From c6b5d3a8c9b2002575e10f0030c3476588ccb782 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 28 Jan 2012 22:50:28 -0400 Subject: [PATCH] response --- doc/todo/multi-thread_ikiwiki.mdwn | 23 +++++++++++++++++++++++ doc/todo/rewrite_ikiwiki_in_haskell.mdwn | 6 +----- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/doc/todo/multi-thread_ikiwiki.mdwn b/doc/todo/multi-thread_ikiwiki.mdwn index 0beea6fe2..358185a22 100644 --- a/doc/todo/multi-thread_ikiwiki.mdwn +++ b/doc/todo/multi-thread_ikiwiki.mdwn @@ -64,3 +64,26 @@ Disclaimer: I know nothing of the Perl approach to parallel processing. >>> I'm not really sure what the best solution is. Me, I profile my IkiWiki builds and try to tweak performance for them... but there's only so much I can do. >>> --[[KathrynAndersen]] + +>>>> IMHO, the best way to get a multithreaded ikiwiki is to rewrite it +>>>> in haskell, using as much pure code as possible. Many avenues +>>>> then would open up to taking advantage of haskell's ability to +>>>> parallize pure code. +>>>> +>>>> With that said, we already have some nice invariants that could be +>>>> used to parallelize page builds. In particular, we know that +>>>> page A never needs state built up while building page B, for any +>>>> pages A and B that don't have a dependency relationship -- and ikiwiki +>>>> tracks such dependency relationships, although not currently in a form +>>>> that makes it very easy (or fast..) to pick out such groups of +>>>> unrelated pages. +>>>> +>>>> OTOH, there are problems.. building page A can result in changes to +>>>> ikiwiki's state; building page B can result in other changes. All +>>>> such changes would have to be made thread-safely. And would the +>>>> resulting lock contention result in a program that ran any faster +>>>> once parallelized? +>>>> +>>>> Which is why [[rewrite_ikiwiki_in_haskell]], while pretty insane, is +>>>> something I keep thinking about. If only I had a spare year.. +>>>> --[[Joey]] diff --git a/doc/todo/rewrite_ikiwiki_in_haskell.mdwn b/doc/todo/rewrite_ikiwiki_in_haskell.mdwn index 48ed744b1..e48765b0e 100644 --- a/doc/todo/rewrite_ikiwiki_in_haskell.mdwn +++ b/doc/todo/rewrite_ikiwiki_in_haskell.mdwn @@ -62,8 +62,4 @@ Some other things to be scared about: a bunch of haskell libraries. OTOH, it might be possible to build a static binary at home and upload it, thus avoiding a messy installation procedure entirely. -* I can barely code in haskell yet. I'm probably about 100x faster at - programming in perl. I need to get some more practical experience before - I´m fast and seasoned enough in haskell to attempt such a project. - (And so far, progress at learning has been slow and I have not managed - to write anything serious in haskell.) --[[Joey]] + --[[Joey]] -- 2.32.0.93.g670b81a890