Plans on adding support for QUIC

I am curious what Erlang Core Team thinks about QUIC and whether there are plans to add support for it.
If yes, I am curious what would be the prefered way of implementing it. In particular, would plain Erlang implementation be acceptable?

7 Likes

I really expect Erlang to support QUIC, and more and more scenarios will use QUIC in the future, such as HTTP3, Web3, IM, Game Server and so on.

3 Likes

We have no firm plans regarding QUIC right now. QUIC is interesting and we have looked briefly at it. Currently we have no use case that motivates us to make a QUIC implementation or binding for Erlang.

If we should support it in OTP it is a question if it should be in pure Erlang or if we just should have a binding to a library for QUIC like the one from Microsoft which the EMQX people presented on the Code Beam conference in May. They have implemented NIF bindings towards the Microsoft library and the component is called “Quicer”.

Having QUIC implemented in pure Erlang has the advantage that it is portable and does not introduce any new dependencies. But such a solution might not get as good performance as a C/C++ implementation or binding. Such an implementation would be a very big job to implement compared with just have a binding towards an existing library in C/C++/Rust.

So we are following the development around QUIC and it would be interesting to have support for it. But there must be a good use case first.

7 Likes

In general, QUIC is the future and early support is good. I think using NIF based on the existing QUIC implementation is an easier way to implement it. In particular, Microsoft’s Msquic provides dynamic libraries and cross-platform. I’m going to wrap the NIF binding based on MSQUic, in order to learn and do something, probably implementing it will take me a few months of free time

3 Likes

MQTT over QUIC may be a good UC. E.g., like explained here: https://www.researchgate.net/publication/328380610_Implementation_and_Analysis_of_QUIC_for_MQTT

3 Likes

ENQX based on msqic implements MQTT over quic in this project:GitHub - emqx/nanomq: An ultra-lightweight and blazing-fast MQTT broker for IoT edge
and here’s an article about it: https://mp.weixin.qq.com/s/TQ-TQc-VDkyv6RWRH_61rw

my main interest is in the use of QUIC in game server

2 Likes

I think that community is the use case and this would broaden Erlang/Elixir possibilities.

2 Likes