Safety and Runtime ModelParallel Collection Work
Blorp by Example

Parallel Collection Work

List.parallel splits pure collection transformations across worker threads.

Pure Callbacks

The callback is pure, which prevents shared mutable state and I/O inside the parallel work.

parallel-callback.brp
items.parallel(
    pure func(chunk): chunk.map(pure func(x): x * 2)
)

List.parallel()

parallel hands the callback a ParallelList view with parallel-safe map, filter, and filter_map.

parallel.brp
items.parallel(
    pure func(chunk): chunk.map(pure func(x): x * x)
)

When It Helps

Use it for expensive per-element work, not tiny transforms where scheduling costs dominate.

expensive.brp
pure func expensive(n: Int) -> Int:
    n * n + n

Collecting Results

parallel returns an ordinary List after the scoped work completes.

collected.brp
results: List[Int] = transform(items)

Example

parallel-chunks.brp
pure func expensive(n: Int) -> Int:
	n * n + n


pure func transform(items: List[Int]) -> List[Int]:
	items.parallel(pure func(chunk: ParallelList[Int]):
		chunk.map(pure func(n): expensive(n))
	)


pure func sum(items: List[Int]) -> Int:
	var total: Int = 0
	for item in items:
		total += item
	total


func main(args: List[String]) -> Void:
	print(sum(transform([1, 2, 3, 4])).to_string())

Try It

terminal
blorp run parallel-chunks.brp