Thread overview
Released vibe.d 0.10.1 (WebRPC)
September 13
vibe.d 0.10.1 has been released a few days ago. The major new feature is a new RPC mechanism that is basically a bi-directional extension of the REST interface generator. The idea is to use HTTP connections for the transport in order to minimize transport issues and allow simple proxy setups to be used. This approach allows to pass through typical NATs or firewall configurations in one direction, while still enabling bi-directional peer-to-peer communication.

The way this works in code is very similar to the existing REST interface system, requiring an interface definition that will be used to transparently serialize regular D calls to send them over the wire. Most of the additional features, such as `Collection!T` and the authorization/authentication system are supported, too.

Currently, this is implemented using WebSockets under the hood, but the idea is to leverage HTTP/2+ server push functionality later on. Once QUIC and HTTP/3 support is available, this could also be extended to punch through NATs in both directions and allow fully unrestricted P2P communication.

Speaking of HTTP/2, some time ago, I also finally got around to merge the work on a HTTP/2 server implementation by Francesco Galla and Francesco Mecca done as part of a SAoC into vibe-http master. Unfortunately, the state of the code is still very experimental and ideally needs to be continued by integrating a standard test suite.

For anyone wanting to try this out, just check out the repository's master branch* and set the `HTTPServerOption.enableHTTP2` option in `HTTPServerSettings.options`, or start with one of the http2 examples in the examples/ folder.

* https://github.com/vibe-d/vibe-http/
September 15
On Friday, 13 September 2024 at 09:40:27 UTC, Sönke Ludwig wrote:
> vibe.d 0.10.1 has been released a few days ago. The major new feature is a new RPC mechanism that is basically a bi-directional extension of the REST interface generator. The idea is to use HTTP connections for the transport in order to minimize transport issues and allow simple proxy setups to be used. This approach allows to pass through typical NATs or firewall configurations in one direction, while still enabling bi-directional peer-to-peer communication.
>
> [...]

awesome! First time hearing of WebRPC but its simplicity in using existing standards and thus having wide compatibility seems to make it a good choice.
September 22
On Friday, 13 September 2024 at 09:40:27 UTC, Sönke Ludwig wrote:
> vibe.d 0.10.1 has been released a few days ago. The major new feature is a new RPC mechanism that is basically a bi-directional extension of the REST interface generator. The idea is to use HTTP connections for the transport in order to minimize transport issues and allow simple proxy setups to be used. This approach allows to pass through typical NATs or firewall configurations in one direction, while still enabling bi-directional peer-to-peer communication.

Looks interesting! But I want to clarify something to be sure. Title mentions "WebRPC" - is it a (partial?) implementation of https://github.com/webrpc/webrpc or something unrelated? At quick glance at both readmes it looks completely different...
September 24
Am 22.09.2024 um 16:16 schrieb Vladimir Marchevsky:
> On Friday, 13 September 2024 at 09:40:27 UTC, Sönke Ludwig wrote:
>> vibe.d 0.10.1 has been released a few days ago. The major new feature is a new RPC mechanism that is basically a bi-directional extension of the REST interface generator. The idea is to use HTTP connections for the transport in order to minimize transport issues and allow simple proxy setups to be used. This approach allows to pass through typical NATs or firewall configurations in one direction, while still enabling bi-directional peer-to-peer communication.
> 
> Looks interesting! But I want to clarify something to be sure. Title mentions "WebRPC" - is it a (partial?) implementation of https:// github.com/webrpc/webrpc or something unrelated? At quick glance at both readmes it looks completely different...

It's unrelated and more a library specific name for the mechanism. I did realize that it sounds a bit like some kind of web standard ("WebRTC"), but since in the end its really just the shortest way to describe what it does and there was nothing official in existence, I kept the name anyway.
September 24
Am 15.09.2024 um 14:22 schrieb WebFreak001:
> On Friday, 13 September 2024 at 09:40:27 UTC, Sönke Ludwig wrote:
>> [...]
> 
> awesome! First time hearing of WebRPC but its simplicity in using existing standards and thus having wide compatibility seems to make it a good choice.

I hope to eventually end up with a toolkit that makes it very easy to implement peer-to-peer networks of various kinds, in order to facilitate a decentralized alternative (or extension) to the currently ubiquitous centralized approaches. The next important step for that is to get QUIC up and running to make that a possible transport basis.

Oh, and of course I forgot to mention a super important point in the release announcement. **Huge thanks to you for your support!** - Over the past months, WebFreak has generously sponsored some of my open source development, which has allowed me to once again dedicate some time for general vibe.d development and DUB maintenance. All of the big changes this year would simply not have been possible without him.