Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Clojure
  3. pronto

pronto

Clojurev3.0.0

A Clojure library for idiomatic, type-safe interaction with Protocol Buffers 3, treating protobuf POJOs as native Clojure maps.

GitHubGitHub
126 stars12 forks0 contributors

What is pronto?

Pronto is a Clojure library that provides idiomatic, type-safe wrappers for Protocol Buffers 3, enabling developers to interact with protobuf-generated Java classes as if they were native Clojure maps. It solves the problem of cumbersome Java interop when working with protobuf data in Clojure, offering seamless integration while enforcing schema correctness and runtime type safety.

Target Audience

Clojure developers who need to work with Protocol Buffers in data-intensive applications, such as microservices, data pipelines, or systems using gRPC, and want to maintain Clojure's functional, data-driven programming style.

Value Proposition

Developers choose Pronto because it combines the performance and schema guarantees of Protocol Buffers with Clojure's expressive map APIs, offering fail-fast validation, minimal overhead, and support for advanced protobuf features like one-ofs, well-known types, and custom encoders—all without sacrificing idiomatic Clojure semantics.

Overview

Clojure support for protocol buffers

Use Cases

Best For

  • Building Clojure microservices that communicate via Protocol Buffers
  • Ensuring type safety when serializing/deserializing data in Clojure applications
  • Integrating protobuf schemas into Clojure's data-driven workflows
  • Creating idiomatic Clojure wrappers for existing protobuf-based Java libraries
  • Developing gRPC services in Clojure with seamless protobuf handling
  • Converting between protobuf POJOs and Clojure maps with custom type encoders

Not Ideal For

  • Projects requiring dynamic, open-ended data manipulation where dissoc or flexible key access is essential, as Pronto enforces strict schema adherence.
  • Teams prioritizing rapid prototyping over immediate type safety, since Pronto's fail-fast validation can add development overhead during initial iterations.
  • Applications with frequently changing schemas where recompiling protobuf classes and redefining mappers is too burdensome.

Pros & Cons

Pros

Idiomatic Clojure Integration

Wraps protoc-generated Java classes into proto-maps that behave like native Clojure maps, supporting assoc, update, and most map semantics for seamless data-driven programming.

Runtime Type Safety

Enforces schema correctness by failing-fast on invalid operations, such as associng non-existent keys or wrong value types, catching errors immediately during development.

Minimal Performance Overhead

Generates thin wrapper classes and avoids reflection, ensuring low CPU and memory usage while maintaining protobuf serialization efficiency, as highlighted in the performance documentation.

Advanced Protobuf Features

Supports one-of fields, well-known type inlining for nullable scalars, and custom encoders for type conversions, preserving full protobuf semantics like unknown field handling.

Cons

Restricted Map Semantics

Dissoc is unsupported, and getting non-existent keys throws errors instead of returning nil, which breaks Clojure's dynamic map conventions and can be restrictive for flexible data workflows.

Setup and Verbosity

Requires defining mappers for each protobuf class and managing nested structures, leading to verbose code for complex schemas, as noted in the 'Pro tip' section about balancing proto-map creation.

Java Ecosystem Dependency

Relies on protoc-generated Java classes and version compatibility (minimal Java protobuf 3.15.0), introducing potential interop issues and extra steps for Clojure-native teams.

Frequently Asked Questions

Quick Stats

Stars126
Forks12
Contributors0
Open Issues8
Last commit2 years ago
CreatedSince 2021

Tags

#type-safety#clojure-library#schema-validation#protocol-buffers#grpc#clojure#serialization#protobuf

Built With

P
Protocol Buffers
C
Clojure
J
Java

Included in

Clojure2.8k
Auto-fetched 18 hours ago

Related Projects

lein-protodepslein-protodeps

Leiningen plugin for consuming and compiling protobuf schemas

Stars31
Forks3
Last commit7 months ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub