awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·
js-csp avatar

js-csp/js-csp

0
View on GitHub↗
2,322 stars·119 forks·JavaScript·7 views

Js Csp

Js-csp is a concurrency library that implements communicating sequential processes with channels and generator-based routines for asynchronous programming in JavaScript. It provides a framework for building data processing pipelines and managing concurrent workflows, bringing Go-style channels and process coordination primitives to applications.

The library coordinates message passing through buffered channels, stream mixing, multi-channel selection, and pub-sub broadcasting. Communication pathways support unbuffered rendezvous, fixed buffers, sliding windows, and dropping overflow. Operations include non-blocking puts and takes with status indicators, generator-based cooperative multitasking, channel lifecycle management, and concurrent routine spawning.

Additional capabilities cover data processing pipelines, transducer-based stream transformations, value reduction, and stream error handling. Data routing and filtering utilities support conditional splitting, tap broadcasting, and topic-based message dispatch, alongside channel management utilities for continuous piping, automatic collection population, and multi-channel merging.

Features

  • Asynchronous JavaScript Programming - Enables writing concurrent JavaScript code using cooperative processes and channels instead of complex callbacks.
  • Channel-Based Concurrency - Enables configuring communication pathways between concurrent processes with options for unbuffered synchronization, fixed buffers, sliding windows, and dropping overflow.
  • Channel Output Buffers - Coordinates message passing between concurrent processes using unbuffered rendezvous points or configurable fixed, sliding, and dropping memory buffers.
  • Sliding and Dropping Buffer Strategies - Sets up buffered communication pathways between asynchronous routines with strategies for sliding windows and overflow handling.
  • Data Processing Pipelines - Moves and transforms values between channels using synchronous or asynchronous processing steps with robust error handling.
  • Transducers - Applies mapping, filtering, and partitioning transformations directly onto channel streams without creating intermediate arrays.
  • Channel Mixing - Combines multiple input channels into a single output channel with fine-grained control to mute, pause, or solo streams.
  • Asynchronous Workflow Coordination - Executes concurrent tasks asynchronously using cooperative processes that communicate through shared channels rather than traditional callbacks or locks.
  • Tapped Broadcasting Channels - Distributes every item from a source channel to multiple tapped destination channels simultaneously.
  • Topic-Based Messaging - Publishes values to a central hub and routes them to specific subscriber channels based on extracted topics.
  • Asynchronous Stream Processing Frameworks - Provides an asynchronous framework for building data processing pipelines and managing concurrent workflows.
  • Concurrency Libraries - Implements communicating sequential processes with channels and generator-based routines for asynchronous programming.
  • Cooperative Multitasking - Pauses and resumes asynchronous execution routines using JavaScript generator functions to coordinate cooperative multitasking without blocking the thread.
  • Go-Style Channel Porting Libraries - Brings Go-style channels and process coordination primitives to JavaScript applications.
  • Channel Splitting - Divides a single source channel into two separate channels based on a conditional test function.
  • Goroutine-Based Concurrency - Facilitates launching generator-based asynchronous routines that coordinate through channel yields and return result channels upon completion.
  • Stream Merging - Combines, splits, and broadcasts JavaScript data streams from multiple sources into unified or topic-based subscriber channels.
  • Multi-Channel Selection - Waits on a dynamic collection of concurrent channel operations simultaneously to execute the first ready branch or a fallback default.
  • Channel Lifecycle Management - Supports closing communication channels to signal completion and safely drain remaining buffered values.
  • Accumulated Reductions - Accumulates all values from a source channel into a single computed result using a reducing function.
  • Multiplexed Channel Coordination - Combines multiple input streams into a single unified output channel with fine-grained control over muting, pausing, and soloing individual streams.
  • Publish-Subscribe Systems - Distributes every single item emitted by a source channel to multiple independent destination channels simultaneously.
  • Asynchronous Programming Workflows - Simplifies complex asynchronous control flows using generator functions that pause and resume execution without blocking threads.
  • Channel Merging - Combines items from several source channels into a single unified output channel until all inputs close.
  • Non-blocking Channel Operations - Provides immediate puts and takes on channels returning status indicators without waiting for a partner process.
  • Channel Pipers - Transfers values continuously from a source channel to a target channel and closes the target when the source ends.
  • Channel Data Transformation - Applies transducers such as mapping, filtering, removal, flattening, deduplication, and partitioning directly on data streams.

Star history

Star history chart for js-csp/js-cspStar history chart for js-csp/js-csp

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Frequently asked questions

What does js-csp/js-csp do?

Js-csp is a concurrency library that implements communicating sequential processes with channels and generator-based routines for asynchronous programming in JavaScript. It provides a framework for building data processing pipelines and managing concurrent workflows, bringing Go-style channels and process coordination primitives to applications.

What are the main features of js-csp/js-csp?

The main features of js-csp/js-csp are: Asynchronous JavaScript Programming, Channel-Based Concurrency, Channel Output Buffers, Sliding and Dropping Buffer Strategies, Data Processing Pipelines, Transducers, Channel Mixing, Asynchronous Workflow Coordination.

What are some open-source alternatives to js-csp/js-csp?

Open-source alternatives to js-csp/js-csp include: zio/zio — ZIO is a functional effect system for the JVM that models asynchronous and concurrent programs as pure, composable… cch123/golang-notes — This project is a technical reference and a collection of internal analysis notes focused on the Go language runtime… puniverse/quasar — Quasar is a JVM concurrency framework that implements the actor model and a lightweight thread library. It provides… miguelmota/golang-for-nodejs-developers — This project is a Go language learning guide and implementation map designed to help developers transition from… ruby-concurrency/concurrent-ruby — Concurrent Ruby is a comprehensive concurrency toolkit for the Ruby language that provides thread-safe data… swoole/swoole-src — Swoole is a coroutine-based concurrency library and IO framework for PHP. It provides a system for building…

Open-source alternatives to Js Csp

Similar open-source projects, ranked by how many features they share with Js Csp.
  • zio/ziozio avatar

    zio/zio

    4,347View on GitHub↗

    ZIO is a functional effect system for the JVM that models asynchronous and concurrent programs as pure, composable values with typed error handling and dependency injection. Its core identity is built on fiber-based concurrency, where lightweight, non-blocking fibers execute millions of concurrent tasks with structured lifecycle management, and a dual-channel error model that separates expected business failures from unexpected system defects at compile time. The system provides effect-typed dependency injection through a layer-based dependency graph, pull-based reactive stream processing with

    Scalaasynchronicityasynchronousasynchronous-programming
    View on GitHub↗4,347
  • cch123/golang-notescch123 avatar

    cch123/golang-notes

    4,032View on GitHub↗

    This project is a technical reference and a collection of internal analysis notes focused on the Go language runtime and compiler. It provides a detailed breakdown of the language internals, covering memory management, garbage collection, and the execution model of the scheduler. The material distinguishes itself by providing deep dives into low-level system details, including a reference for Go assembly instructions, register usage, and system call interfacing. It specifically analyzes the internal implementation of concurrency primitives, such as the goroutine scheduling mechanism, channel

    HTMLcodegogolang
    View on GitHub↗4,032
  • puniverse/quasarpuniverse avatar

    puniverse/quasar

    4,553View on GitHub↗

    Quasar is a JVM concurrency framework that implements the actor model and a lightweight thread library. It provides isolated execution units that communicate via asynchronous message passing to eliminate shared mutable state. The project distinguishes itself through a distributed actor system capable of operating across multiple cluster nodes with location-transparent registries and actor state migration. It utilizes a work-stealing fiber scheduler to manage millions of lightweight threads, allowing tasks to suspend during non-blocking I/O operations without stalling underlying system threads

    Javaactorsconcurrencyfibers
    View on GitHub↗4,553
  • miguelmota/golang-for-nodejs-developersmiguelmota avatar

    miguelmota/golang-for-nodejs-developers

    4,771View on GitHub↗

    This project is a Go language learning guide and implementation map designed to help developers transition from Node.js to Go. It provides a series of side-by-side code comparisons that contrast identical logic implemented in both languages to illustrate syntax and runtime differences. The repository serves as a tutorial for Go concurrency, specifically comparing the use of channels and goroutines against JavaScript promises. It also includes a performance benchmarking suite to measure and compare the execution speed of Go against Node.js for the same operations. The guide covers systems pro

    Godemoexamplesgo
    View on GitHub↗4,771
  • See all 30 alternatives to Js Csp→

    Curated searches featuring Js Csp

    Hand-picked collections where Js Csp appears.
    • Concurrency design patterns