GitHub

What is the project about?

Hydro is a high-level distributed programming framework for Rust. It's designed to help developers quickly write scalable and correct distributed services.

What problem does it solve?

Hydro addresses the challenges of distributed programming, aiming for:

  • Distributed Safety: Ensuring correctness in distributed systems, similar to how Rust ensures memory safety.
  • Expressivity: Supporting a wide range of distributed architectures and performance needs.
  • Performance: Leveraging Rust and LLVM for per-node performance, while optimizing for cross-node scaling and data movement.
  • Distributed Typechecking: Enforcing distributed correctness at compile time.
  • Distributed Optimizations: Optimizing programs for distributed concerns, such as removing bottlenecks.
  • Modularity: Allowing distributed logic to be encapsulated and reused.
  • Native Testing Tools: Integrated formal testing.

It simplifies the development of distributed systems by providing a higher level of abstraction and built-in correctness guarantees.

What are the features of the project?

  • High-level API: Allows programming an entire fleet of processes from a single program.
  • Hydro Deploy: Framework for launching Hydro programs locally or in the cloud.
  • DataFlow Internal Representation (DFIR): A low-level, single-threaded language that Hydro programs compile into.
  • Distributed Typechecking: Enforces distributed correctness.
  • Distributed Optimizations: Optimizes for cross-node issues.

What are the technologies used in the project?

  • Rust: The core programming language.
  • LLVM: Used for per-node performance optimization.
  • Hydro Deploy

What are the benefits of the project?

  • Simplified Distributed Programming: Easier to write and reason about distributed systems.
  • Correctness by Construction: Helps ensure distributed safety.
  • Scalability: Designed for building scalable services.
  • Performance: Leverages Rust and LLVM for efficiency.
  • Integrated Tooling: Works with standard Rust constructs and IDEs.

What are the use cases of the project?

  • Building distributed services.
  • Creating scalable applications.
  • Developing systems that require high availability and fault tolerance.
  • Implementing distributed protocols.
hydro screenshot