Erlang/OTP 27 亮点

2024 年 5 月 20 日 · 作者:Björn Gustavsson

Erlang/OTP 27 终于发布了。这篇博客文章将介绍我们最兴奋的新功能。

阅读更多

Erlang/OTP 27 中的优化

2024 年 4 月 23 日 · 作者:Björn Gustavsson

这篇文章探讨了记录更新的新优化以及其他一些改进。它还简要回顾了最近直到 Erlang/OTP 27 的优化历史。

阅读更多

Erlang/OTP 26 亮点

2023 年 5 月 16 日 · 作者:Björn Gustavsson

Erlang/OTP 26 终于发布了。这篇博客文章将介绍我们最兴奋的新功能。

阅读更多

快速随机整数

2022 年 5 月 12 日 · 作者:Raimo Niskanen

当您需要“随机”整数,并且必须快速且廉价地生成它们时;那么 `rand` 模块中功能齐全的伪随机数生成器可能就显得多余了。这篇博客文章将深入探讨该模块的新增功能,即时编译器如何优化它们,已知的技巧,并尝试比较这些苹果和土豆。

阅读更多

多对一并行信号发送优化

2021 年 11 月 5 日 · 作者:Kjell Winblad

这篇博客文章讨论了最近合并到主分支(计划包含在 Erlang/OTP 25 中)的 并行信号发送优化。当多个进程在多核机器上同时向单个进程发送信号时,该优化提高了信号发送吞吐量。目前,仅当使用 ` {message_queue_data, off_heap}` 设置配置接收进程时,该优化才处于活动状态。下图给出了在极端情况下(x 轴上发送信号的 Erlang 进程数,y 轴上的吞吐量)该优化可以带来的可扩展性改进的概念。

阅读更多

用于更好可扩展性的分散式 ETS 计数器

2021 年 8 月 3 日 · 作者:Kjell Winblad

共享的 Erlang 术语存储 (ETS) 表格通常是存储频繁从多个 Erlang 进程更新和读取的数据的绝佳场所。 ETS 向 Erlang 进程提供键值存储。当激活 write_concurrency 选项时,ETS 表格会在内部使用细粒度锁定。因此,多个进程在 ETS 表格中插入和删除不同项目的场景应该可以很好地随着利用的核心数量进行扩展。但是,实际上,这种场景的可扩展性还不完美。这篇博客文章将探讨 `decentralized_counters` 选项如何使我们离完美的可扩展性更近一步。

阅读更多

关于消息传递的一些说明

2021 年 3 月 19 日 · 作者:John Högberg

消息传递一直是 Erlang 的核心,虽然有相当详细的文档,但我们避免深入研究太多细节,以便在实现时拥有更多自由。不过,没有什么能阻止我们在博客文章中描述它,所以让我们仔细看看!

阅读更多

通往 JIT 的道路

2020 年 12 月 1 日 · 作者:Björn Gustavsson

只要 Erlang 存在,就一直有使其更快的需求和雄心。这篇博客文章是一堂历史课,概述了 Erlang 的主要实现,并试图提高 Erlang 的性能。

阅读更多

首次了解 JIT

2020 年 11 月 3 日 · 作者:John Högberg

现在我们已经了解了 BEAM解释器,我们将探讨 OTP 24 中最令人兴奋的新增功能之一:即时编译器,或简称“JIT”。

阅读更多

BEAM 简介

2020 年 10 月 20 日 · 作者:John Högberg

这篇文章是对 BEAM 的简要入门,BEAM 是在 Erlang 运行时系统 (ERTS) 中执行用户代码的虚拟机。它的目的是帮助那些刚接触 BEAM 的人关注即将发布的关于 OTP 24 中 JIT 的系列文章,并将实现细节留到以后。

阅读更多

新的可扩展 ETS ordered_set

2020 年 8 月 19 日 · 作者:Kjell Winblad

在 Erlang/OTP 22 中,带有 `write_concurrency` 选项的 `ordered_set` 类型 ETS 表格的可扩展性比早期版本要好得多。在某些极端情况下,您可以预期在 Erlang/OTP 22 中的吞吐量比 Erlang/OTP 21 高出 100 多倍。这种改进的原因是一种名为 争用自适应搜索树(简称 CA 树)的新数据结构。这篇博客文章将让您深入了解 CA 树的工作原理,并向您展示比较 OTP 21 和 OTP 22 中 ETS `ordered_set` 表格性能的基准测试结果。

阅读更多

OTP 23 亮点

2020 年 5 月 13 日 · 作者:Kenneth Lundin

OTP 23 刚刚发布(2020 年 5 月 13 日)。这是一个漫长的过程,在最终发布之前,分别在 2 月、3 月和 4 月发布了三个候选版本。我们非常感谢我们收到的关于候选版本的反馈,这些反馈揭示了我们内部测试没有发现的一些错误和缺陷。

阅读更多

OTP 22 亮点

2019 年 5 月 13 日 · 作者:Lukas Larsson

OTP 22 刚刚发布。这是一个漫长的过程,在最终发布之前发布了三个候选版本。我们今年决定尝试对主要版本进行一个月的额外测试,我认为额外的时间是值得的。我们收到了来自社区的许多关于我们内部测试没有发现的大小错误的错误报告。

阅读更多

淘汰旧的性能陷阱

2018 年 11 月 7 日 · 作者:John Högberg

Erlang/OTP 22 将带来许多性能改进,但它们中的大多数都具有广泛的影响,并且不会影响您编写高效代码的方式。在这篇文章中,我想重点介绍一些过去令人惊讶地缓慢,但不再需要避免的事情。

阅读更多

OTP 22 中的 TLS 日志改进

2018 年 10 月 5 日 · 作者:Péter Dimitrov

Erlang/OTP 22 将是 `ssl` 应用程序的重要版本。我们正在开发几个新功能和改进,例如对 TLS 1.3 的支持,其中一些已经在主分支上。这篇博客文章介绍了基于新的记录器 API 构建的新 ssl 调试日志记录。

阅读更多

优化陷阱和误区

2018 年 8 月 24 日 · 作者:Björn Gustavsson

在暑假之后,这个博客现在将改变方向,并开始一系列关于静态单赋值 (SSA) 的博客文章。第一篇文章将通过查看尝试优化 BEAM 汇编代码时可能陷入的陷阱和误区,为后续文章设置场景。

阅读更多

BEAM 编译器简史

2018 年 6 月 18 日 · 作者:Björn Gustavsson

这篇博客文章是关于 BEAM 机器的 Erlang 编译器的简短历史课。为了提供一些背景信息,首先将快速了解 Erlang 的抽象机器。

阅读更多

解释器优化

2018 年 6 月 11 日 · 作者:Lukas Larsson

erts 中的 BEAM 解释器已在 OTP 21 中完全重写。大多数指令保持不变,但用于生成 C 代码的 perl 脚本具有新的实现。这篇博客文章将介绍由于这些更改而可能实现的一些优化。

阅读更多

核心 Erlang 总结

2018 年 5 月 30 日 · 作者:Björn Gustavsson

这篇博客文章总结了前两篇博客文章中开始的核心 Erlang 探索。描述了其余的默认核心 Erlang 传递,然后查看核心 Erlang 在编译器内部的表示方式。

阅读更多

核心 Erlang 示例

2018 年 5 月 7 日 · 作者:Björn Gustavsson

这篇博客文章是关于 Core Erlang 格式的第一篇。在这篇博客文章中,我们将通过比较 Erlang 代码和相应的 Core Erlang 代码的示例来介绍 Core Erlang 格式。

阅读更多

我的 OTP 21 亮点

2018年5月2日 · 作者:Lukas Larsson

OTP-21 候选版本 1 刚刚发布。我想回顾一下我最兴奋的更改。很可能这主要意味着 erts 和核心库中的功能,因为这些是我最熟悉的更改。

阅读更多

OTP 21 中的内存检测

2018年5月2日 · 作者:John Högberg

Erlang/OTP 21 的内存检测模块已重写,使其更易于使用。在这篇文章中,我将描述新功能背后的基本原理以及如何使用它们。

阅读更多

使用“time”选项探索编译器

2018年4月19日 · 作者:Björn Gustavsson

这是关于编译器的系列博客文章的第一篇。将会有关于编译器现在如何工作、未来如何工作以及一些历史说明来解释为什么某些事情是现在这样的。在这篇博客文章中,我将讨论探索编译器最有用的选项之一,即time选项。

阅读更多

OTP 21 中的 I/O 轮询选项

2018年4月11日 · 作者:Lukas Larsson

Erlang/OTP 21 将引入一个全新的 IO 轮询实现。这个新实现带有一组新的可调参数,可用于充分利用您的系统。这篇博客文章描述了这些参数,并试图描述它们应该用于什么。

阅读更多