# Proposals: Ideas

**URL:** https://erlangforums.com/c/erlang-otp-proposals/proposals-ideas/88.md

[Latest](https://erlangforums.com/latest.md) · [Categories](https://erlangforums.com/categories.md) · [Tags](https://erlangforums.com/tags.md)

---

## [Can the Erlang shell support Ctrl+D by default?](https://erlangforums.com/t/can-the-erlang-shell-support-ctrl-d-by-default/5956)

<div class="topic-metadata">

**Author:** [@eproxus](https://erlangforums.com/u/eproxus)\
**Replies:** 8\
**Last updated:** [September 21, 2026, 3:46am UTC](https://erlangforums.com/t/can-the-erlang-shell-support-ctrl-d-by-default/5956 "2026-09-21T03:46:38Z")

</div>

Can the Erlang shell support Ctrl+D to exit the shell gracefully? Currently there are two common ways to exit the shell: either q(). (graceful shutdown) or Ctrl+C twice (killing the process). There’s also init:stop() whi…

---

## [Httpc: per-request Unix-domain socket support](https://erlangforums.com/t/httpc-per-request-unix-domain-socket-support/5952)

<div class="topic-metadata">

**Author:** [@jtdowney](https://erlangforums.com/u/jtdowney)\
**Replies:** 0\
**Last updated:** [September 17, 2026, 1:45am UTC](https://erlangforums.com/t/httpc-per-request-unix-domain-socket-support/5952 "2026-09-17T01:45:10Z")

</div>

I’d like to add a supported way to select a Unix-domain socket for an individual httpc:request/4,5 call without changing profile configuration. Today, httpc supports Unix sockets through an experimental profile-level op…

---

## [Allow lists:member/2 in guard clause when List is a literal list](https://erlangforums.com/t/allow-lists-member-2-in-guard-clause-when-list-is-a-literal-list/5925)

<div class="topic-metadata">

**Author:** [@erlend.axelsson](https://erlangforums.com/u/erlend.axelsson)\
**Replies:** 15\
**Last updated:** [September 6, 2026, 10:20pm UTC](https://erlangforums.com/t/allow-lists-member-2-in-guard-clause-when-list-is-a-literal-list/5925 "2026-09-06T22:20:16Z")

</div>

What: I suggest allowing lists:member/2 (or a new erlang:is\_list\_member/2) to be allowed in guard clauses when the list is a literal term similar to how you can use erlang:is\_integer:3 but for a set of distinct known-at…

---

## [Collapse equivalent function in erlang.org/doc](https://erlangforums.com/t/collapse-equivalent-function-in-erlang-org-doc/5868)

<div class="topic-metadata">

**Author:** [@garazdawi](https://erlangforums.com/u/garazdawi)\
**Replies:** 14\
**Last updated:** [August 26, 2026, 8:43pm UTC](https://erlangforums.com/t/collapse-equivalent-function-in-erlang-org-doc/5868 "2026-08-26T20:43:29Z")

</div>

Hello! Just before the summer I did an experiment to make the Erlang documentation generated by ExDoc less verbose when there the same function with different arities are documented. In todays docs it looks like this: …

---

## [Remove md5 as a module checksum hash](https://erlangforums.com/t/remove-md5-as-a-module-checksum-hash/5879)

<div class="topic-metadata">

**Author:** [@jgonet](https://erlangforums.com/u/jgonet)\
**Replies:** 0\
**Last updated:** [August 24, 2026, 7:37pm UTC](https://erlangforums.com/t/remove-md5-as-a-module-checksum-hash/5879 "2026-08-24T19:37:30Z")

</div>

I develop Popcorn which compiles OTP/BEAM for browsers. The VM is short-lived for some uses and having it boot fast is important to me. I recently benchmarked few things in that area and found out that checksumming proc…

---

## [Add s390x (IBM Z) GitHub Actions runner to Erlang/OTP CI](https://erlangforums.com/t/add-s390x-ibm-z-github-actions-runner-to-erlang-otp-ci/5853)

<div class="topic-metadata">

**Author:** [@vivkong](https://erlangforums.com/u/vivkong)\
**Replies:** 1\
**Last updated:** [August 11, 2026, 11:00am UTC](https://erlangforums.com/t/add-s390x-ibm-z-github-actions-runner-to-erlang-otp-ci/5853 "2026-08-11T11:00:14Z")

</div>

Hi all, I’d like to propose adding an s390x (IBM Z / LinuxONE) runner to the Erlang/OTP GitHub Actions CI pipeline. Background IBM has made hosted s390x GitHub Actions runners publicly available through their open-sou…

---

## [Expose more of OpenSSL's KDFs in \`crypto\` (HKDF, scrypt, Argon2)](https://erlangforums.com/t/expose-more-of-openssls-kdfs-in-crypto-hkdf-scrypt-argon2/5737)

<div class="topic-metadata">

**Author:** [@jtdowney](https://erlangforums.com/u/jtdowney)\
**Replies:** 4\
**Last updated:** [June 29, 2026, 6:12pm UTC](https://erlangforums.com/t/expose-more-of-openssls-kdfs-in-crypto-hkdf-scrypt-argon2/5737 "2026-06-29T18:12:22Z")

</div>

crypto ships one KDF today, pbkdf2\_hmac/5, but the libcrypto it already links against exposes a whole family through OpenSSL EVP\_KDF. Right now, anything else (like Argon2) means a NIF for crypto that’s already sitting i…

---

## [Proposal: make the \`module\_code\` and \`export\_list\` table ceilings runtime-configurable](https://erlangforums.com/t/proposal-make-the-module-code-and-export-list-table-ceilings-runtime-configurable/5722)

<div class="topic-metadata">

**Author:** [@naserca](https://erlangforums.com/u/naserca)\
**Replies:** 2\
**Last updated:** [June 19, 2026, 6:15pm UTC](https://erlangforums.com/t/proposal-make-the-module-code-and-export-list-table-ceilings-runtime-configurable/5722 "2026-06-19T18:15:40Z")

</div>

The maximum number of loaded modules (module\_code, 65,536) and export entries (export\_list, 524,288) are fixed compile-time constants. And in our very large application, we have started to notice :slight\_smile: I’d like…

---

## [On \`or\` and \`and\` operator deprecation](https://erlangforums.com/t/on-or-and-and-operator-deprecation/5665)

<div class="topic-metadata">

**Author:** [@ieQu1](https://erlangforums.com/u/ieQu1)\
**Replies:** 28\
**Last updated:** [June 6, 2026, 1:44pm UTC](https://erlangforums.com/t/on-or-and-and-operator-deprecation/5665 "2026-06-06T13:44:09Z")

</div>

Recently a PR deprecating and and or boolean operator made its way into OTP29. I would argue that these deprected operators have a legit (albeit limited) purpose, when one needs side effects of all function calls in a bo…

---

## [erlang:atom\_prefix/2 - zero-allocation atom prefix matching BIF](https://erlangforums.com/t/erlang-atom-prefix-2-zero-allocation-atom-prefix-matching-bif/5479)

<div class="topic-metadata">

**Author:** [@dkuku](https://erlangforums.com/u/dkuku)\
**Replies:** 15\
**Last updated:** [March 12, 2026, 9:01am UTC](https://erlangforums.com/t/erlang-atom-prefix-2-zero-allocation-atom-prefix-matching-bif/5479 "2026-03-12T09:01:03Z")

</div>

Checking whether an atom starts with a given prefix is a common pattern, but today it requires converting to a list/binary first: lists:prefix(“erl\_”, atom\_to\_list(Module)) This allocates on every call and creates GC p…

---

## [Maps:merge/1 idea](https://erlangforums.com/t/maps-merge-1-idea/5445)

<div class="topic-metadata">

**Author:** [@NelsonVides](https://erlangforums.com/u/NelsonVides)\
**Replies:** 0\
**Last updated:** [February 20, 2026, 7:02am UTC](https://erlangforums.com/t/maps-merge-1-idea/5445 "2026-02-20T07:02:16Z")

</div>

I’m curious how useful or sensible this might be: too often, I see code doing maps:merge(A, maps:merge(B, maps:merge(C, D))) (one example here: otp/lib/kernel/src/logger.erl at b2544ef4ce05c07fe793c570027caa51410dd66b · …

---

## [Proposal: lists:reject/2](https://erlangforums.com/t/proposal-lists-reject-2/5431)

<div class="topic-metadata">

**Author:** [@rlipscombe](https://erlangforums.com/u/rlipscombe)\
**Replies:** 1\
**Last updated:** [February 13, 2026, 12:56pm UTC](https://erlangforums.com/t/proposal-lists-reject-2/5431 "2026-02-13T12:56:40Z")

</div>

I’m using lists:filter/2, and my predicate has a number of clauses. Then I want to invert the sense of the predicate. Elixir’s got Enum.reject/2. Would Erlang be improved by having the same? Alternatives considered; I …

---

## [Erlang socket layer throughput improvements](https://erlangforums.com/t/erlang-socket-layer-throughput-improvements/5379)

<div class="topic-metadata">

**Author:** [@NelsonVides](https://erlangforums.com/u/NelsonVides)\
**Replies:** 6\
**Last updated:** [January 19, 2026, 6:30am UTC](https://erlangforums.com/t/erlang-socket-layer-throughput-improvements/5379 "2026-01-19T06:30:10Z")

</div>

I’ve spent a bit of time on the socket layer of OTP as I’ve been working on erlang DNS servers recently. You all know the classic behaviours, gen\_tcp and gen\_udp, but there’s also the much less common socket module, that…

---

## [A version of \`make\` that supports (almost) all Erlang source types](https://erlangforums.com/t/a-version-of-make-that-supports-almost-all-erlang-source-types/5222)

<div class="topic-metadata">

**Author:** [@uwiger](https://erlangforums.com/u/uwiger)\
**Replies:** 0\
**Last updated:** [November 10, 2025, 2:10pm UTC](https://erlangforums.com/t/a-version-of-make-that-supports-almost-all-erlang-source-types/5222 "2025-11-10T14:10:13Z")

</div>

I decided to make a fairly small extension to the \`make\` module: It addresses two limitations that I’ve personally found a bit annoying: It supports all file types that can be built using \`erlc\` (except \`.idl\`) It a…

---

## [Optimize Erlang comparisons or expose erlang:compare/2](https://erlangforums.com/t/optimize-erlang-comparisons-or-expose-erlang-compare-2/5110)

<div class="topic-metadata">

**Author:** [@josevalim](https://erlangforums.com/u/josevalim)\
**Replies:** 4\
**Last updated:** [October 18, 2025, 5:40pm UTC](https://erlangforums.com/t/optimize-erlang-comparisons-or-expose-erlang-compare-2/5110 "2025-10-18T17:40:40Z")

</div>

I would like to propose exposing erts\_cmp as erlang:compare/1. In Erlang/Elixir, there are several data structures that rely on order, such as gb\_trees, ordsets, and Elixir’s upcoming data structure for the type system. …

---

## [\`open\_port\` and zombie processes](https://erlangforums.com/t/open-port-and-zombie-processes/3111)

<div class="topic-metadata">

**Author:** [@wojtekmach](https://erlangforums.com/u/wojtekmach)\
**Replies:** 8\
**Last updated:** [October 17, 2025, 11:59am UTC](https://erlangforums.com/t/open-port-and-zombie-processes/3111 "2025-10-17T11:59:47Z")

</div>

Elixir has a disclaimer about ports and zombie OS processes, Port — Elixir v1.15.7, basically unless the spawned external program checks if its stdio is closed, it’s not automatically terminated. I’m sure there are situa…

---

## [Add a standard "ping" for processes?](https://erlangforums.com/t/add-a-standard-ping-for-processes/5071)

<div class="topic-metadata">

**Author:** [@nathanl](https://erlangforums.com/u/nathanl)\
**Replies:** 8\
**Last updated:** [September 19, 2025, 8:09pm UTC](https://erlangforums.com/t/add-a-standard-ping-for-processes/5071 "2025-09-19T20:09:01Z")

</div>

Question from Elixir land. I have a GenServer that receives a cast message and performs a side effect (a database update). In a test, I want to send the cast, wait “long enough”, then confirm that the side effect happene…

---

## [Proposal: built-in feature to detect communication errors](https://erlangforums.com/t/proposal-built-in-feature-to-detect-communication-errors/4871)

<div class="topic-metadata">

**Author:** [@keyhan](https://erlangforums.com/u/keyhan)\
**Replies:** 0\
**Last updated:** [July 2, 2025, 12:13pm UTC](https://erlangforums.com/t/proposal-built-in-feature-to-detect-communication-errors/4871 "2025-07-02T12:13:43Z")

</div>

IMO it is nice idea to define pattern of process communication to eliminate errors and bugs, mailboxer is that tool like dialyzer for communication checking, you can see full video here : Mailboxer:Early Detection of …

---

## [Configurable limits in Dialyzer](https://erlangforums.com/t/configurable-limits-in-dialyzer/4837)

<div class="topic-metadata">

**Author:** [@roman](https://erlangforums.com/u/roman)\
**Replies:** 0\
**Last updated:** [June 17, 2025, 11:27pm UTC](https://erlangforums.com/t/configurable-limits-in-dialyzer/4837 "2025-06-17T23:27:46Z")

</div>

Dialyzer uses hardcoded values for limits, which are not always desirable. It would be very useful to be able to overwrite them one way or another. I believe os environment variables with the same names are the acceptabl…

---

## [Permit coma before the enclosing \]](https://erlangforums.com/t/permit-coma-before-the-enclosing/4753)

<div class="topic-metadata">

**Author:** [@meox](https://erlangforums.com/u/meox)\
**Replies:** 27\
**Last updated:** [May 23, 2025, 6:41am UTC](https://erlangforums.com/t/permit-coma-before-the-enclosing/4753 "2025-05-23T06:41:30Z")

</div>

I propose to make this kind of code legal: \[ element\_a, element\_b, \] not the extra “,” before the enclosing of the \] parenthesis. The same apply to map: #{ a =\> 1, b =\> 2, } The main reason for me is t…

---

## [Proposal: Introduce f sigils for string interpolation](https://erlangforums.com/t/proposal-introduce-f-sigils-for-string-interpolation/4551)

<div class="topic-metadata">

**Author:** [@williamthome](https://erlangforums.com/u/williamthome)\
**Replies:** 28\
**Last updated:** [May 6, 2025, 6:59am UTC](https://erlangforums.com/t/proposal-introduce-f-sigils-for-string-interpolation/4551 "2025-05-06T06:59:33Z")

</div>

Hi everyone, I’d like to introduce a proposal to simplify string interpolation in Erlang by extending triple-quoted strings with the f sigil. This builds on the foundation of EEP 64 (Triple-Quoted Strings) and addresses…

---

## [Contributors needed - Redesign Erlang Website with Next.js](https://erlangforums.com/t/contributors-needed-redesign-erlang-website-with-next-js/4465)

<div class="topic-metadata">

**Author:** [@hich](https://erlangforums.com/u/hich)\
**Replies:** 48\
**Last updated:** [February 19, 2025, 7:28pm UTC](https://erlangforums.com/t/contributors-needed-redesign-erlang-website-with-next-js/4465 "2025-02-19T19:28:52Z")

</div>

Join the discussion at https://github.com/erlang/erlang-org/issues/162 Description The current Erlang website, while functional, could benefit from a modern refresh to better represent the vibrant and evolving Erlang co…

---

## [Httpc/httpd improvements](https://erlangforums.com/t/httpc-httpd-improvements/2622)

<div class="topic-metadata">

**Author:** [@tsloughter](https://erlangforums.com/u/tsloughter)\
**Replies:** 19\
**Last updated:** [February 24, 2025, 12:51am UTC](https://erlangforums.com/t/httpc-httpd-improvements/2622 "2025-02-24T00:51:51Z")

</div>

Short story: I wonder if the OTP team and community would be interested in refactorings of inets, specifically httpc and httpd. I think it could be done in stages and an initial pass would be on the API’s to be more user…

---

## [\`send\` optimization for sending to many processes](https://erlangforums.com/t/send-optimization-for-sending-to-many-processes/2200)

<div class="topic-metadata">

**Author:** [@snek](https://erlangforums.com/u/snek)\
**Replies:** 21\
**Last updated:** [January 7, 2025, 10:36am UTC](https://erlangforums.com/t/send-optimization-for-sending-to-many-processes/2200 "2025-01-07T10:36:12Z")

</div>

For cases where you are sending a single message to a large number of processes (tens or hundreds of thousands), currently the only way is to loop through each pid and call send. This is unfortunate because you have to d…

---

## [Builtin support for node auto connection, reconnection and maybe DNS discovery](https://erlangforums.com/t/builtin-support-for-node-auto-connection-reconnection-and-maybe-dns-discovery/4276)

<div class="topic-metadata">

**Author:** [@tsloughter](https://erlangforums.com/u/tsloughter)\
**Replies:** 4\
**Last updated:** [December 16, 2024, 11:21am UTC](https://erlangforums.com/t/builtin-support-for-node-auto-connection-reconnection-and-maybe-dns-discovery/4276 "2024-12-16T11:21:26Z")

</div>

I considered doing my new library gen\_cluster, see Gen\_cluster - New library for cluster formation, as an epmd\_module (Erlang -- How to Implement an Alternative Service Discovery for Erlang Distribution) + loop but decid…

---

## [Float self-tagging](https://erlangforums.com/t/float-self-tagging/4221)

<div class="topic-metadata">

**Author:** [@josevalim](https://erlangforums.com/u/josevalim)\
**Replies:** 3\
**Last updated:** [November 29, 2024, 9:36am UTC](https://erlangforums.com/t/float-self-tagging/4221 "2024-11-29T09:36:15Z")

</div>

I found this interesting paper today: \[2411.16544\] Float Self-Tagging The problem statement: Dynamic and polymorphic languages must attach information, such as types, to run time objects, and therefore adapt the memor…

---

## [Compiler optimization idea: binary:split/3 compiling lists as patterns at compile time](https://erlangforums.com/t/compiler-optimization-idea-binary-split-3-compiling-lists-as-patterns-at-compile-time/3964)

<div class="topic-metadata">

**Author:** [@sabiwara](https://erlangforums.com/u/sabiwara)\
**Replies:** 7\
**Last updated:** [September 3, 2024, 1:18pm UTC](https://erlangforums.com/t/compiler-optimization-idea-binary-split-3-compiling-lists-as-patterns-at-compile-time/3964 "2024-09-03T13:18:12Z")

</div>

Hi, Context: using compiled patterns (binary:compile\_pattern/1) for functions like binary:split/3 can be much faster than passing a list of binaries due to compiled patterns being refs, they cannot be generated at com…

---

## [Per-process atom limit](https://erlangforums.com/t/per-process-atom-limit/3939)

<div class="topic-metadata">

**Author:** [@nhpip](https://erlangforums.com/u/nhpip)\
**Replies:** 26\
**Last updated:** [August 31, 2024, 11:02am UTC](https://erlangforums.com/t/per-process-atom-limit/3939 "2024-08-31T11:02:42Z")

</div>

We recently ran our Elixir code-base against Sobelow which, correctly identified a number of calls to String.to\_atom/1 (which calls the bif erlang:binary\_to\_atom/2), recommending use of ..to\_existing\_atom/2 instead. Thi…

---

## [Buult-in JSON decoding keys as existing atoms](https://erlangforums.com/t/buult-in-json-decoding-keys-as-existing-atoms/3863)

<div class="topic-metadata">

**Author:** [@eproxus](https://erlangforums.com/u/eproxus)\
**Replies:** 7\
**Last updated:** [August 28, 2024, 10:17am UTC](https://erlangforums.com/t/buult-in-json-decoding-keys-as-existing-atoms/3863 "2024-08-28T10:17:15Z")

</div>

A common feature that almost all existing JSON libraries support is converting the resulting keys to atoms. While the new json module technically supports this, the interface is quite cumbersome: Push = fun(Key, Value, …

---

## [Regular expressions engine and ERTS](https://erlangforums.com/t/regular-expressions-engine-and-erts/3775)

<div class="topic-metadata">

**Author:** [@hauleth](https://erlangforums.com/u/hauleth)\
**Replies:** 1\
**Last updated:** [June 23, 2024, 10:50am UTC](https://erlangforums.com/t/regular-expressions-engine-and-erts/3775 "2024-06-23T10:50:26Z")

</div>

ERTS are still compiled against PCRE, which happens to be unmaintained for almost 9 years already. While OTP keeps their own copy of the PCRE it do not see much traffic and wasn’t even updated to last PCRE release (ERTS …

[Next page](https://erlangforums.com/c/erlang-otp-proposals/proposals-ideas/88.md?page=1)
