benoit

benoit

@benoitc.bsky.social

a craftsman in software and decentralized platforms

148 followers51 following229 posts

erlang_wasm 0.9.1 runs WebAssembly components in pure Erlang. The demo shows typed calls, an import answered from Erlang, and a checked resource handle: {ok, {ok, ~"HI!"}} = wasm_component:call(T, Shout, Sig, [~"hi"]). github.com/benoitc/wasm...

github.comGitHub - benoitc/wasm_demo: A small project using erlang_wasm: a module from text, a host callback, and a QuickJS workerA small project using erlang_wasm: a module from text, a host callback, and a QuickJS worker - benoitc/wasm_demo

erlang_wasm 0.9.0 is out. Restored sandboxes now share their snapshot's memory: a Python sandbox starts in 0.79 ms instead of 12 ms, and a node holds about 20 times more of them. Since 0.8 it also runs the WebAssembly Component Model and WASI 0.2. github.com/benoitc/erla...

github.comRelease 0.9.0 · benoitc/erlang_wasmA restore shares its snapshot's image instead of copying it, script requests are faster by default, a worker can run compiled with one option, a loaded module no longer keeps its whole input file i...

erlang_quic 2.0.0 is out 🚀 Pure Erlang QUIC + HTTP/3. HTTP/3 closes now report `{closed, Reason}`, local stream resets reach your handler, Content-Length is fixed for HEAD/204/304, QPACK got some hardening, and `cacertfile` is now supported. github.com/benoitc/erla...

github.comGitHub - benoitc/erlang_quic: Pure Erlang QUIC implementation (RFC 9000)Pure Erlang QUIC implementation (RFC 9000). Contribute to benoitc/erlang_quic development by creating an account on GitHub.

hackney 4.8.0 is out 🚀 HTTP client for Erlang and Elixir, with HTTP/1.1, HTTP/2 and HTTP/3 behind the same pooled API. Quite a few HTTP/2 and HTTP/3 fixes, plus quic 2.0.0: peer stream resets reported, 0-RTT stalls fixed, and more. github.com/benoitc/hack...

github.comRelease hackney 4.8.0 · benoitc/hackneyFixed hackney:send_request/2 works on HTTP/2 and HTTP/3. Those protocols answer a request with the body included, which the function did not handle, so it failed with a case_clause. It returns the...

erlang_wasm 0.4.2 has been released. A slow or crashed cleanup reaper no longer stalls a request's deadline: cleanup is now a per-request gen_server on non-blocking send_request/check_response, and requests survive a reaper restart. Plus WASI + snapshot hardening. github.com/benoitc/erla...

github.comRelease 0.4.2 · benoitc/erlang_wasmSecurity and liveness fixes from a guest-reachable audit of 0.4.1. Fix forward, no separate advisory. Nothing in your code changes; the new settings below all have safe defaults. WASI path resolut...

erlang_quic 1.8.2 is out. Mostly fixes for issues you only really see on real networks: ACKs crossing packet-number spaces, sent-packet tracking lost during migration, uncapped PTO backoff, and truncated GRO trains. Thanks to jbevemyr for the contribution. github.com/benoitc/erla...

github.comRelease 1.8.2 · benoitc/erlang_quicAdded versions lists the QUIC versions a connection will also accept, for RFC 9368 compatible version negotiation. Contributed by jbevemyr (#243). hibernate_after (default 5000 ms) hibernates an i...

erlang_quic 1.8.1 brings post-quantum key exchange to QUIC: X25519MLKEM768 (ML-KEM-768 + X25519), that you activate with `groups`. Pure Erlang, without OpenSSL. OTP 28.1+ is needed. Thanks to Johan Bevemyr who implemented it. github.com/benoitc/erla...

github.comRelease 1.8.1 · benoitc/erlang_quicAdded Post-quantum hybrid key exchange x25519mlkem768 (draft-ietf-tls-ecdhe-mlkem, ML-KEM-768 + X25519), opt-in via groups. Negotiable only when the crypto library provides the ML-KEM APIs (OTP 28...

erlang_python 4.0.0 is out. Run Python from Erlang, one isolated interpreter per context, usable as a worker runtime. New: timeouts now really stop the Python code. Per-context memory caps. Async generator streaming. Proper encoding for callback results. github.com/benoitc/erlang-python

github.comGitHub - benoitc/erlang-python: Execute Python from Erlang using dirty NIFs with GIL-aware execution, rate limiting, and free-threading supportExecute Python from Erlang using dirty NIFs with GIL-aware execution, rate limiting, and free-threading support - benoitc/erlang-python

hackney 4.7.3 is out. now the pooled TLS upgrade does not stall the pool, dead-end connections stop instead of leaking, and CRLF is hardened on proxy + streaming. also curl-style Content-Length: 0 for empty POST/PUT/PATCH, and all deps bumped. github.com/benoitc/hack...

github.comRelease 4.7.3 · benoitc/hackneyFixed Reusing a pooled HTTP/2 or HTTP/3 connection no longer crashes the caller of hackney:connect/4 when the pooled connection terminates during the checkout liveness probe. The get_state probe i...

Introducing Barrel 1.0: a local-first database for AI applications and agents. First released seven years ago, Barrel is now back after a long hiatus. Built on Erlang/OTP, fully open source, and licensed under Apache 2.0. barrel-db.eu

barrel-db.euThe edge-AI database for agents | Barrel DBThe open source edge-AI database for agents. Documents, vectors, and blobs under one id, with local search, sync, encryption, and an agent layer over REST and MCP. Built in Europe, in Erlang.

hackney 4.5.0 is out: first-class support for the HTTP QUERY method (RFC 10008). Safe, idempotent, takes a request body like POST, and works identically over HTTP/1.1, HTTP/2 and HTTP/3. github.com/benoitc/hack... #erlang #http #http2 #http3

github.comRelease 4.5.0 · benoitc/hackneyAdded HTTP QUERY method (RFC 10008) as a first-class method: hackney:query/1..4 helpers and hackney:request(query, ...). QUERY is safe and idempotent and carries a request body like POST. It works...

hackney 4.4.5 is out. Releases since 4.4.1 fix connection pooling and reuse bugs across HTTP/1.1, HTTP/2 and HTTPS/TLS: h2 trailers + GOAWAY reuse, TLS-resumption protocol mislabel, pool overflow/checkout-timeout, and a pool slot leak. Bug fixes only. github.com/benoitc/hack... #erlang #elixir

github.comRelease 4.4.5 · benoitc/hackneyFixed HTTPS: a connection reused over a resumed TLS 1.3 session is no longer mislabeled as HTTP/1 when it negotiated HTTP/2. ssl:negotiated_protocol/1 reports nothing on a resumed session, so hack...

Livery v0.2.4 is out: HTTP/2 large responses now ~2.4x faster (one coalesced socket write instead of one per frame), plus a mid-response disconnect fix and a runtime concurrency gap. BEAM web framework, one handler set over HTTP/1.1, HTTP/2, and HTTP/3 → github.com/benoitc/livery

github.comGitHub - benoitc/livery: High-performance HTTP/1.1, HTTP/2, HTTP/3 server for Erlang/OTP 27+High-performance HTTP/1.1, HTTP/2, HTTP/3 server for Erlang/OTP 27+ - benoitc/livery

erlang_python 3.0.0 released. Embed CPython into the BEAM: true parallelism (Python 3.14 OWN_GIL subinterpreters or free-threaded 3.13t), async/await, bidirectional Erlang↔Python callbacks, stable thread affinity for numpy/torch/tensorflow. #erlang #python github.com/benoitc/erla...

github.comRelease 3.0.0 · benoitc/erlang-python3.0.0 (2026-05-03) Breaking Changes Simplified execution model - Only two public execution modes: worker and owngil worker: Dedicated pthread per context with stable thread affinity (default) ow...

erlang-quickjs 0.1.0 A drop-in replacement for erlang-duktape (effectively dormant since 2022), backed by the actively maintained QuickJS-NG. Full ES2023, CommonJS modules, Erlang↔JS callbacks, CBOR, execution timeouts. 183 tests pass on Linux, macOS and FreeBSD. github.com/benoitc/erla...

github.comGitHub - benoitc/erlang-quickjs: QuickJS JavaScript engine for Erlang (powered by quickjs-ng). API-compatible replacement for erlang-duktape.QuickJS JavaScript engine for Erlang (powered by quickjs-ng). API-compatible replacement for erlang-duktape. - benoitc/erlang-quickjs

erlang_quic 1.3.0 is out. First production-ready release of the pure-Erlang QUIC + HTTP/3 stack. - RFC 9000 / 9001 (QUIC) + RFC 9114 / 9204 (HTTP/3, QPACK) - Priorities, datagrams, extended CONNECT - -proto_dist quic for Erlang clusters - Zero C deps, OTP 27+ github.com/benoitc/erla...

github.comGitHub - benoitc/erlang_quic: Pure Erlang QUIC implementation (RFC 9000)Pure Erlang QUIC implementation (RFC 9000). Contribute to benoitc/erlang_quic development by creating an account on GitHub.

hackney 4.0.0 is out. HTTP/2 and HTTP/3 are now delegated to erlang_h2 and erlang_quic, fully RFC 9114 compliant via quic_h3, with Alt-Svc auto-discovery. The bundled metrics subsystem is replaced by a Go-style middleware chain. github.com/benoitc/hack... #erlang #http #http2 #http3

github.comRelease hackney 4.0.0 · benoitc/hackneyHackney 4 trims the client down. The HTTP/2 and HTTP/3 stacks are now delegated to erlang_h2 and erlang_quic, so hackney no longer ships its own framing, HPACK / QPACK codecs, control streams or st...

You're misusing open source. If your company depends on an external repo to support clients, your model is broken. Open source is about sharing code, not outsourcing support to unpaid maintainers or treating releases as guarantees. If your business depends on them, that's your risk, not theirs.

benoit reposted

FreeBSD 14.4-RELEASE is now available. The FreeBSD Project has announced the release of FreeBSD 14.4-RELEASE, the fifth release from the stable/14 branch. Download and release information: buff.ly/oGkE6ry Thank you to the Release Engineering Team and all contributors who make the release possible.

erlang_python 2.1 released - Distributed by default (inherit Erlang's distribution) - Async Task API (uvloop-inspired) - Channel API (8x faster than IPC) - Subinterpreter API for true parallelism (Python 3.12+) - AI/ML ready: venv management, logging, tracing github.com/benoitc/erla...

github.comGitHub - benoitc/erlang-python: Execute Python from Erlang using dirty NIFs with GIL-aware execution, rate limiting, and free-threading supportExecute Python from Erlang using dirty NIFs with GIL-aware execution, rate limiting, and free-threading support - benoitc/erlang-python

Finishing to cook the new version of erlang-python Version Comparison Results Both tests ran with Python 3.9.6 and Erlang/OTP 28, 14 schedulers.

hackney 3.2.0 released - HTTP/2 state machine optimizations with stream caching, O(1) HPACK/QPACK static table lookups, 95% h2spec compliance (139/146 tests). Bug fixes for flow control and async responses. github.com/benoitc/hack...

github.comRelease hackney 3.2.0 · benoitc/hackneyRefactor Replace all cowlib modules with hackney-native implementations Remove src/libs/ directory (all modules moved to src/) Performance HTTP/2 state machine optimizations: Stream caching for...

New website for Enki Multimedia 🦋 → Erlang consulting & development → Voice platforms (100M+ users) → European network AS209823 Maintainer of Hackney, Gunicorn, Hornbeam. 8 years building distributed systems. Based in France. enki-multimedia.eu