cURL drops hyper Rust HTTP backend due to lack of demand

The cURL project, a staple in the toolkit of developers and system administrators, has officially removed support for its experimental Rust-based Hyper HTTP backend. After several years of development and testing, the decision reflects a lack of user demand and developer interest in maintaining the integration.

Background on the Hyper Backend

The Hyper backend, introduced as an experimental feature, aimed to leverage Rust’s memory safety capabilities to enhance cURL’s HTTP implementation. The initiative, originally sponsored by the Internet Security Research Group (ISRG) — the organization behind Let’s Encrypt — sought to make cURL safer by integrating Rust’s robust features with its existing C codebase.

The Hyper integration promised to:

  • Provide a memory-safe alternative to cURL’s native HTTP implementation.
  • Offer a modular architecture that could be extended over time.
  • Align with growing industry interest in Rust for secure programming.

However, despite these potential benefits, the experimental backend failed to gain traction among users and contributors.

The Challenges Behind the Experiment

Daniel Stenberg, lead developer of cURL, explained the reasoning in a blog post:

“We had hoped users would embrace the memory safety provided by Rust and contribute to completing the work. But there simply were no users asking for it, and there were almost no developers skilled in both Rust and C willing to carry it forward.”

The complexity of integrating two vastly different languages proved to be a significant hurdle. While cURL is written in C, Hyper is a Rust library, necessitating a glue layer to bridge the two. This made the maintenance and development of the backend highly resource-intensive.

Stenberg noted that while 95% of the work was completed, the remaining 5% required substantial effort. Without active user demand or developer interest, the cURL team decided to remove the code to simplify the project and reduce maintenance burdens.

Lessons Learned and Improvements Made

Despite the project’s discontinuation, the cURL team highlighted several positive outcomes:

  • Improved HTTP Handling: The integration effort prompted the team to reassess and refine cURL’s HTTP behavior, leading to stricter parsing and handling.
  • Benefits for Hyper: Feedback from the collaboration contributed to enhancements in the Hyper library, benefiting its broader user base.
  • Enhanced Architecture: The experience improved cURL’s internal architecture, potentially paving the way for future integrations with other backends.

Current State and Future Possibilities

With the removal of the Hyper backend, cURL returns to its single native HTTP/1 implementation. However, the project continues to support Rust-based backends for TLS (rustls) and HTTP/3 (quiche), both of which remain experimental but are integrated more seamlessly into cURL’s architecture.

Stenberg expressed openness to revisiting the idea of alternative HTTP backends in the future, acknowledging that the project now has a stronger foundation for such endeavors.

When Will the Changes Take Effect?

The Hyper backend was officially removed from cURL’s Git repository on December 21, 2024. The upcoming cURL 8.12.0 release, scheduled for February 2025, will no longer include any traces of the experimental code.

Acknowledgments and Final Thoughts

Stenberg thanked Sean McArthur, Hyper’s lead developer, and all contributors who worked on the integration.

“While the experiment didn’t yield the results we had hoped for, it has helped us improve and grow. We’re grateful for everyone who contributed to this journey.”

This decision underscores the challenges of balancing innovation with practicality in open-source projects. While the Hyper backend may be gone, cURL’s commitment to evolving and improving remains steadfast.

vía: Daniel Haxx

Scroll to Top