Platform

zio.blocks.streams.Platform
See thePlatform companion object
trait Platform

Cross-platform abstraction for thread management in the streams module.

Platform-specific implementations are provided in:

  • jvm/src/main/scala/zio/blocks/streams/PlatformSpecific.scala (JVM)
  • js/src/main/scala/zio/blocks/streams/PlatformSpecific.scala (JS)

On the JVM, startVirtualThread launches a virtual thread (JDK 21+, detected via reflection) or a raw daemon thread as fallback. On Scala.js there is no concurrency, so supportsConcurrency is false and startVirtualThread throws UnsupportedOperationException.

createBufferedReader is a factory that returns a platform-appropriate buffered reader: concurrent on JVM, synchronous prefetch on JS.

Attributes

Companion
object
Source
Platform.scala
Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes
object Platform

Members list

Value members

Abstract methods

def createBufferedReaderFromReader[A](upstream: Reader[A], bufferSize: Int): Reader[A]

Returns a Reader that buffers elements produced by upstream into a bounded buffer of size bufferSize. On JVM, the producer runs on a separate virtual thread (concurrent). On JS, the reader prefetches elements synchronously.

Returns a Reader that buffers elements produced by upstream into a bounded buffer of size bufferSize. On JVM, the producer runs on a separate virtual thread (concurrent). On JS, the reader prefetches elements synchronously.

Attributes

Source
Platform.scala
def createMapParReaderFromReader[A, B](upstream: Reader[A], n: Int, f: A => B, bufferSize: Int, inType: JvmType, outType: JvmType): Reader[B]

Returns a Reader that applies f to each element of upstream using n concurrent workers. On JVM, workers run on virtual threads. On JS, degrades to sequential map.

Returns a Reader that applies f to each element of upstream using n concurrent workers. On JVM, workers run on virtual threads. On JS, degrades to sequential map.

Attributes

Source
Platform.scala
def createMergeReaderFromReader[A](outerReader: Reader[_], maxOpen: Int, bufferSize: Int, elemType: JvmType): Reader[A]

Returns a Reader that merges elements from N inner streams produced by outerReader, up to maxOpen concurrent inner streams at a time. On JVM, producers run on virtual threads. On JS, degrades to sequential flatMap.

Returns a Reader that merges elements from N inner streams produced by outerReader, up to maxOpen concurrent inner streams at a time. On JVM, producers run on virtual threads. On JS, degrades to sequential flatMap.

Attributes

Source
Platform.scala
def startVirtualThread(name: String, task: Runnable): Thread

Starts a new thread and runs task on it. Returns the started thread (which can be java.lang.Thread#joined). On JVM, uses a virtual thread (JDK 21+) if available, otherwise a raw daemon thread. On Scala.js, always throws UnsupportedOperationException.

Starts a new thread and runs task on it. Returns the started thread (which can be java.lang.Thread#joined). On JVM, uses a virtual thread (JDK 21+) if available, otherwise a raw daemon thread. On Scala.js, always throws UnsupportedOperationException.

Attributes

Source
Platform.scala
def supportsConcurrency: Boolean

Whether this platform supports true concurrent threads. true on JVM, false on Scala.js.

Whether this platform supports true concurrent threads. true on JVM, false on Scala.js.

Attributes

Source
Platform.scala

Concrete methods

final def createBufferedReader[A](upstream: SyncReader[A], bufferSize: Int): SyncReader[A]

Attributes

Source
Platform.scala
final def createMapParReader[A, B](upstream: SyncReader[A], n: Int, f: A => B, bufferSize: Int, inType: JvmType, outType: JvmType): SyncReader[B]

Attributes

Source
Platform.scala