<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Mach]]></title><description><![CDATA[Mach is a modern, type-safe C++20 web framework focused on performance and developer experience. Explore releases, tutorials, benchmarks, and framework development.]]></description><link>https://machframework.hashnode.dev</link><image><url>https://cdn.hashnode.com/uploads/logos/6ab593ac92c9bcc7dbd8c04b/4c8aab63-4948-40c9-8a9e-afadae5f216f.png</url><title>Mach</title><link>https://machframework.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Sat, 03 Oct 2026 17:58:59 GMT</lastBuildDate><atom:link href="https://machframework.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Mach 1.0: A Modern C++20 Web Framework]]></title><description><![CDATA[A couple of months ago, I started working on Mach with a simple goal: to make building web applications in C++ feel modern.
C++ already gives developers exceptional performance, control, and a mature ]]></description><link>https://machframework.hashnode.dev/mach-1-0-a-modern-c-20-web-framework</link><guid isPermaLink="true">https://machframework.hashnode.dev/mach-1-0-a-modern-c-20-web-framework</guid><category><![CDATA[C++]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[Open Source]]></category><category><![CDATA[software development]]></category><category><![CDATA[Programming Blogs]]></category><dc:creator><![CDATA[Asaf Dahan]]></dc:creator><pubDate>Fri, 25 Sep 2026 12:35:21 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6ab593ac92c9bcc7dbd8c04b/f37c5c54-01d8-418c-bed4-0f57670881f7.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A couple of months ago, I started working on <strong>Mach</strong> with a simple goal: to make building web applications in C++ feel modern.</p>
<p>C++ already gives developers exceptional performance, control, and a mature ecosystem. But when it comes to web development, getting from an empty project to a structured HTTP application can still involve considerably more friction than it does with many modern frameworks.</p>
<p>I wanted something different: a framework with familiar concepts like routing, controllers, middleware, dependency injection, model binding, and validation, while retaining the performance and control that make C++ compelling in the first place.</p>
<p>That project became <strong>Mach</strong>.</p>
<p>Yesterday, after a couple of months of development, I released <strong>Mach v1.0.0,</strong> the first stable release of the framework.</p>
<h3><strong>What Does Mach Look Like?</strong></h3>
<p>At its simplest, a complete Mach application requires only a few lines of C++:</p>
<pre><code class="language-cpp">#include &lt;mach/mach.hpp&gt;

int main() {
    mach::AppBuilder builder;
    auto app = builder.build();

    app.mapGet("/", [] {
        return mach::ok("Hello from Mach!");
    });

    return app.run();
}
</code></pre>
<p>This is a complete Mach application. <code>AppBuilder</code> configures the application, <code>build()</code> creates it, and <code>mapGet()</code> maps a handler directly to an HTTP route. Returning <code>mach::ok()</code> produces the response, while <code>run()</code> starts the server.</p>
<p>The minimal API is intentionally small. For simple applications, you can define routes directly like this. As an application grows, Mach also provides controllers, middleware, dependency injection, model binding, validation, and other tools for structuring larger projects.</p>
<h3><strong>Why Mach?</strong></h3>
<p>One of the main goals behind Mach is to provide the kind of developer experience that has become standard in modern web frameworks without trying to hide C++ itself.</p>
<p>Mach is built around modern C++20 and a strongly typed API. Rather than relying heavily on macros, configuration files, or runtime conventions, the framework aims to make as much as possible explicit and verifiable at compile time.</p>
<p>At the same time, performance has been a priority from the beginning. Mach is built on top of Boost.Asio and Boost.Beast, using asynchronous I/O while providing a higher-level API for application development.</p>
<p>The result I’m aiming for is a framework where C++ developers can build an HTTP API without spending most of their time assembling the infrastructure around it.</p>
<h3><strong>What’s Included in Mach 1.0</strong></h3>
<p>Mach 1.0 includes the core features needed to build structured HTTP applications, including routing, controllers, middleware, dependency injection, model binding and validation, JSON serialization, configuration, logging, CORS and CSRF protection, and centralized error handling.</p>
<p>These features are designed to work together as part of the framework while remaining unobtrusive when they aren’t needed. A small application can remain small, while larger applications can adopt additional structure as they grow.</p>
<h3><strong>Performance</strong></h3>
<p>Performance has been a priority throughout Mach’s development. The framework is built on Boost.Asio and Boost.Beast and uses asynchronous I/O underneath its higher-level APIs.</p>
<p>In the final pre-release benchmarks, Mach handled approximately <strong>278,000 requests per second</strong> in a simple HTTP request benchmark.</p>
<p>As with any framework benchmark, results depend heavily on the workload, hardware, compiler, and configuration. The number isn’t intended to represent the performance of every Mach application, but it provides a useful indication of the framework’s baseline HTTP performance.</p>
<h3><strong>Getting Started</strong></h3>
<p>Mach supports Windows and Linux and integrates with CMake, making it straightforward to add to an existing C++ workflow.</p>
<p>The documentation covers installation, routing, controllers, model binding, validation, middleware, configuration, security, error handling, and the rest of the framework, along with a complete tutorial for building an API with Mach.</p>
<p>You can get started here:</p>
<p><strong>Documentation:</strong> <a href="https://machframework.dev/">https://machframework.dev/</a><br /><strong>GitHub:</strong> <a href="https://github.com/machframework/mach">https://github.com/machframework/mach</a></p>
<h3><strong>What’s Next?</strong></h3>
<p>Mach 1.0 is an important milestone, but it’s also the beginning of the project as a stable, publicly available framework.</p>
<p>From here, my focus is on improving the framework based on real-world usage, expanding the ecosystem and tooling around it, and continuing to refine the developer experience without sacrificing the performance and type safety that Mach was built around.</p>
<p>Mach is open source under the MIT license, and contributions are welcome. I’d also be very interested to hear feedback from C++ developers, whether about the API design, implementation, documentation, performance, or the overall direction of the project.</p>
<p>If you decide to try Mach, I’d love to hear what you build with it.</p>
]]></content:encoded></item></channel></rss>