concurrentKanren: miniKanren for parallel execution
summary
concurrentKanren implements miniKanren in Golang and runs the search tree as actors, with a naive goroutine-per-node messagebased model that collapses under overhead and a bounded worker pool that uses task queues and matches the performance of faster-miniKanren on the tested queries. It preserves logical result order, implements immutable AVL trees with structure sharing for cheap thread-safe substitutions, adds generalized concurrent disjunction and conjunction shortcircuiting, and shows promising but workload-dependent speedups.
AI-written summary · about
chapters (15)
- 0:00Introduction
- 1:27Motivation for parallel execution
- 2:52Project goals
- 5:00Disjunction challenges
- 7:09Actor model in Go
- 10:18Disjunction with concurrency
- 12:27Handling delays
- 13:51Parent-child actor comms
- 15:40AVL trees for substitutions
- 16:42Worker pool for scalability
- 17:26Generalized concurrent disjunction
- 18:30Performance evaluation
- 21:00Optimization opportunities
- 22:02Q&A
- 24:53Closing remarks
