---
layout: post
title: "Cap'n Proto 0.4.1: Bugfix Release"
author: kentonv
---

Today I'm releasing [version 0.4.1 of Cap'n Proto](https://capnproto.org/capnproto-c++-0.4.1.tar.gz).
As hinted by the version number, this is a bugfix and tweak release, with no big new features.

You may be wondering:  If there are no big new features, what has been happening over the
last three months?  Most of my time lately has been spent laying the groundwork for an
interesting project built on Cap'n Proto which should launch by the end of this month.
Stay tuned!  And don't worry -- this new project is going to need many of the upcoming
features on [the roadmap]({{ site.baseurl }}roadmap.html), so work on version 0.5 will be
proceeding soon.

In the meantime, though, there have been some major updates from the community:

  * The folks at [CloudFlare](https://www.cloudflare.com/) have produced a
    [Lua port](https://github.com/cloudflare/lua-capnproto) which they are
    [using successfully in production](http://blog.cloudflare.com/introducing-lua-capnproto-better-serialization-in-lua)
    along with the existing [Go port](https://github.com/jmckaskill/go-capnproto).
  * [The Rust port of Cap'n Proto](https://github.com/dwrensha/capnproto-rust) now has
    preliminary RPC support, making it the third language to support Cap'n Proto RPC (after
    C++ and Python), and the second language to implement it from the ground up (Python just
    wraps the C++ implementation).  Check out author [David Renshaw](https://github.com/dwrensha)'s
    [talk at Mozilla](https://air.mozilla.org/rust-meetup-february-2014/).
  * A [JavaScript port](https://github.com/jscheid/capnproto-js) has appeared, but it needs help
    to keep going!

