Table of Contents
Fetching ...

concurrentKanren: miniKanren for parallel execution

Sjoerd Dost

TL;DR

ConcurrentKanren tackles speeding up miniKanren by exploiting implicit parallelism on multi-core CPUs. The authors implement a Go-based runtime with an actor-inspired model and introduce $disj o conc$ for generalized concurrent disjunction and $conj o sce$ for short-circuiting conjunction, illustrating the approach with a $ (run* (x) (disj (equalo x 5) (equalo x 6))) $ example yielding $x=5$ and $x=6$. They benchmark two implementations against a single-threaded baseline and faster-minikanren, showing core scaling with cores and competitive performance. The work demonstrates feasibility of language-agnostic concurrency for miniKanren and points toward distributed extensions future work.

Abstract

Concurrent logic programming predates miniKanren, but concurrent implementations of miniKanren have remained largely unexplored. In this work we present a parallel implementation of miniKanren in Go, demonstrating its feasibility and potential for performance improvements. Our approach leverages implicit parallelism allowing legacy programs to benefit from parallel execution. We discuss implementation strategies and evaluate the impact of parallelism, laying groundwork for future language-agnostic models.

concurrentKanren: miniKanren for parallel execution

TL;DR

ConcurrentKanren tackles speeding up miniKanren by exploiting implicit parallelism on multi-core CPUs. The authors implement a Go-based runtime with an actor-inspired model and introduce for generalized concurrent disjunction and for short-circuiting conjunction, illustrating the approach with a example yielding and . They benchmark two implementations against a single-threaded baseline and faster-minikanren, showing core scaling with cores and competitive performance. The work demonstrates feasibility of language-agnostic concurrency for miniKanren and points toward distributed extensions future work.

Abstract

Concurrent logic programming predates miniKanren, but concurrent implementations of miniKanren have remained largely unexplored. In this work we present a parallel implementation of miniKanren in Go, demonstrating its feasibility and potential for performance improvements. Our approach leverages implicit parallelism allowing legacy programs to benefit from parallel execution. We discuss implementation strategies and evaluate the impact of parallelism, laying groundwork for future language-agnostic models.

Paper Structure

This paper contains 23 sections, 1 figure, 1 table.

Figures (1)

  • Figure 1: Benchmark plots of message-based and worker pool implementations