response
authorJoey Hess <joey@kitenet.net>
Sun, 29 Jan 2012 02:50:28 +0000 (22:50 -0400)
committerJoey Hess <joey@kitenet.net>
Sun, 29 Jan 2012 02:50:28 +0000 (22:50 -0400)
doc/todo/multi-thread_ikiwiki.mdwn
doc/todo/rewrite_ikiwiki_in_haskell.mdwn

index 0beea6fe23356e007d2de5d9a4beecb3335fec35..358185a22675ce25240f9aa2249133e9d261714c 100644 (file)
@@ -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]]
index 48ed744b165c045aee15635de6465ea05f9ef648..e48765b0e14802bcef48b8dc33e7ce82607c569a 100644 (file)
@@ -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]]