TIL about #jemalloc, a scalable concurrent malloc(3) implementation for #FreeBSD and #Linux, only to find out it had its 20th birthday a few days ago! 🎂

Check out the original paper on https://papers.freebsd.org/2006/bsdcan/evans-jemalloc/

A Scalable Concurrent malloc(3) Implementation for FreeBSD :: FreeBSD Presentations and Papers

(more Linux and FOSS news in previous posts of thread)

Rust 1.95 adds cfg_select! macro, if-let match guards, and destabilized JSON target specs:
https://alternativeto.net/news/2026/4/rust-1-95-adds-cfg_select-macro-if-let-match-guards-and-destabilized-json-target-specs/

GCC Compiler Adds Arm AGI CPU Target:
https://www.phoronix.com/news/GCC-Arm-AGI-CPU

CMake Pursuing Tighter Integration With Package Managers, Other Improvements:
https://www.phoronix.com/news/CMake-Tighter-Package-Integrate

Zig 0.16.0 brings I/O interfaces and expands native CI target testing:
https://alternativeto.net/news/2026/4/zig-0-16-0-brings-i-o-interfaces-and-expands-native-ci-target-testing/

Forgejo v15.0 adds repo-scoped tokens, OIDC for Actions, and major usability upgrades:
https://alternativeto.net/news/2026/4/forgejo-v15-0-adds-repo-scoped-tokens-oidc-for-actions-and-major-usability-upgrades/

OpenProject 17.3 adds dedicated sprint objects, auto sprint board creation, and much more:
https://alternativeto.net/news/2026/4/openproject-17-3-adds-dedicated-sprint-objects-auto-sprint-board-creation-and-much-more/

Thunderbolt is an open-source ‘AI client’ from Mozilla’s for-profit arm:
https://www.omgubuntu.co.uk/2026/04/mozilla-thunderbolt-ai-client

Nginx 1.30 Released With Multipath TCP, ECH & More:
https://www.phoronix.com/news/Nginx-1.30-Released

WordPress adds Telegram bot, MCP controls, and complimentary access to paid newsletter:
https://alternativeto.net/news/2026/4/wordpress-adds-telegram-bot-mcp-controls-and-complimentary-access-to-paid-newsletter/

WooCommerce 10.7 cuts database queries and adds Store API caching:
https://alternativeto.net/news/2026/4/woocommerce-10-7-cuts-database-queries-and-adds-store-api-caching/

OpenSSL 4.0 Released with Support for Encrypted Client Hello, SNMP KDF, and More:
https://9to5linux.com/openssl-4-0-released-with-support-for-encrypted-client-hello-snmp-kdf-and-more

Servo Browser Engine Making It Easier For Embedded Use:
https://www.phoronix.com/news/Servo-Embed-Crates-LTS

WireGuard For Windows Reaches v1.0:
https://www.phoronix.com/news/WireGuard-For-Windows-1.0

jemalloc 5.3.1 Released With Many Improvements After Nearly Four Year Hiatus:
https://www.phoronix.com/news/jemalloc-5.3.1

FosseryWeb progress report:
I regenerated the JavaScript cheatsheets with page-builders, made some corrections (splitting long lines in code, making links relative) in Java cheatsheets, and now I'm working on the Java Maps cheatsheet.
https://fosseryweb.codeberg.page/@beta/cheatsheets/
https://fosseryweb-min.codeberg.page/@beta/cheatsheets/

Free Software Foundation Says OnlyOffice Cannot Use AGPL to Restrict Forks:
https://linuxiac.com/fsf-says-onlyoffice-cannot-use-agpl-to-restrict-forks/

#WeeklyNews #OpenSource #FOSSNews #FOSS #OpenSourceNews #News #Rust #GCC #CMake #Zig #Forgejo #OpenProject #Thunderbolt #AI #Nginx #WordPress #WooCommerce #OpenSSL #Servo #WireGuard #jemalloc #FosseryWeb #FosseryWebMin #FSF #ONLYOFFICE #Programming #Dev #FosseryTech

Rust 1.95 adds cfg_select! macro, if-let match guards, and destabilized JSON target specs

Rust 1.95 introduces the cfg_select! macro for compile-time branching and extends let chain support to match expressions. It also removes custom target specs on stable rustc and brings several stabilized APIs.

AlternativeTo
메타, jemalloc에 대한 새로운 투자와 오픈소스 협력 강화

<ul> <li>고성능 메모리 할당자 <strong>jemalloc</strong>은 Meta 소프트웨어 스택에서 Linux 커널, 컴파일러와 함께 핵심 인프라 역할을 해온 기...

GeekNews
🥳🎉 Meta's backtracking on #jemalloc is hailed as a #groundbreaking move! Because clearly, the world needed another deep dive into memory allocation strategies over their morning coffee. 🙄🔍 Who knew infrastructure updates could be so riveting?
https://engineering.fb.com/2026/03/02/data-infrastructure/investing-in-infrastructure-metas-renewed-commitment-to-jemalloc/ #Meta #memoryallocation #infrastructureupdates #technews #HackerNews #ngated
Investing in Infrastructure: Meta’s Renewed Commitment to jemalloc

Meta recognizes the long-term benefits of jemalloc, a high-performance memory allocator, in its software infrastructure. We are renewing focus on jemalloc, aiming to reduce maintenance needs and mo…

Engineering at Meta
Investing in Infrastructure: Meta’s Renewed Commitment to jemalloc

Meta recognizes the long-term benefits of jemalloc, a high-performance memory allocator, in its software infrastructure. We are renewing focus on jemalloc, aiming to reduce maintenance needs and mo…

Engineering at Meta
Meta 的 jemalloc 宣言

在 Lobsters 上看到「Investing in Infrastructure: Meta’s Renewed Commitment to jemalloc」這篇,這讓我馬上想到 Jason Evans (就是發明 jemalloc 的人,je 取自他的名字縮寫) 在去年寫的「jemalloc Postmortem」這篇,文章最後提到 Meta 的制度設計使得不會...

Gea-Suan Lin's BLOG

At $dayjob, we have an embedded #Linux device that is periodically running low on memory. It's using the default (#glibc) allocator.

No leaks, and lowering MALLOC_MMAP_THRESHOLD_ made the problem go away. So: memory fragmentation.

With glibc, I'm sure that's no surprise to anyone "Use #jemalloc", right?

Sure, some do, but I don't want to use a hammer that big without trying to understand the problem first. Jemalloc being effectively end of life also doesn't really thrill me.

1/5

Trying to further improve #swad, and as I'm still unhappy with the amount of memory needed ....

Well, this little and special custom #allocator (only dealing with equally sized objects on a single thread and actively preventing #fragmentation) reduces the resident set in my tests by 5 to 10 MiB, compared to "pooling" with linked lists in whatever #FreeBSD's #jemalloc serves me. At least something. 🙈

https://github.com/Zirias/poser/blob/master/src/lib/core/objectpool.c

The resident set now stabilizes at 79MiB after many runs of my somewhat heavy jmeter test simulating 1000 distinct clients.

poser/src/lib/core/objectpool.c at master · Zirias/poser

POsix SERvices framework for C. Contribute to Zirias/poser development by creating an account on GitHub.

GitHub
Пример типичной системно-прикладной разработки, реализация своей «очереди сообщений» (event loop).
Использованием
#epoll, вместо «традиционных» select & poll, для асинхронной работы через polling’а (и мультиплексирования).

Отслеживание файловых дескрипторов через
#epoll выглядит более современно, меньше копирования памяти между user space и kernel space. А при появлении ожидаемых данных можно напрямую переходить к объекту или структуре данных, что важно при наблюдении за несколькими файлами и\или соединениями. Устраняется поиск «сработавшего» файлового дескриптора в индексных массивах, полноценное О(1) во всех случаях. Можно сразу же работать с теми экземплярами объектов, которые оборачивают тот файл или udp-поток, tcp-, quic-соединение, где появились новые данные.

Есть несколько готовых к использованию «очередей сообщений» (event loop'ов) —
#libev, #libuv, #libevent. Для некоторых агент-серверные решений и брокера #RabbitMQ это подходит. Однако, в некоторых случаях AMQP-библиотеки не скрещиваются с уже готовыми «очередями сообщений». Потому что агентская часть может активно использовать асинхронно-реактивное программирование с хорошей и проверенной «горизонтальной масштабируемостью». Т.е. на агентской части выполняется много работы и реализация сделана через sharing nothing многопоточность. Это такая парадигма, когда не просто достигается не только горизонтальная масштабируемость через lock-free\wait-free, а так же исключается много вредного, как тот же cache ping-pong или false sharing. Внутри агентов идёт своё управление потоками с выделениями памяти. Не только в плане «динамической памяти» (heap, аллокаторы а-ля #jemalloc от #Facebook), но и приколами вокруг pinning страниц, учёта #NUMA и даже huge pages(меньше промахов в #TLB).

Почему бы не использовать epoll?
Библиотека не обязана вычитывает данные целиком из потока (сокета), а может забирает данные лишь до тех пор, пока не насытится автомат состояний (finite-state machine). Например, выполняется парсинг сущностей AMQP-протокола, которые, по мере накопления, передаются в обработчики указанные клиентом библиотеки.
И это плохо соотносится с тем, что используя
#epoll надо выбирать какой вариант оповещений использовать:
• «по уровню» (level-triggered),
• «по фронту» (edge-triggered).

Особенности поведения отдельно взятой библиотеки может не позволять использовать работу «по фронту» (edge-triggered), т.к. библиотека не вычитывает полностью все данные из файловых дескрипторов.

Можно быть хоть пять раз technical lead и всё это прекрасно знать, но следует помнить, что как только в коде появляется флаг EPOLLET, то необходимо проводить аудит работы с потоками данных. Это избавляет команду от многих заморочек вокруг тестирования и ковыряния с каким-то совершенно непонятным поведением кода.

Про
«Edge Triggered Vs Level Triggered interrupts»

#programming #linux #softdev #трудовыебудни
Edge Triggered Vs Level Triggered interrupts

Discussion: Level triggered: as long as the IRQ line is asserted, you get an interrupt request. When you serve the interrupt and return, ...