Actually, Holochain 0.2 has been with us for a long time — since last May — and developers have been actively building hApps on Holochain 0.3 for a while as well. But for developers who are new to Holochain, we’ve still been recommending 0.1 up until this point. That’s because 0.2’s new networking layer introduced a few performance regressions and peer discovery issues, and we wanted to be confident that the user experience was reasonably smooth before recommending it.
Today is the day we're now recommending Holochain 0.2.6 for all existing and new projects.
You'll notice that this release has been out for a few weeks, and there have been a number of unannounced releases since 0.2.1. In recent months we’ve adopted a new process for public releases. Here’s how it looks:
- The core dev team cuts a release candidate (RC).
- The release candidate is ‘smoke tested’ to make sure it works with a few mature apps that exercise a lot of its functionality, particularly Talking Stickies and HoloFuel.
- If the smoke test passes, the RC designation is removed and the commit is promoted to a proper release.
- The dev tooling (client libs, scaffolding, etc) are updated to the new release.
- A ‘soak test’ is performed, in which an app is run for a couple weeks in order to discover long-term performance and discoverability issues.
- If the soak test passes with reasonable performance, the commit is promoted to the latest recommended release and we spread the news.
It’s been a long time coming, but Holochain 0.2.6 is finally the first release in the 0.2 series to pass the above checks to our satisfaction. Let’s get into what’s new.
Holochain 0.2.6: Recommended for all developers
Release date: 6 February 2024
HDI compatibility: 0.3.x
HDK compatibility: 0.2.x
The changelog from Holochain 0.1.6 is too long to repeat here, but here are the highlights:
- New networking layer based on WebRTC, which lets us use off-the-shelf session negotiation and NAT hole-punching techniques. The QUIC protocol, which we built 0.1’s networking layer on, was great, but it forced us to build a lot of network tooling from scratch.
- Many performance improvements and fixes for peer discovery, function calls, signals, and gossip; apps feel much faster (and we’re working on making it faster still).
- A small number of breaking changes in the conductor APIs and the WASM host API.
- A lot of work to clean up the ‘workflows’, the processes that run pretty much everything in the conductor, leading to better testability, better performance, and more correctness.
Read the full changelog or skim through the release notes. If this is your first time using 0.2, make sure you read all the way down! And apologies for the coarseness of the second link — GitHub really needs to add a feature to let you filter by semver.
This release is paired with new libraries, developer tools, and infrastructure:
- HDI 0.3.6 and HDK 0.2.6 maintain compatibility with the WASM host API.
- JavaScript client 0.16.9 and Rust client 0.4.5 maintain compatibility with the conductor APIs, along with the usual bug fixes and code/API cleanups.
- Tryorama 0.15.2 has been updated to JavaScript client 0.16 to give it compatibility with Holochain 0.2, and gets a new awaitDhtSync function, bringing back a useful feature Tryorama had back in the Holochain Redux days!
- hc-scaffold 0.2001.1 generates code that uses the latest HDI and HDK to maintain compatibility with 0.2.6.
- hc spin, a new dev tool, spins up one or more conductors with your hApp running in them, opens up your UI in an Electron-based container (a sort of mini-Launcher), and runs local network services. You can also configure it to use existing network services, your own UI dev server, and a specific Holochain binary on your machine. We’re moving our UI tools back to Electron, as we’ve found Tauri’s cross-OS compatibility isn’t quite there yet. hc launch, the Tauri equivalent, is still available.
- The public bootstrap server bootstrap.holo.host has been updated.
- There are two new servers for the new WebRTC networking, signal.holo.host for connection establishment and turn.holo.host for traffic proxying.
- There’s a new dev tool command, hc run-local-services, that will run bootstrap and connection establishment services for machines on your local network.
Holochain 0.2 migration guide
I think this news is so awesome I’m giving it its own section. The 0.1 to 0.2 migration guide has been expanded to give you step-by-step instructions on exactly what you need to do to get your existing Holochain 0.1-compatible hApp running on 0.2. It’s very thorough, incorporating a bunch of guidance and solutions gleaned from many months of helping devs migrate their hApps.
Give it a read and start upgrading your hApp!
ETHDenver this week
Holochain is going to be present at ETHDenver in Colorado, USA again this year. It runs from 23 February to 3 March, and we’ll be showing up in all sorts of different ways. We’re a conference sponsor; we've invited IOEN and Rainlang to collaborate on a booth with us, featuring an electricity-generating bike that you can ride and mint Human Power Credits on (and charge up your own power bank); we’re offering a bounty to a team who builds a grant funding platform using Holochain and Rainlang smart contracts; and of course we’ll just be around to talk to people about their projects and how Holochain might be a good fit for them. If you’re going, come and say hi to us in the Regenlandia area!