Skip to main content
Soares Chen
Creator of Context-Generic Programming
View all authors

CGP v0.6.1 Release: Improving Ergonomics and Debugging

· 9 min read
Soares Chen
Creator of Context-Generic Programming

We're excited to announce the release of cgp v0.6.1, which brings several quality-of-life improvements to Context-Generic Programming in Rust. This release focuses on making CGP more accessible to developers new to the paradigm while also providing better debugging and verification tools for complex provider setups.

The changes in this release reflect our commitment to lowering the barrier to entry for CGP, while maintaining the power and flexibility that make it such a compelling approach to modular Rust code. Whether you're an experienced CGP user or just getting started, we believe you'll find these improvements meaningful.

Announcing cgp-serde: A modular serialization library for Serde powered by CGP

· 36 min read
Soares Chen
Creator of Context-Generic Programming

I am excited to announce the release of cgp-serde, a modular serialization library for Serde that leverages the power of Context-Generic Programming (CGP).

In short, cgp-serde extends Serde’s original Serialize and Deserialize traits with CGP, making it possible to write overlapping or orphaned implementations of these traits and thus bypass the standard Rust coherence restrictions.

Furthermore, cgp-serde allows us to leverage the powerful context and capabilities concepts in stable Rust today. This unlocks the ability to write context-dependent implementations of Deserialize, such as one that uses an arena allocator to deserialize a 'a T value, a concept detailed in the proposal article.

CGP v0.5.0 Release: Auto dispatchers, extensible datatype improvements, monadic computation, RTN emulation, modular serde, and more

· 26 min read
Soares Chen
Creator of Context-Generic Programming

CGP v0.5.0 has been released, bringing a range of new features and some breaking changes as part of the ongoing effort toward stabilization. This version introduces several improvements to make CGP more practical, expressive, and easier to use in real-world Rust projects.

The highlights of this major release are summarized below. Also check out the changelog for the full list of changes.

Programming Extensible Data Types in Rust with CGP - Part 4: Implementing Extensible Variants

· 62 min read
Soares Chen
Creator of Context-Generic Programming

This is the fourth part of the blog series on Programming Extensible Data Types in Rust with CGP. You can read the first, second and third parts here.

In the third part of the series, Implementing Extensible Records, we have walked through the internal implementation of extensible records, and learned about concepts such as partial records and builder dispatchers.

In this final fourth part of the series, we will have the same walk through for the internal implementation details for extensible variants.

Programming Extensible Data Types in Rust with CGP - Part 3: Implementing Extensible Records

· 41 min read
Soares Chen
Creator of Context-Generic Programming

This is the third part of the blog series on Programming Extensible Data Types in Rust with CGP. You can read the first and second parts here.

At this point, you’ve likely seen how these patterns can make real-world applications more modular and maintainable. If these examples have convinced you of CGP’s practical value, that’s great. But if you still feel the examples are not grounded enough in production use cases, you are welcome to pause here and revisit CGP later.

The next 2 parts of the series are aimed at readers who want to go deeper — those interested in how CGP implements extensible data types under the hood and who might even want to contribute to CGP itself by helping to build the real-world examples you’re looking for.

We will first explore the implementation of extensible records in this part, followed by the implementation of extensible variants in the coming Part 4.

Programming Extensible Data Types in Rust with CGP - Part 2: Modular Interpreters and Extensible Visitors

· 40 min read
Soares Chen
Creator of Context-Generic Programming

This is the second part of the blog series on Programming Extensible Data Types in Rust with CGP. You can read the first part here.

In this second part of the series, we will explore the use of extensible variants, by examining how it can be used in an extensible visitor pattern to build a modular interpreter for a toy math expression language.

Programming Extensible Data Types in Rust with CGP - Part 1: Modular App Construction and Extensible Builders

· 36 min read
Soares Chen
Creator of Context-Generic Programming

I’m excited to announce the release of CGP v0.4.2, a major milestone that significantly expands the expressive power of generic programming in Rust. With this release, CGP introduces full support for extensible records and variants, unlocking a range of new capabilities for developers working with highly modular and reusable code.

Extensible records and variants allow developers to write code that operates on any struct containing specific fields or any enum containing specific variants, without needing their concrete definition. This makes it possible to write truly generic and flexible logic that is decoupled from rigid type definitions.

CGP v0.4.1 Release: new cgp-handler crate, improved preset macros, and more.

· 4 min read
Soares Chen
Creator of Context-Generic Programming

We are excited to announce the release of CGP v0.4.1! This release brings several new features, quality-of-life improvements for macro usages, and a new crate cgp-handler.

Here are some of the highlights:

  • New cgp-handler crate: Provides abstract interfaces for defining components with common method signatures.
  • cgp_preset! macro improvement: Now supports wrapping of Preset::Provider.
  • #[cgp_component] macro improvement: Now supports automated derivation of UseDelegate.
  • Improved Documentation: Added inline Rust documentation for common CGP constructs.