DocWire SDK New Release: Turning Pipelines into Secure HTTP Services
We’re excited to announce a major new release of the DocWire SDK — and this one opens a completely new way to use DocWire in your applications.
At its core, DocWire has always been about high-performance document and data processing in C++. In this release, we’ve gone a step further:
- We replaced the internal
std::variant
-based Tag system with a new polymorphicmessage_ptr
architecture, simplifying the data flow and making it easier to extend. - And more importantly for many developers: we’ve introduced a built-in HTTP/HTTPS server that lets you expose DocWire pipelines as secure microservices.
Why the new HTTP server matters
Traditionally, to use DocWire you had to embed it directly into your C++ application. That works great — but many modern systems are moving toward service-oriented and cloud-native architectures.
With the new http::server
class, you can now:
-
Expose any pipeline as a REST-like API: for example, mount a PDF-to-JSON parser at
/parse/pdf
. - Call DocWire from any language: Python, Java, Go, or even curl — if it can talk HTTP, it can use DocWire.
- Scale horizontally: deploy pipelines behind a load balancer, containerize them with Docker/Kubernetes, and scale on demand.
- Secure endpoints with TLS: essential for finance, government, and healthcare workloads.
This turns DocWire from a C++ library into a full-fledged data processing service framework.
A simple example
Let’s say you want to parse incoming PDF documents and expose the output as JSON through an API. With the new server:
docwire::http::server server;
server.add_pipeline("/parse/pdf", my_pdf_to_json_pipeline);
server.listen(8080, true); // true enables TLS
That’s it — now any client can POST
a file to /parse/pdf
and get structured JSON back.
What else is new in this release
Besides the HTTP server and the new polymorphic message system, we’ve included a number of improvements and fixes:
- HTTP Post Content-Type: automatically set based on the input MIME type, making API integrations easier.
- Enhanced vcpkg parsing: now supports more complex platform-specific feature definitions.
- Reorganized element headers: document, mail, and AI element types are now separated for clarity.
-
Refactored XML options: dedicated
XmlStream::no_blanks
struct improves readability. - Unified transformer API: updated to the new message-based flow.
-
MSVC fixes: resolved min macro conflicts, added
/bigobj
for heavy templates. - macOS fixes: addressed RTTI visibility issues.
-
Dependencies: replaced
curlpp
withcpp-httplib
and OpenSSL. - CI update: removed deprecated macos-13 runner.
-
Docs & tests: full migration to
message_ptr
, new end-to-end HTTP server integration tests.
Why this matters for developers
This release is not just about features — it’s about flexibility.
- If you’re building monolithic C++ applications, you get a cleaner, more extensible architecture.
- If you’re moving to microservices and distributed systems, DocWire now fits directly into that model.
- If you need cross-language integration, the HTTP server makes DocWire accessible anywhere.
We believe this is a big step toward making DocWire SDK not just a C++ library, but a platform for data processing at scale.
Get started
The release is available now on GitHub: https://github.com/docwire/docwire/releases/tag/2025.09.25
As always, we welcome feedback, questions, and contributions from the community.
- The DocWire Team -
Top comments (0)