Skip to content
CAI
Software that uses CAICheck a score

erlang/otp

53.3

Weak · 6 August 2026

990.8k

lines of production code

Erlang

primary language

3

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is the Erlang/OTP runtime environment and standard library, providing the foundational infrastructure for building concurrent, distributed, and fault-tolerant applications. It encompasses the Erlang runtime system (ERTS) with modernized JIT compilation, native I/O handling, and improved threading, alongside a comprehensive suite of standard library modules for networking, cryptography, and data processing. The codebase has been significantly refactored to use Markdown-based documentation, Apache 2.0 licensing, and modern build systems, while removing legacy components like HiPE and CORBA.

How it got here

2009 — License migration and modernization

157 changes.

The project underwent a comprehensive license migration from the Erlang Public License to the Apache License 2.0 across the entire codebase. This period also involved modernizing the build system, documentation formats, and removing deprecated or obsolete components such as HiPE, VxWorks support, and various legacy applications.

2010–2021 — JIT backend and concurrency infrastructure

57 changes.

This period focused on modernizing the Erlang runtime's concurrency and performance foundations, most notably by introducing a modular, cross-platform JIT compiler backend for x86 and ARM64 architectures. Concurrently, the team significantly expanded test coverage across the compiler, ASN.1, and emulator components, while also implementing critical low-level threading and atomic operation improvements for Unix and Windows platforms.

2022–2026 — Test coverage and compliance infrastructure

10 changes.

This period focused on expanding test coverage for the SSA compiler, binary suite, and doc chunk generation, while introducing safe generators for property-based testing. Additionally, the project established compliance infrastructure through ORT configuration and updated bundled libraries like Zstandard and AsmJit.

Features

ASN.1 documentation structure and release notes added

The \lib/asn1/doc\ directory now contains the build configuration (\Makefile\), the ExDoc configuration (\docs.exs\) pointing to specific ASN.1 guides, and a comprehensive \notes.md\ release history. This change establishes the infrastructure for generating and maintaining ASN.1 documentation using ExDoc, while also providing users with a detailed changelog of past improvements, bug fixes, and potential incompatibilities in the ASN.1 application.

lib/asn1/doc · high confidence

Add ARM64 (AArch64) JIT backend

The Erlang JIT compiler now supports the ARM64 architecture. This adds a new set of files under \erts/emulator/beam/jit/arm/\ (including \beam\asm.hpp\, \instr\\*.cpp\, and \generators.tab\) that generate optimized native code for AArch64. This enables the Erlang runtime to execute hot paths as native machine code on ARM64-based systems, improving performance for workloads running on those platforms.

erts/emulator/beam/jit/arm · high confidence

Add ASN.1 definitions for PKCS\#10, PKCS\#7, and CMS

The public\_key application now includes ASN.1 source files for PKCS\#10 (Certificate Request), PKCS\#7 (Cryptographic Message Syntax), and CMS (Cryptographic Message Syntax) standards. These additions provide the underlying data structures required for encoding and decoding these formats, enabling the application to handle certificate requests and cryptographic message envelopes.

_lib/public\key · high confidence

Add LTTng and DTrace dynamic tracing support to runtime\_tools

The runtime\_tools application now includes a new LTTng tracing framework and DTrace support, enabling users to perform dynamic tracing of Erlang processes, ports, and function calls. This includes C source files (dyntrace.c, dtrace\_user.d) and headers (dyntrace\_lttng.h) that implement the low-level tracing infrastructure, along with comprehensive user guides (lttng.md, dtrace.md, systemtap.md) and example scripts for DTrace and SystemTap. The changes also add documentation for the dbg module's tracing capabilities.

_lib/runtime\tools · high confidence

Add MSYS2 path conversion and build helper scripts for Windows 64-bit support

Added a new set of shell scripts in erts/etc/win32/msys\_tools to support building and running Erlang on Windows 64-bit. The new files include msys2win\_path.sh and win2msys\_path.sh for converting between MSYS2 and native Windows paths, along with build wrappers (erl, erlc, javac.sh) that translate command-line arguments for the native Windows executables. Additional helpers (make\_bootstrap\_ini.sh, make\_local\_ini.sh, reg\_query.sh, w32\_path.sh) assist in generating configuration files and querying the Windows registry, enabling the Erlang emulator and distribution tools to function correctly in a Cygwin/MSYS2 environment.

_erts/etc/win32/msys\tools · high confidence

Add MSYS2/Windows build tooling for erts

Added new shell scripts (ar.sh, cc.sh, ld.sh, mc.sh, rc.sh) and a C utility (coffix.c) in erts/etc/win32/msys\_tools/vc to support building Erlang on Windows 64-bit using MSYS2 and the Microsoft Visual C++ compiler. These tools translate Unix-style build commands into native Windows tooling calls, enabling the OTP build system to function correctly on Win64.

_erts/etc/win32/msys\tools/vc · high confidence

Add atomics and counters modules to the preloaded set

The \atomics\ and \counters\ modules are now included in the preloaded set, making them available immediately at boot without requiring explicit loading. The \atomics\ module provides atomic operations on 64-bit integer arrays, while \counters\ offers shared mutable counter variables with configurable concurrency options. Both modules are marked as available since OTP 21.2.

erts/preloaded · high confidence

Add atomlimit-safe generators for PropEr and QuickCheck

Introduced new modules ct\_proper\_ext and ct\_quickcheck\_ext in the common\_test library to provide variants of the PropEr and QuickCheck generators that avoid creating new atoms at random, thereby preventing the atom table from being exhausted during property tests. These safe generators pick from existing atoms and do not shrink, offering a safer alternative for testing code that might otherwise trigger atom limit issues.

_lib/common\_test/proper\ext · high confidence

Add build system and documentation for the Megaco application

The Megaco application now includes a full build and documentation infrastructure. A new \configure\ script and \configure.ac\ template enable the build system to detect and configure the flex scanner, with options to enable reentrant scanning and line number tracking. A \.gitignore\ file is added to exclude generated build artifacts, logs, and documentation output. Documentation is now generated using ExDoc, with a \docs.exs\ configuration file and a \doc/Makefile\ to manage the build process. Additionally, new Markdown guides are introduced to document the Megaco architecture, debugging, encoding, and examples, providing users with comprehensive resources for understanding and using the library.

lib/megaco · high confidence

Add documentation and build infrastructure for the diameter application

The diameter application now includes a comprehensive set of documentation files (guides and references) and build infrastructure (Makefiles, scripts, and configuration files). This includes the \diameterc\ compiler script for generating Erlang source from dictionary files, a \docs.exs\ configuration for ExDoc, and various make targets. These changes provide the necessary tooling and reference material for users to compile and use the diameter application effectively.

lib/diameter · high confidence

Add eldap, an LDAP client library

The eldap application is added, providing an Erlang client API for the Lightweight Directory Access Protocol (LDAP). This includes the core implementation in src/eldap.erl, ASN.1 definitions for LDAPv3, header files, and a comprehensive test suite. The library supports TCP and SSL/TLS connections, authentication (bind), search, modify, and other LDAP operations.

lib/eldap · high confidence

Add inets hardening guide and update documentation build system

Added a new 'Hardening' guide for the inets application, providing security recommendations for the HTTP client (httpc) and HTTP server (httpd) in production environments. The guide covers TLS configuration, timeouts, redirect following, connection limits, and cookie handling. Additionally, the documentation build system was modernized by introducing a new Makefile and an Elixir-based docs configuration (docs.exs) that organizes modules into groups and includes the new guide.

lib/inets · high confidence

Add metaprogramming library Merl and examples to syntax\_tools

The syntax\_tools application now includes the Merl library, which provides a user-friendly interface for building and matching abstract syntax trees (ASTs) in Erlang. This addition enables developers to easily generate and manipulate code programmatically using macros and template-like syntax. The release also includes example implementations (a basic interpreter/compiler and a Lisp interpreter) and their corresponding test suites to demonstrate and verify the new metaprogramming capabilities.

_lib/syntax\tools · high confidence

Add smoke test script for Cloudi packages

A new automated smoke test has been added to the compiler scripts, designed to compile and validate a suite of Cloudi packages alongside Elixir dependencies. The test script clones and builds Elixir, then runs a Mix-based test suite that pulls in specific versions of libraries such as Bear, Cowboy, Ecto, and various Cloudi services. The test configuration is locked to ensure stability over time, and the script handles both 'main' and 'rabbitmq' dependency sets.

lib/compiler/scripts · high confidence

Add xmerl documentation examples and assets

The xmerl application now includes a dedicated documentation directory containing example files and assets. This includes a Makefile for building documentation, a guide on customization functions, and various XML, HTML, CSS, and Erlang source files (such as motorcycles and people datasets) that serve as examples for using xmerl's XSLT-like transformation capabilities.

lib/xmerl · high confidence

Added WSL cross-compilation support for Windows

New shell scripts and batch files have been added to the erts/etc/win32/wsl\_tools directory to enable cross-compilation from Windows using the Windows Subsystem for Linux (WSL). This includes SetupWSLcross.bat for configuring the Visual Studio environment, wrappers for erl, erlc, and javac that translate paths and arguments for WSL execution, and utility scripts (w32\_path.sh, reg\_query.sh, make\_bootstrap\_ini.sh, make\_local\_ini.sh) to handle path conversion and registry queries. These tools allow developers to build Erlang/OTP on Windows using WSL, supporting architectures such as x64, arm64, and amd64\_arm64.

_erts/etc/win32/wsl\tools · high confidence

Added WSL/Windows build toolchain wrappers for Erlang compilation

Added new shell scripts and a C utility in erts/etc/win32/wsl\_tools/vc to emulate standard Unix build tools (ar, cc, ld, mc, rc) on Windows Subsystem for Linux (WSL) environments. The new files include ar.sh, cc.sh, ld.sh, mc.sh, and rc.sh, which translate Unix-style compiler and linker arguments into Microsoft Visual C++ (cl.exe, link.exe, etc.) commands. Additionally, a new C program, coffix.c, is introduced to fix COFF header incompatibilities between GCC and MSVC object files. These changes enable the Erlang/OTP build system to function correctly on WSL by providing the necessary tooling wrappers.

_erts/etc/win32/wsl\tools/vc · high confidence

Added build-time utility scripts for the Erlang emulator

The erts/emulator/utils directory now includes several new scripts to support the build process and internal tooling. A Perl script, beam\_emu\_vars, analyzes assembly output to determine register allocation for key emulator variables. The new count script provides a mechanism to count static instruction frequency across loaded BEAM files. A new find\_cross\_ycf script assists in locating yielding C functions. The gen\_git\_version script generates a header with the current git commit SHA. The make\_compiler\_flags script generates C headers containing build configuration, CFLAGS, and LDFLAGS. The loaded script reports the number of loaded modules and their total size. The make\_version script now accepts an additional OTP version argument and handles Windows architecture mapping. Additionally, the old mkver.c file has been removed, and existing scripts like beam\_makeops, beam\_strip, make\_alloc\_types, make\_driver\_tab, make\_preload, make\_tables, and make\_version have been updated with modern license headers and copyright years.

erts/emulator/utils · high confidence

Added internal documentation for ERTS subsystems

Added internal documentation for several ERTS subsystems, including automatic yielding of C code (YCF), the BeamAsm JIT, carrier migration, check I/O, code loading, instruction counting, delayed deallocation, and garbage collection. These new markdown files in erts/emulator/internal\_doc/ provide detailed explanations of internal mechanisms, best practices, and implementation details for developers and maintainers.

_erts/emulator/internal\doc · high confidence

Added license headers and build rules for internal documentation assets

Added a Makefile to the erts/emulator/internal\_doc/assets directory to automate the generation of PNG and EPS figures from .dia (Dia) source files, along with .gitignore and .license files for the generated assets. This change ensures that all internal documentation assets are properly licensed under the Apache 2.0 license and can be rebuilt or updated via the build system.

_erts/emulator/internal\doc/assets · medium confidence

Common Test adds property-based testing macros and logging verbosity controls

The Common Test framework now includes a new header file, ct\_property\_test.hrl, which provides macros for property-based testing using EQC, Proper, or Triq backends. Additionally, ct.hrl has been updated with new macros for controlling log message importance and verbosity levels, and includes macros for managing peer nodes and backward compatibility.

_lib/common\test/include · high confidence

Common Test documentation converted to Markdown and built with ExDoc

The Common Test documentation has been migrated from XML to Markdown format, with a new \docs.exs\ configuration file added to generate documentation using ExDoc. A \Makefile\ has been introduced to manage the documentation build process, and the \common\_test\_app.md\ file provides a high-level overview of the Common Test framework.

_lib/common\test/doc · high confidence

Dialyzer documentation and build infrastructure updated

The \lib/dialyzer\ directory now includes a new \doc\ subdirectory containing Markdown-based documentation sources (\dialyzer\_chapter.md\, \typer\_cmd.md\) and a \Makefile\ to generate the reference manual. Additionally, the \cerl\_prettypr\ and \dialyzer\_behaviours\ source files have been added or updated to support the static analysis tool's internal operations and documentation generation.

lib/dialyzer · high confidence

EDoc gains command-line interface and new doclet/layout modules for EEP-48 and Markdown

The EDoc application now includes a command-line entry point (\bin/edoc\) and new Erlang modules (\edoc\_cli\, \edoc\_doclet\_chunks\, \edoc\_doclet\_markdown\, \edoc\_layout\_chunks\, \edoc\_html\_to\_markdown\) that enable generating EEP-48 doc chunks and Markdown documentation. This allows users to produce documentation in the new standard formats directly from the command line or via the new doclets, supporting a migration path from traditional HTML output to the EEP-48 and Markdown-based documentation systems.

lib/edoc · high confidence

Erl\_Interface build system and documentation modernized

The Erl\_Interface library has been modernized with a new autoconf-based build system, introducing \config.h.in\ and \configure.ac\ templates to replace the previous build configuration. Documentation has been migrated from XML to Markdown format, with new \docs.exs\ and guide files generated via ExDoc, and the \Makefile\ structure updated to support this new documentation pipeline.

_lib/erl\interface · high confidence

Erlang/OTP 27: Major stdlib overhaul, new features, and deprecations

The stdlib module has been significantly updated with new functions and capabilities, including map comprehensions, the \\~ts\ format specifier for Unicode strings, and \timer:tc/1,2,3\ for benchmarking. The \supervisor\ module now supports \hibernate\_after\ and \significant\_bystander\ options, while \gen\_statem\ and \gen\_server\ have added support for \hibernate\_after\ and \auto\_hibernate\_timeout\. The \re\ module now uses PCRE2, and the \unicode\ module has been updated to support Unicode 15.0.0. Several modules, including \slave\, \gs\, and \random\, have been deprecated. The \ets\ module now supports \compressed\ tables and \decentralized\_counters\. The \shell\ has been enhanced with tab completion, multiline editing, and history search. Various bug fixes and performance optimizations have been applied across the board.

lib/stdlib · high confidence

Improved partial and selective decoding of ASN.1 messages

The ASN.1 compiler now supports partial and selective decoding, allowing applications to decode only specific fields or skip unwanted data. This is achieved through new modules (asn1ct\_partial\_decode, asn1ct\_table, asn1ct\_func, etc.) that handle the generation of decoding instructions and the management of runtime dependencies. Users can now configure the compiler to generate code that decodes only the necessary parts of a message, improving performance and reducing memory usage for large or complex ASN.1 structures.

lib/asn1/src · high confidence

Initial ORT configuration for license policy and scanning

The project now includes an initial ORT (OSS Review Toolkit) configuration that defines license evaluation rules and classifications. The \evaluator.rules.kts\ script enforces a policy where licenses are either allowed, require review, or are disallowed, and it will fail the build if an unhandled or unmapped license is detected. The \license-classifications.yml\ file explicitly categorizes specific licenses (such as Apache-2.0, BSD-3-Clause, and GPL-2.0) into these policy categories. Additionally, the \config.yml\ enables repository package curation, configures the OSV advisor, and sets the reporter to generate an SBOM in SPDX 2.3 format.

.ort · high confidence

Introduce Unix-specific synchronous I/O backend for sockets and files

Added new C source files \unix\_prim\_file.c\ and \unix\_socket\_syncio.c\ to the \erts/emulator/nifs/unix\ directory. These files implement a synchronous I/O backend (essio) for Unix platforms, providing the underlying NIF implementations for file operations and socket I/O. This change consolidates and modernizes the Unix-specific handling of file descriptors, socket connections, and related system calls, separating them from the generic or Windows-specific code. Users benefit from improved reliability and performance in Unix-based Erlang/OTP runs, with the new backend handling core I/O operations more efficiently.

erts/emulator/nifs/unix · high confidence

Introduce new modules for configuration, connection logging, and group handling

The Common Test framework adds several new internal modules to support configuration management, connection logging, and group resolution. Specifically, \ct\_config\ and \ct\_config\_plain\ handle reading and manipulating configuration data from text files, while \ct\_config\_xml\ adds support for XML-based configuration files. A new \ct\_conn\_log\_h\ module provides a handler for logging connection events to files, and \ct\_default\_gl\ introduces a default group leader process. Additionally, \ct\_groups\ is added to manage the search and resolution of test case groups. These changes enhance the framework's ability to manage test configurations and improve logging capabilities.

_lib/common\test/src · high confidence

Introduction of Yielding C Fun (YCF) tool for ERTS

Added the Yielding C Fun (YCF) tool to the Erlang/OTP build system. This tool transforms C functions into yieldable coroutines, enabling the implementation of yielding Erlang NIFs and BIFs. The directory includes the YCF source code, build files (GNUmakefile, main\_target.mk), a shell script wrapper, and comprehensive test examples demonstrating features like automatic yielding, reduction consumption, and custom state save/restore hooks.

_erts/lib\_src/yielding\_c\fun · high confidence

Jinterface: Add Eclipse project configuration and documentation structure

The Jinterface library now includes Eclipse project configuration files (.classpath, .project, .settings) to support development in the Eclipse IDE. Additionally, the documentation structure has been updated to include a user guide in Markdown format, a Makefile for generating Javadoc, and a notes file for release history, all of which are now tracked in the repository.

lib/jinterface · high confidence

Migrate SASL documentation to Markdown and ExDoc

The SASL application documentation has been converted from XML to Markdown format and is now generated using ExDoc. This change updates the build system (Makefile) and configuration (docs.exs) to support the new documentation structure, which includes guides for error logging and references for appup, rel, relup, and script files. The migration also introduces a new \make release\_docs\ target to place documentation in the release folder and updates the Software Bill of Materials to reflect the new file locations.

lib/sasl · high confidence

Migrate parsetools documentation and tests to ExDoc and Common Test

The parsetools documentation has been migrated from the old XML/SGML format to Markdown and ExDoc, with new \doc/Makefile\ and \doc/docs.exs\ files replacing the previous \doc/src/\ structure. Additionally, the test suite has been updated to use Common Test hooks (\ts\_install\_cth\) and includes new test suites for application and appup file validation (\app\_SUITE\), alongside updated \leex\_SUITE\ and \yecc\_SUITE\ files.

lib/parsetools · high confidence

Migrate tools documentation to ExDoc

The documentation for the \tools\ application has been migrated to the ExDoc system. This change introduces a new \lib/tools/doc/\ directory containing a \Makefile\ and \docs.exs\ configuration, along with Markdown guides for \cover\, \cprof\, \erlang\_mode\, \fprof\, \lcnt\, and \xref\. Users will now see these tools' documentation generated via ExDoc rather than the previous format.

lib/tools · high confidence

Mnesia user guide and documentation updated to Markdown format

The Mnesia user guide has been converted from XML to Markdown, with the documentation now generated via ExDoc. The guide is structured into multiple chapters covering topics such as getting started, building a database, transactions, and system information. Additionally, the documentation build system has been refactored to use a new makefile and an Elixir script (docs.exs) to manage the conversion and generation of the documentation.

lib/mnesia · high confidence

New JIT backend for the BEAM VM

The Erlang JIT compiler has been refactored into a new, modular architecture. This change introduces a common assembler base class and separates architecture-specific code, enabling the addition of new back-ends (such as ARM) alongside the existing x86 implementation. The new structure also improves integration with debugging tools like GDB and \perf\, and optimizes binary construction and matching.

erts/emulator/beam/jit · high confidence

New Windows I/O backend for sockets and files

Added new NIF implementations for Windows: win\_prim\_file.c handles file operations with support for long and UNC paths, and win\_socket\_asyncio.c implements an asynchronous I/O backend using Windows I/O Completion Ports and overlapped I/O for sockets. This introduces a new mechanism for handling Windows file and socket I/O, improving reliability and performance on that platform.

erts/emulator/nifs/win32 · high confidence

New and updated automation scripts for build, validation, and CI

The repository introduces several new scripts to improve build automation, validation, and continuous integration workflows. A new \scripts/build-otp-tar\ script creates pre-built and clean source tarballs. \scripts/check\_doc\_since\ compares documentation across versions to detect missing or incorrect 'since' attributes. \scripts/diffable\ compiles applications to assembly or disassembly for diffing compiler output. \scripts/license-header.es\ scans and updates license headers across the repository. \scripts/otp\_build\_check\ performs a comprehensive set of build checks (format, dialyzer, docs, tests) before testing. \scripts/otp\_check\_html\_links.exs\ validates HTML links and anchors in generated documentation. The \scripts/pre-push\ hook is updated to enforce push policies and reject invalid commit messages. \scripts/run-dialyzer\ is updated to run dialyzer on more applications. \scripts/valgrind\_beamasm\_update.escript\ updates valgrind logs for the JIT. These changes enhance the reliability and consistency of the build and release process.

scripts · high confidence

New cross-compilation configurations for Android, iOS, and Raspberry Pi

Added new cross-compilation configuration files to support building Erlang/OTP for a wider range of platforms. This includes support for ARM-based Android devices, Apple iOS (both device and simulator), and the Raspberry Pi 3. These changes provide pre-configured build settings that simplify the process of cross-compiling Erlang for these specific target architectures.

xcomp · high confidence

Refactored crypto library into modular C source files

The C source code for the crypto library has been reorganized into separate, specialized files (such as aead.c, algorithms.c, api\_ng.c, and atoms.c) to improve code structure and maintainability. This refactoring supports the introduction of new cryptographic features, including support for SHAKE128/256, SM4, ChaCha20-Poly1305, and various elliptic curve algorithms, while also fixing memory leaks and compatibility issues with different OpenSSL versions.

_lib/crypto/c\src · high confidence

Reltool migration to Markdown documentation and new escript entry point

The Reltool application has been updated to use Markdown and ExDoc for its documentation, which is now located in the \doc/guides\ directory and configured via \doc/docs.exs\. Additionally, a new \reltool.escript\ has been added to \lib/reltool/bin\, providing a simplified command-line interface for release management tasks such as creating configurations, releases, and target directories. The existing XML-based documentation has been removed in favor of this new structure.

lib/reltool · high confidence

SNMP agent and manager support for IPv6 and dual-stack networking

The SNMP agent and manager now support IPv6 and dual-stack networking. The transport domain is now a valid option when registering or updating agent information, allowing for both IPv4 and IPv6 transport domains. The manager's network interface (net\_if) has been rewritten to support both IPv4 and IPv6, and test cases have been updated to include IPv6 testing. Additionally, the SNMP agent handles transport domains properly in all cases, including trap sending.

lib/snmp · high confidence

TFTP application is now available as a standalone library

The TFTP application has been separated from the \inets\ application and is now available as a standalone library in \lib/tftp\. This change includes the full implementation of the Trivial File Transfer Protocol, including the main \tftp\ module, callback modules (\tftp\_binary\, \tftp\_file\), and supporting utilities (\tftp\_engine\, \tftp\_lib\). The release also introduces a new \tftp\_logger\ callback behavior for logging, migrates documentation to Markdown and ExDoc, and updates the license headers to include SPDX identifiers. Users can now integrate TFTP functionality independently of the broader \inets\ suite.

lib/tftp · high confidence

Test server build and configuration infrastructure

The test server (ts) is now built and installed as a standalone component within the common\_test application. This includes the core Erlang modules (ts, ts\_run, ts\_lib, ts\_make, ts\_erl\_config, ts\_autoconf\_win32, ts\_install, ts\_benchmark), their associated header and configuration files (ts.hrl, ts.config, ts.unix.config, ts.win32.config), and the necessary build system files (Makefile, configure.ac, configure, config.guess, config.sub, install-sh, cross.cover). This change provides the complete build and configuration support required to run the test server framework.

_lib/common\_test/test\server · high confidence

Update wx wrapper generation and add missing wx classes

The wx library received a comprehensive update to its code generation and wrapper infrastructure. New files were added to the \api\_gen\ directory, including \apidiff.escript\ for comparing API differences between wxWidgets versions, and \gl\_gen\_doc.erl\, \gl\_gen\_nif.erl\, and \gl\_scan\_doc.erl\ for generating OpenGL documentation and NIF bindings. Additional header and source files were added to \api\_gen/wx\_extra/\ to support specific classes such as \wxTaskBarIcon\, \wxTreeCtrl\, \wxXmlResource\, and \wxGraphicsRenderer\. These changes enhance the generation of Erlang wrappers for the wxWidgets C++ API, ensuring better coverage of modern wxWidgets features and improved documentation generation.

lib/wx · high confidence

Removals

Removal of CORBA Orber libraries

The CORBA Orber libraries, specifically \cosEvent\ and \cosEventDomain\, have been removed from the distribution. This includes the deletion of their build files (Makefile, vsn.mk), metadata (info, AUTHORS), and version control files. Users relying on these components will need to migrate to alternative CORBA implementations or external repositories, as these modules are no longer available in the standard library.

lib/cosEvent · high confidence

Removal of HiPE native code compiler

The HiPE (High-Performance Erlang) native code compiler, including the amd64 and ARM backends, has been removed from the Erlang/OTP distribution. This change eliminates the ability to compile Erlang modules to native machine code for these architectures, reverting to standard BEAM bytecode compilation.

lib/hipe · high confidence

Removal of VxWorks build support

The build system for the VxWorks operating system has been removed. All VxWorks-specific configuration files (sed scripts for various CPU architectures like PPC32, PPC603, SPARC, etc.) have been deleted from erts/autoconf/vxworks. Users targeting VxWorks will no longer be able to build the Erlang runtime system for that platform.

erts/autoconf/vxworks · high confidence

Removal of VxWorks-specific system implementation files

The VxWorks-specific system implementation files (including driver\_int.h, erl\_main.c, erl\_vxworks\_sys.h, erl\_vxworks\_sys\_ddll.c, and sys.c) have been removed from the erts/emulator/sys/vxworks directory. This change eliminates the legacy VxWorks port from the Erlang/OTP emulator, meaning that platform is no longer supported in this release.

erts/emulator/sys/vxworks · high confidence

Removal of cosEventDomain documentation source files

The XML source files and build artifacts for the cosEventDomain documentation have been removed. This includes the user's guide, reference manual, release notes, and associated Makefiles and gitignore files. The documentation build system for this component is no longer present.

lib/cosEventDomain/doc · high confidence

Removal of cosProperty documentation and build artifacts

The \lib/cosProperty\ directory has been stripped of all documentation source files (XML), build scripts (Makefiles), and metadata (AUTHORS). This includes the removal of the \doc/src\ directory containing the reference manual, user guide, and release notes, as well as the root-level \Makefile\ and \vsn.mk\ files used for building the documentation. Users will no longer have access to the local documentation for the \cosProperty\ application.

lib/cosProperty, lib/percept · high confidence

Removal of deprecated ASN.1 documentation and build files

The ASN.1 application has removed its legacy XML-based documentation source files (including \asn1\_ug.xml\, \asn1ct.xml\, \asn1rt.xml\, and \book.xml\) and the associated \Makefile\ and dependency files. This change reflects the migration away from the old documentation generation system, likely in favor of a new build process (such as ExDoc, as suggested by commit messages), resulting in the deletion of obsolete source files and configuration files like \GUI.asn1config\ and \Seq.asn1config\ that were tied to the previous documentation structure.

lib/asn1/doc/src · high confidence

Removal of legacy book-building documentation and build scripts

The \system/doc/Books\ directory has been removed, eliminating the legacy infrastructure for building printed documentation books. This includes the removal of the \Makefile\ and shell scripts (\make\_headers\, \frame\_crop.header.src\) used to generate PostScript and PDF outputs, as well as all associated XML source files (e.g., \ug.xml\, \tools.xml\, \corba\_service.xml\) that defined the structure and content of these books. Users will no longer be able to build these specific documentation books using the old \clearmake\-based workflow.

system/doc/Books · high confidence

Removal of the CosEventDomainAdmin CORBA application

The CosEventDomainAdmin CORBA application and its associated implementation files, configuration, and build scripts have been removed from the lib/cosEventDomain/src directory. This eliminates the ability to create and manage CORBA event domains and channels through this specific administrative interface.

lib/cosEventDomain/src · high confidence

Removal of the CosNaming service implementation

The CosNaming service implementation, including all associated Erlang modules, IDL files, C++ source code, and documentation, has been removed from the ORB component. This eliminates the ability to use the CORBA CosNaming service for object name resolution and binding within the application.

lib/orber · high confidence

Removal of the Pman graphical process manager

The Pman application, a graphical tool for inspecting and tracing Erlang processes, has been removed from the distribution. This includes the removal of all associated source code, build files, documentation, and resources, as the functionality has been superseded by the observer tool.

lib/pman · high confidence

Removal of the TypEr static analysis tool

The TypEr application, a static type analysis tool for Erlang, has been removed from the codebase. This change deletes all associated source files (including typer.erl, typer\_annotator.erl, typer\_info.erl, and others), build configuration files (Makefiles, .app.src, .appup.src), and the versioning script, effectively eliminating the tool from the distribution.

lib/typer · high confidence

Removal of the appmon application

The appmon application, a graphical tool for monitoring applications and processes, has been removed from the Erlang/OTP distribution. This change eliminates the \appmon\ module and all associated components (including \appmon\_a\, \appmon\_dg\, \appmon\_info\, \appmon\_lb\, \appmon\_place\, \appmon\_txt\, \appmon\_web\, and \process\_info\) from the \lib/appmon/src\ directory. Users relying on this tool will need to use alternative monitoring solutions.

(repo-wide) · high confidence

Removal of the deprecated DocBuilder application

The DocBuilder application, which generated HTML and PDF documentation from XML source code, has been completely removed from the codebase. This includes the deletion of all associated build files (Makefiles), source XML documentation files (such as block\_tags.xml, book.xml, and various DTDs), and auxiliary files (such as the AUTHORS file and PostScript graphics). Users relying on this tool for generating Erlang/OTP documentation will no longer have access to it.

_lib/docbuilder, lib/otp\mibs, lib/webtool · high confidence

Removal of the deprecated TV (Table Visualizer) application

The Table Visualizer (TV) application has been removed from the Erlang/OTP distribution. This includes the deletion of all associated source files, build scripts, documentation, and metadata. Users should use the Observer application, which has superseded TV for application and node monitoring.

lib/tv · high confidence

Removal of the deprecated gs application and its associated resources

The gs application has been removed from the distribution. This change eliminates the gs application, its build system files (Makefile, configure.in), and all associated resources, including the contribs directory containing example applications like bonk, as well as author and license metadata files. Users relying on the gs application will need to migrate away from it, as the component is no longer included in the release.

lib/gs · high confidence

Removal of the deprecated inviso application and its documentation

The inviso application has been removed from the codebase, along with all associated documentation files (including Makefiles, XML sources for HTML/PDF/Man3/PDF output, and the AUTHORS file). This change eliminates the deprecated inviso component, which was previously used for distributed tracing and log file merging, from the Runtime Tools suite.

lib/inviso · high confidence

Removal of the ic (CORBA/IDL compiler) component

The ic component, which provided the IDL compiler and related C source files for CORBA/IDL support, has been removed from the codebase. This includes the deletion of all associated build files (Makefiles), C source files (such as ic.c, oe\ei\\*.c), and documentation files. Users relying on the ic toolchain for IDL compilation will no longer have access to this functionality.

lib/ic · high confidence

Removal of the legacy Test Server application and documentation

The \test\_server\ application and its associated documentation have been removed from the codebase. This includes the deletion of the \lib/test\_server\ directory structure, including source files, build scripts, and all XML-based documentation (user's guide, reference manual, and release notes). This change reflects the transition away from the standalone Test Server in favor of Common Test as the primary testing framework.

_lib/test\server · high confidence

Removal of the legacy erl\_docgen build system and assets

The \lib/erl\_docgen\ directory has been removed, including all associated Makefiles, CSS stylesheets, DTD files, and scripts. This change eliminates the legacy documentation generation infrastructure, streamlining the build process and removing obsolete assets that are no longer required.

_lib/erl\docgen · high confidence

Removal of unused and legacy Windows drivers

The \mem\_drv\, \ttsl\_drv\, \win\_con\, and \win\_efile\ Windows drivers have been removed from the emulator. This cleanup eliminates unused or legacy components, including the memory statistics driver, the terminal line driver, the Windows console window implementation, and the legacy file driver, streamlining the Windows support layer.

erts/emulator/drivers/win32 · high confidence

Removed Appmon documentation and resources

The Appmon application monitor, a graphical utility for supervising applications and monitoring process trees, has been removed from the documentation and private resources. This includes the deletion of all source XML files (such as appmon.xml, appmon\_chapter.xml, and book.xml), PostScript image files for the UI windows, the Makefile for building the documentation, and the HTML/PS resources in the priv directory. Users will no longer have access to the Appmon user's guide, reference manual, or release notes.

lib/appmon/doc · high confidence

Removed HiPE (native code compiler) support

The HiPE native code compiler and its associated architecture-specific files (including headers, assembly glue, and ABI documentation for x86\_64, ARM, and PowerPC) have been removed from the emulator. This eliminates the ability to compile Erlang modules to native machine code, reverting the runtime system to interpretive execution only.

erts/emulator/hipe · high confidence

Removed cosEvent documentation sources and build artifacts

All XML source files, Makefiles, and generated documentation artifacts (HTML, PDF, man pages) for the cosEvent application have been removed from the repository. This includes the main book structure, chapter files, reference manual sources for components like ConsumerAdmin, SupplierAdmin, and EventChannel, as well as the associated .gitignore files. Users will no longer have access to the local documentation for the cosEvent module.

lib/cosEvent/doc · high confidence

Removed cosFileTransfer documentation and build files

The \lib/cosFileTransfer\ directory has been stripped of its documentation and build infrastructure. Specifically, the \Makefile\, \vsn.mk\, and \AUTHORS\ files have been removed, along with all XML source files in \doc/src/\ (including \book.xml\, chapter files like \ch\_contents.xml\, and reference manual files for \CosFileTransfer\_Directory\, \CosFileTransfer\_File\, \CosFileTransfer\_FileIterator\, \CosFileTransfer\_FileTransferSession\, and \CosFileTransfer\_VirtualFileSystem\). Additionally, generated output directories such as \doc/html\, \doc/man3\, \doc/man6\, and \doc/pdf\ have been deleted, as has the PostScript source \CosFileTransfer.ps\. This change removes the ability to build the \cosFileTransfer\ documentation and associated build artifacts.

lib/cosFileTransfer, lib/cosTransactions · high confidence

Removed obsolete and unused drivers and updated license headers

The \mem\_drv\, \ttsl\_drv\, and \unix\_efile\ drivers have been removed from the Unix emulator drivers, eliminating unused or legacy code paths. Additionally, license headers across several driver files (including \bin\_drv.c\, \multi\_drv.c\, \sig\_drv.c\) have been updated from the Erlang Public License to the Apache License 2.0, and copyright years have been refreshed.

erts/emulator/drivers/unix · high confidence

Removed the cosEvent CORBA event channel implementation

The \lib/cosEvent/src\ directory has been entirely removed, deleting all source files, IDL definitions, and build scripts for the \cosEvent\ application. This eliminates the CORBA-based event channel implementation, meaning applications relying on \CosEventChannelAdmin\ and \CosEventComm\ interfaces will no longer have access to these specific CORBA object implementations.

lib/cosEvent/src · high confidence

Security

FTP client now validates PASV response IP against control connection peer

The FTP client now validates the IP address in the PASV response against the control connection peer. This change prevents a vulnerability where a malicious or compromised FTP server could redirect the data connection to an arbitrary host, which could enable server-side request forgery (SSRF) and FTP bounce attacks.

lib/ftp · high confidence

Hardened SSH implementation with improved security defaults and algorithm updates

The SSH module has been significantly hardened and updated to improve security and interoperability. Default algorithms have been updated to prefer more secure options, with specific ciphers like CBC modes and SHA-1 based algorithms disabled by default. The implementation now supports modern key exchange methods including Curve25519 and Curve448, and introduces new options such as 'modify\_algorithms' and 'idle\_time' for better control over connections. Several critical vulnerabilities have been addressed, including path traversal issues in the SFTP daemon, memory leaks, and race conditions that could lead to crashes or information leakage. The SFTP subsystem is now disabled by default, and the SSH daemon supports replacing options in a running instance. Additionally, the module now handles bad input and malformed packets more gracefully, preventing unexpected crashes.

lib/ssh · high confidence

Architecture

Documentation build system refactored to use ExDoc

The documentation build system has been refactored to use ExDoc, introducing a new \docs.exs\ configuration file that defines how documentation is generated, including annotations for auto-imported functions, grouping of types and functions, and inclusion of additional guide and reference markdown files. This change also includes the introduction of a new \notes.md\ file for release notes and updates to various source markdown files for functions like \erlang:system\_info/1\ and \erlang:port\_info/2\.

erts/doc · high confidence

Refactored Erlang emulator instruction definitions into modular, template-based files

The Erlang emulator's instruction definitions have been reorganized from a single monolithic source into separate, specialized files (arith\_instrs.tab, bif\_instrs.tab, bs\_instrs.tab, float\_instrs.tab, generators.tab, instrs.tab, map\_instrs.tab, msg\_instrs.tab) using a template-based generation system. This refactoring improves maintainability and allows for more optimized instruction generation, such as specialized arithmetic operations and binary matching, while preserving the existing runtime behavior for users.

erts/emulator/beam/emu · high confidence

Behavioural changes

581 commits (59 fixes) modifying erts/preloaded/ebin

A change to existing behaviour in erts/preloaded/ebin — 581 commits (59 fixs), 23 files.

erts/preloaded/ebin · medium confidence · unverified

ASN.1 library migrates from legacy Erlang driver to NIFs

The ASN.1 library replaces the old C driver implementation with a new NIF-based implementation. The legacy \asn1\_erl\_driver.c\ and its associated \Makefile\ have been removed, and a new \asn1\_erl\_nif.c\ has been added to handle BER and PER encoding and decoding. This change improves performance and stability by using the modern NIF interface, while also fixing several bugs related to length encoding, tag handling, and error conditions during BER decoding.

_lib/asn1/c\src · high confidence

ASN.1 library updated to version 1.6.13

The ASN.1 library has been updated to version 1.6.13. This release includes fixes for several decoding and encoding issues, including a missing tag in table constraint cases, a parsing conflict with Object Identifier values, an internal error for SET types during compilation, a false encode error for BIT STRING in PER, and duplicated function definitions. Additionally, the license header has been standardized to Apache License 2.0.

lib/asn1 · high confidence

Add 32-bit atomic operations and memory barriers for TILE architecture

The TILE architecture support in the Erlang runtime has been updated to include explicit 32-bit atomic operations (ethr\_native\_atomic32) and dedicated memory barrier definitions (ethr\_membar.h). This change introduces new inline functions for atomic read, write, add, increment, decrement, and compare-and-swap operations, alongside homogenized memory barriers to ensure correct synchronization. Additionally, the license header has been updated to Apache 2.0.

erts/include/internal/tile · high confidence

Added no\_dot\_erlang start script and updated license headers

The Erlang/OTP release now includes a new 'no\_dot\_erlang' start script, allowing users to launch the system without the dot\_erlang module. This change also updates copyright headers to Apache 2.0 and renames the release from 'OTP APN 181 01' to 'Erlang/OTP' across the start scripts.

_erts/start\scripts · medium confidence

The Common Test runner (ct\_run) and other tools in erts/etc/common have been updated to use the Apache 2.0 license header. The codebase has been modernized to support Unicode (UTF-8) command-line arguments and environment variables on Windows, replacing previous wide-character handling. Additionally, the build system (Makefile) has been refactored to remove support for obsolete platforms (VxWorks, OSE) and to use a shared common header (etc\_common.h) for shared utility functions like environment variable handling.

erts/etc/common · high confidence

Compiler module updated to version 10.0.2

The compiler application has been updated from version 4.6.3 to 10.0.2. This update includes a significant expansion of the compiler's internal modules, adding numerous new beam and sys\_core modules (such as beam\ssa\\*, beam\_core\_to\_ssa, and sys\_core\alias) while removing older v3\\* modules. Additionally, the application now declares runtime dependencies on stdlib-8.0, kernel-8.4, erts-13.0, and crypto-5.1.

bootstrap/lib/compiler/ebin · high confidence

Compiler version bumped to 10.0.3 and license updated to Apache 2.0

The compiler module has been updated to version 10.0.3, replacing the previous 4.6.4 release. Additionally, the licensing for the compiler component has been changed from the Erlang Public License to the Apache License 2.0, and the copyright year has been updated to 2025. The 'info' file for the compiler has been removed.

lib/compiler · high confidence

Debugger UI migrated from legacy gs to wxWidgets

The debugger's graphical user interface has been migrated from the legacy gs-based implementation to wxWidgets. This change removes the old \dbg\ui\\*\ modules (such as \dbg\_ui\_mon\, \dbg\_ui\_trace\, and \dbg\_ui\_settings\) and replaces them with a new \dbg\wx\\*\ module set. Users will see the debugger interface rendered using wxWidgets, which resolves compatibility issues with modern GUI toolkits and improves the overall stability and appearance of the debugger's windows and dialogs.

lib/debugger/src · high confidence

Debugger documentation migrated from XML to Markdown

The Debugger documentation has been converted from the legacy XML-based build system to Markdown, with new \Makefile\ and \docs.exs\ configuration files added to support the new format. This change updates the documentation build process, removing the old XML source files and associated build artifacts in favor of the modern Markdown-based approach.

lib/debugger/doc · high confidence

Debugger license updated to Apache 2.0 and icon restored

The debugger module's licensing has been updated from the Erlang Public License to the Apache License, Version 2.0, with the copyright year extended to 2025. Additionally, the 'erlang\_bug.png' icon file has been added to the distribution, while the legacy 'debugger.tool' file has been removed from the build process.

lib/debugger/priv · high confidence

Debugger version updated and license changed to Apache 2.0

The debugger component has been updated to version 7.0. Additionally, the license for the debugger has been changed from the Erlang Public License to the Apache License, Version 2.0, and copyright headers have been updated to reflect the new license terms.

lib/debugger · high confidence

EPMD protocol version bump and license update

The Erlang Port Mapper Daemon (epmd) updates its distribution protocol version from 5 to 6, enabling support for 32-bit creation values in local nodes. The codebase also migrates from the Erlang Public License to the Apache License 2.0, and removes legacy support for VxWorks and ENEA OSE platforms.

erts/epmd · high confidence

ERTS build system and licensing updates

The ERTS build system has been updated to support new emulator build types, including address-sanitizer (asan), frame-pointer (frmptr), and opcode counter (icount) configurations. The Makefiles have been refactored to remove support for purify, quantify, and purecov, while adding explicit handling for Windows executable suffixes and MSVC detection. Additionally, the license header has been updated from the Erlang Public License to the Apache License 2.0, and copyright years have been refreshed to 2025.

_erts/lib\src · medium confidence

ERTS emulator build system modernized with Apache 2.0 license and JIT support

The ERTS emulator build system has been updated to use the Apache 2.0 license, replacing the previous Erlang Public License header in Makefiles. The Makefile has been refactored to support Just-In-Time (JIT) compilation, introducing new build flavors (emu, jit) and architecture-specific object tables. Additionally, the obsolete \driver.h\ header was removed from the \obsolete\ directory, and a new \asmjit.version\ file was added to track the ASMjit dependency.

erts/emulator · high confidence

Erlang/OTP 26: Performance, Stability, and New Capabilities

This release introduces significant performance improvements, including optimized bignum multiplication using the Karatsuba algorithm, faster hash map operations, and improved scheduler efficiency. It adds new capabilities such as the \maps\ module with \keys/1\, \values/1\, and \is\_map/1\ guard BIFs, as well as \erlang:system\_monitor/2\ for monitoring scheduler statistics. The release also includes numerous bug fixes for the Erlang runtime system (ERTS), including fixes for ETS, NIFs, and signal handling, alongside support for the E2K architecture and improved Windows compatibility.

erts/emulator/beam · high confidence

Erlang/OTP 30.0-rc0 release and Apache 2.0 license migration

The project has been updated to version 30.0-rc0 and migrated its licensing to the Apache License 2.0. This change is reflected in the new LICENSE.txt file, updated copyright headers across the repository, and the addition of configuration files such as .editorconfig, .elp.toml, and .ort.yml to support development workflows and license compliance. The README.md and CONTRIBUTING.md have also been updated to reflect the new license and contribution guidelines.

(repo-wide) · high confidence

Event Tracer (ET) documentation and test suite restructured for Markdown/ExDoc and Common Test

The Event Tracer (ET) documentation has been migrated from XML to Markdown format and is now generated using ExDoc, with a new \docs.exs\ configuration file and a \doc/Makefile\ to manage the build. The user guide, description, and examples are now provided as Markdown files in \lib/et/doc/guides/\. Additionally, the test suite has been restructured to use the Common Test framework, with a new \test/\ directory containing \Makefile\ and \README\ to support running tests via \common\_test\ or the in-house \ts\ tool.

lib/et · high confidence

Improved ASAN log processing and suppression rules

The \erts/emulator/asan\ area received updates to the \asan\_logs\_to\_html\ script, which now provides enhanced reporting of Address Sanitizer logs, including per-application leak and error statistics, truncation of excessively long error logs, and improved handling of unmatched text. Additionally, the \suppress\ file was updated to include new suppression rules for specific memory leaks in the crypto module (e.g., \init\_curve\_types\, \valid\_curve\, \ERR\_put\_error\, \ENGINE\_ctrl\_cmd\_string\, \ENGINE\_get\_digest\) and system initialization, reducing noise in test results.

erts/emulator/asan · high confidence

Improved error handling and reliability in the kernel and socket subsystems

The kernel application received numerous fixes for socket, network, and file operations, including handling of edge cases in sendfile, UDP, and SCTP protocols. The logger subsystem was refactored to improve performance, add overload protection, and support primary configuration. Additionally, the shell was enhanced with multiline editing and history support, and various test suites were updated to handle platform-specific behaviors and improve stability.

lib/kernel · high confidence

Improved memory barrier handling for SPARC32 atomics and locks

The SPARC32 implementation of the ethread library has been rewritten to introduce 32-bit atomic support and homogenize memory barriers. This change updates the license header to Apache 2.0 and introduces a new \ethr\_membar.h\ header to standardize memory barrier usage across \atomic.h\, \spinlock.h\, and \rwlock.h\. Specifically, the code now uses the \ETHR\_MEMBAR\ macro for consistent memory ordering on SPARC V9 architectures, ensuring correct synchronization for native atomics and locks.

erts/include/internal/sparc32 · high confidence

Improved memory barriers and 32-bit atomic support for PowerPC

The 32-bit PowerPC implementation now supports native 32-bit atomics and uses a new ethr\_membar.h header to manage memory barriers. This replaces the previous eieio-based barriers with more appropriate sync/lwsync instructions, providing correct acquire/release semantics for atomic operations and spinlocks. Additionally, the license header was updated to Apache 2.0.

erts/include/internal/ppc32 · high confidence

Integrate Ryu and STL to\_chars for double-to-string conversion

The Erlang VM now includes the Ryu algorithm and Microsoft STL's to\_chars implementation to handle double-precision floating-point to string conversion. This change replaces the previous conversion logic with a more efficient and accurate algorithm, ensuring that floating-point values are formatted correctly in all cases, including edge cases and scientific notation.

erts/emulator/ryu · high confidence

Introduce timed wait support for Erlang thread events

The internal header erts/include/internal/pthread/ethr\_event.h was added, providing a new implementation for Erlang thread (ethread) events. This includes support for timed waits (e.g., \ethr\_event\_twait\), allowing the emulator to check for I/O and handle timeouts more effectively. The implementation uses 32-bit atomics and Linux futexes on Linux, while falling back to POSIX threads (mutex/cond) on other platforms. This change improves the reliability of thread synchronization by ensuring the emulator does not enter states where it fails to check for I/O.

erts/include/internal/pthread · high confidence

Kernel application updated to version 11.0.3 with a new logging subsystem and expanded module set

The kernel application has been upgraded from version 2.13.4 to 11.0.3, introducing a comprehensive new logging subsystem (including modules like logger, logger\_server, and various handlers) while removing the legacy error\_logger process in favor of the new logger process. The update also adds numerous new modules such as pg, raw\_file\_io variants, and various network and tracing components, while removing older modules like user and hipe\_unified\_loader. The application now declares runtime dependencies on erts-17.0, stdlib-8.0, sasl-3.0, and crypto-5.8, and supports upgrades from OTP 23, 24, and 25.

bootstrap/lib/kernel/ebin · medium confidence

The license header in the erts/include headers has been changed from the Erlang Public License to the Apache License, Version 2.0, and the copyright year has been updated to 2025.

erts/include · high confidence

License headers updated to Apache 2.0

The license headers in the VxWorks resolver driver and the internal thread headers for sparc64 and x86\_64 architectures have been updated from the Erlang Public License to the Apache License, Version 2.0. This change also adds the SPDX license identifier and updates the copyright year to 2025.

_erts/emulator/drivers/vxworks, erts/include/internal/sparc64, erts/include/internal/x86\_64, lib/asn1/doc/users\guide · medium confidence

Major compiler refactoring and optimization

The Erlang compiler has been significantly refactored, introducing a new SSA-based intermediate format and removing the legacy Kernel Erlang intermediate representation. This change brings improved type inference, enhanced optimization passes (such as alias analysis and dead code elimination), and better handling of maps and binary patterns. Users will benefit from faster compilation times, more precise type checking, and the removal of deprecated compiler options and passes.

lib/compiler/src · high confidence

Major rewrite of the ethread thread library and atomic operations

The ethread thread library has been significantly refactored and expanded. The core implementation has been split into new, modular files (ethr\_atomics.c, ethr\_aux.c, ethr\_cbf.c, ethr\_mutex.c) generated or managed by a new script (make\_atomics\_api) to provide a comprehensive atomic operations API supporting 32-bit, word, and double-word sizes with various memory barrier semantics. The previous monolithic ethread.c and related files have been removed or replaced. Additionally, the implementation now supports 32-bit atomics, improves CPU topology detection, handles cgroup2 CPU quotas, and fixes several bugs related to memory leaks, deadlocks, and compiler warnings.

_erts/lib\src/common · high confidence

Major x86 JIT backend refactoring and optimization

The x86 JIT backend has been reorganized into a new directory structure, with source files like beam\_asm.hpp, beam\_asm\_global.cpp, and various instruction generators moved from the root of the x86 directory into dedicated sub-files (e.g., instr\_arith.cpp, instr\_bif.cpp, instr\_bs.cpp). This change introduces significant optimizations for arithmetic, BIFs, and binary operations, while also fixing several bugs related to binary construction, function calls, and error handling.

erts/emulator/beam/jit/x86 · high confidence

Migrate compiler documentation from XML to Markdown and ExDoc

The compiler documentation build system has been refactored to use Markdown and ExDoc instead of the previous XML-based system. The old XML source files (such as \book.xml\, \compile.xml\, and \notes.xml\) have been removed and replaced with new files including \docs.exs\ for ExDoc configuration, a \Makefile\ for the build process, and \notes.md\ for release notes. This change modernizes the documentation generation pipeline.

lib/compiler/doc · high confidence

Migrated build system from Autoconf 2.59 to 2.72 and refactored configuration scripts

The ERTS build system has been migrated from the older Autoconf 2.59 to Autoconf 2.72, requiring a full rebuild of the \configure\ script. The configuration logic has been refactored from the legacy \configure.in\ and \aclocal.m4\ files into modern \configure.ac\ and \crypto.ac\ templates. This change updates the build process to support newer compiler and system checks, ensuring compatibility with modern build environments.

erts · high confidence

Migrated crypto documentation to Markdown and modernized the build system

The crypto application's documentation has been converted from the legacy XML-based build system to a modern Markdown-based structure. This change introduces new guide files for algorithm details, engine loading, and the new API, while removing the old \src/\ directory and associated Makefiles. Users will see updated documentation reflecting the new API and configuration options, such as the automatic loading of the crypto application in interactive mode and the deprecation of certain legacy functions.

lib/crypto/doc · high confidence

Modernized Common Test HTML logs with a new CSS stylesheet and updated jQuery

The HTML logs generated by Common Test now use a new default CSS stylesheet (ct\_default.css) to style the log output, providing a cleaner and more readable layout for test results. The underlying JavaScript library has been updated to jQuery 4.0.0, which improves script handling and DOM manipulation within the logs. These changes enhance the visual presentation and functionality of the Common Test HTML logs for users reviewing test outcomes.

_lib/common\test/priv · high confidence

Native 32/64-bit and double-word atomics on Windows

The Erlang/OTP runtime on Windows now uses native hardware-supported atomics for 32-bit, 64-bit, and 128-bit (double-word) operations, replacing previous fallback or less efficient implementations. This change, located in erts/include/internal/win, introduces new header files (ethr\_atomic.h, ethr\_dw\_atomic.h) that leverage Windows-specific intrinsics (e.g., \_InterlockedCompareExchange64, \_InterlockedCompareExchange128) to provide high-performance atomic operations. Additionally, the ethr\_event.h header was updated to support timed waits, improving synchronization behavior for event handling on Windows.

erts/include/internal/win · medium confidence

Native atomic operations now use libatomic\_ops

The internal threading library (ethread) has been rewritten to use the libatomic\_ops library for handling native atomic operations. This change introduces support for 32-bit and 64-bit word-sized atomics, as well as double-word (128-bit) atomics, by mapping internal atomic types and memory barriers to the corresponding libatomic\_ops functions. This provides a more robust and portable foundation for concurrent programming within the runtime system.

_erts/include/internal/libatomic\ops · high confidence

ODBC application documentation and build system modernized

The ODBC application's documentation has been migrated from XML to Markdown format, enabling generation via ExDoc. The build system has been updated to use Autoconf 2.71, and the configure script now supports the --with-odbc=PATH option to specify the ODBC library location, including support for iODBC on macOS. Additionally, the test suite has been modernized to use Common Test (ct) instead of the legacy test\_server, and the application is now deprecated with a plan for removal in Erlang/OTP 30.

lib/odbc · high confidence

Observer documentation migrated to Markdown and ExDoc

The user's guide for the Observer application (including the Observer GUI, Trace Tool Builder, Erlang Top, and Crashdump Viewer) has been converted from XML to Markdown format and is now generated using ExDoc. This change updates the build system to use a new \doc/Makefile\ and \docs.exs\ configuration, and places the Markdown source files in \lib/observer/doc/guides/\. Users will see the updated documentation in the new format, which improves readability and maintainability.

lib/eunit, lib/observer · high confidence

Refactored I/O polling and memory mapping infrastructure

The Erlang runtime system's I/O polling and memory management have been significantly refactored. The I/O check mechanism (erl\_check\_io.c) has been restructured to support scheduler-based polling, NIF select operations, and improved state tracking for file descriptors. Additionally, new files (erl\_mmap.c/h, erl\_osenv.c/h, erl\_poll\_api.h, erl\_os\_monotonic\_time\_extender.c/h) introduce a more robust memory mapping and environment variable handling system, while the legacy mtrace system (erl\_mtrace\_sys\_wrap.c) has been removed. These changes improve scalability, thread safety, and cross-platform compatibility for I/O and memory operations.

erts/emulator/sys/common · high confidence

Refactored NIFs into common shared modules

The Erlang/OTP runtime system's NIFs have been restructured by moving common implementations into shared C files (erl\_tracer\_nif.c, prim\_buffer\_nif.c, prim\_file\_nif.c, prim\_net\_nif.c, prim\_socket\_nif.c, and prim\_tty\_nif.c) located in the common directory. This change consolidates code for process tracing, buffer management, file operations, network interfaces, socket handling, and terminal I/O, improving code reuse and maintainability across the emulator.

erts/emulator/nifs/common · high confidence

Refactored Unix child process and driver management

The Erlang runtime system's Unix-specific code has been significantly restructured to improve reliability and maintainability. A new 'forker' process model is introduced, where a dedicated child process handles all fork/exec operations, communicating with the VM via a Unix domain socket. This change, along with the introduction of \sys\_uds.c\ for handling ancillary data and file descriptor passing, ensures that file descriptors are not closed prematurely and that the VM is properly notified of child process exits. Additionally, the signal handling for child processes has been moved to the forker, preventing the VM from being blocked during long-running exec calls. The \erl\_child\_setup\ program has been updated to use this new protocol, and the \sys.c\ file has been refactored to support the new child setup and driver interfaces.

erts/emulator/sys/unix · high confidence

Refactored build system to support standalone application builds and licensing update

The lib/Makefile has been refactored to support building individual applications via the new EXA-APPS and SKIP-APPS variables, allowing for more granular build control. The build system now distinguishes between essential ERTS applications, standard Erlang applications, and all available applications, with support for skipping specific apps. Additionally, the license header has been updated from the Erlang Public License to the Apache License 2.0, and copyright years have been updated to 2025.

lib · high confidence

Refactored i386 threading primitives with new atomic and memory barrier implementations

The i386 threading headers have been restructured to support 32-bit and 64-bit native atomics, introducing new headers for double-word (128-bit) atomics and memory barriers. The \atomic.h\ header now conditionally includes 32-bit or 64-bit atomic implementations, while \ethr\_dw\_atomic.h\ provides native double-word atomic operations. Memory barriers are now defined in \ethr\_membar.h\, supporting both SSE2 and non-SSE2 environments. Additionally, the license header has been updated to Apache 2.0, and copyright years have been refreshed to 2025.

erts/include/internal/i386 · high confidence

Refactored internal threading and atomicity headers

The internal threading library headers have been reorganized and modernized. The atomic operations API has been moved into its own header (ethr\_atomics.h) and rewritten to support 32-bit and 64-bit atomics with various memory barrier semantics. Mutex and condition variable implementations have been refactored into separate headers (ethr\_mutex.h, ethr\_optimized\_fallbacks.h) with improved handling of spinlocks and read-write locks. Compiler-specific inline and attribute macros have been consolidated into ethread\_inline.h. Additionally, the memory trace protocol header has been removed, and copyright headers have been updated to Apache 2.0.

erts/include/internal · high confidence

Removal of CORBA CosNotification documentation and build files

The \lib/cosNotification\ directory has been cleared of all documentation files (XML sources for the user guide and man pages), the Makefile, and the AUTHORS file. This change removes the local build system and generated documentation artifacts for the CORBA CosNotification application, likely as part of a repository restructuring or cleanup of obsolete build artifacts.

lib/cosNotification · high confidence

Removal of Orber header files from the bootstrap

The header files \corba.hrl\, \ifr\_types.hrl\, and \orber\_pi.hrl\ have been removed from the \bootstrap/lib/orber/include\ directory. This change eliminates these specific header files from the bootstrap build, which may affect how the Orber CORBA library is initialized or compiled during the bootstrap phase.

bootstrap/lib/orber · high confidence

The symlinks for config.guess, config.sub, and install-sh in the auxdir have been removed. These files previously pointed to the Erlang/OTP autoconf scripts, and their removal indicates a shift away from relying on these external autoconf helpers for build configuration.

_lib/common\test/priv/auxdir · medium confidence

Removed VxWorks support from Erlang/OTP

The \erts/etc/vxworks\ directory has been removed, deleting all VxWorks-specific files including the README, startup scripts, and C source files (e.g., \erl.exec.c\, \reclaim.c\, \heart\_config.c\). This change eliminates the VxWorks platform support from the Erlang runtime system, meaning the Erlang emulator and related tools will no longer be built or available for VxWorks targets.

erts/etc/vxworks · high confidence

Removed obsolete Erlang parser generator code

The \core\_parse.erl\ file, a generated parser from the \parsetools\ library, has been removed from the bootstrap compiler. This change eliminates redundant, outdated code from the \bootstrap/lib/compiler/egen\ directory, aligning the bootstrap with the R13B03 release standards.

bootstrap/lib/compiler/egen · high confidence

Removed obsolete bootstrap startup scripts

The \start.script\ and \start\_clean.script\ files in the \bootstrap/bin\ directory have been removed. These scripts previously handled the initial bootstrapping of the Erlang runtime system, including loading the kernel and stdlib applications. Their removal indicates a shift in how the bootstrap process is managed, likely moving away from these specific script-based initialization steps.

bootstrap/bin · high confidence

Replace symlinked documentation tools with local implementations

The system/doc/top/src directory now contains local Erlang source files (otp\_man\_index.erl) that generate the module overview in the documentation, replacing the previous symlinks to external scripts (erl\_html\_tools.erl, erlresolvelinks.erl, permuted\_index.erl) which have been removed. This change allows the documentation build process to function independently of the internal tools directory, supporting builds from both source and release structures.

system/doc/top · high confidence

Replace the C-based file and zlib drivers with NIFs

The \efile\_drv\, \zlib\_drv\, and \ram\_file\_drv\ C drivers have been removed from the emulator. The file system operations (read, write, seek, etc.) and zlib compression/decompression are now implemented as Native Implemented Functions (NIFs) in the Erlang \prim\_file\ and \zlib\ modules. This change improves performance and reliability by moving these hot paths out of the Erlang driver layer.

erts/emulator/drivers/common · high confidence

Restructure the crypto application to remove the gen\_server-based crypto\_server and crypto\_app modules

The crypto application's internal architecture has been refactored by removing the \crypto\_app\ and \crypto\_server\ modules, which previously managed the crypto driver and ports via a gen\_server. These have been replaced by a new \crypto\_ec\_curves\ module that provides elliptic curve parameters. The application now relies on the \crypto\ module's \on\_load\ callback for initialization, and the \crypto.app.src\ has been updated to reflect the new module list and dependencies, removing the old server-based startup behavior.

lib/crypto/src · high confidence

Rewrite of Windows thread and event primitives

The Windows-specific implementation of the ethread library has been rewritten, introducing support for 32-bit and 64-bit atomic operations and adding a timeout parameter to event wait functions. This change improves thread synchronization by allowing events to handle large timeouts and fixes issues with thread-specific events being used simultaneously. The update also includes stack guard support for PCRE and thread naming capabilities.

_erts/lib\src/win · medium confidence

Rewrite of the GCC-based ethread atomic and memory barrier implementations

The internal GCC-specific headers for the erlang runtime system (ERTS) have been rewritten to implement native atomic operations and memory barriers using GCC's \_\atomic and \\_sync builtins. This change introduces new header files (ethr\_atomic.h, ethr\_dw\_atomic.h, ethr\_membar.h, ethread.h) that replace the previous implementation, adding support for 32-bit and 64-bit atomics, double-word (128-bit) atomics, and architecture-specific memory barriers (including ARM, PowerPC, and MIPS). The update also includes fixes for older GCC versions (pre-4.8) and ensures compatibility with Apple's Clang 12.0.0+.

erts/include/internal/gcc · high confidence

Rewrote the Erlang threading library (ethread) with improved event and timeout handling

The internal threading library (ethread) has been rewritten to improve thread and event management. This update introduces support for thread naming, which enhances runtime observability by allowing threads to be identified by name. Additionally, the implementation of thread events and timeout handling has been overhauled, including the introduction of 32-bit atomics for events and improved accuracy for timeout calculations. These changes provide a more robust and observable threading environment for Erlang applications.

_erts/lib\src/pthread · high confidence

SSL/TLS protocol and security hardening

The SSL/TLS implementation has been significantly hardened and modernized. Security is improved by removing default support for legacy protocols (SSLv3, TLS 1.0, TLS 1.1) and weak cipher suites (RC4, 3DES, SHA1). The default cipher suite selection now prioritizes stronger algorithms, including TLS 1.3 and Post-Quantum Cryptography (PQC) groups. The library now enforces stricter certificate validation, including extended key usage checks and hostname/IP address verification. Additionally, the implementation adds support for TLS 1.3 features such as early data, pre-shared keys (PSK), and session tickets, while also improving error handling and logging for better diagnostics.

lib/ssl · high confidence

System documentation migrated to Markdown

The system documentation, including the Design Principles, Reference Manual, and other guides, has been converted from XML/SGML to Markdown format. This change allows the documentation to be built in an open-source environment and improves readability and maintainability. The content remains the same, but the underlying format and build process have been updated to use modern Markdown sources.

system · high confidence

Updated AsmJit JIT compiler library

The AsmJit library in erts/emulator/asmjit has been updated to a newer version, bringing updated headers, license files, and internal implementation changes. This update may introduce new or modified APIs for code generation, potentially affecting the Erlang emulator's JIT compilation behavior and performance.

erts/emulator/asmjit · medium confidence

Updated AsmJit JIT compiler library to version 1.21.0

The embedded AsmJit library has been upgraded to version 1.21.0. This update includes core assembler and builder infrastructure changes, such as new header files for build configuration (\api-build\_p.h\, \api-config.h\) and updated implementations for the assembler, builder, and code holder components. These changes improve the underlying code generation and management capabilities within the Erlang/OTP emulator.

erts/emulator/asmjit/core · high confidence

Updated Common Test version and build configuration

The Common Test framework has been updated to version 1.31.1. The build system has been migrated from the legacy \configure.in\ to \configure.ac\ using Autoconf 2.71/2.72, and the \Makefile\ has been updated to include new build targets (\DIA\_PLT\_APPS\, \TEST\_NEEDS\_RELEASE\) and dependencies (\proper\_ext\). Additionally, license headers and copyright years have been updated to Apache 2.0 and 2025 respectively. The obsolete \install.sh.in\ script and \info\ file have been removed.

_lib/common\test · high confidence

Updated PCRE2 library to version 10.47

The embedded PCRE2 library in the emulator has been updated to version 10.47. This update includes the latest bug fixes and improvements from the PCRE2 project, ensuring the regular expression engine remains secure and stable. The update also includes build system changes (pcre.mk, depend.mk) and license header updates to reflect the new version.

erts/emulator/pcre · high confidence

Updated Valgrind suppression files for ERTS and crypto

The ERTS and crypto modules now include updated Valgrind suppression files (suppress.patched.3.6.0 and suppress.standard) to address false positive memory leak warnings. These updates specifically suppress known issues related to libc internal errors, pthread leaks, zlib conditions, and crypto internal states, ensuring cleaner Valgrind output during testing and development.

erts/emulator/valgrind · medium confidence

Updated Windows build scripts and license headers

The Windows build scripts in erts/etc/win32/cygwin\_tools/vc have been updated to use the Apache License, Version 2.0, replacing the previous Erlang Public License headers. Additionally, the scripts now support 64-bit Windows builds by selecting the appropriate GCC compiler, handle file paths with spaces, and include linker flags for large address awareness and manifest security settings.

_erts/etc/win32/cygwin\tools/vc · high confidence

Updated autoconf build scripts and removed VxWorks support

The autoconf helper scripts (config.guess, config.sub, install-sh) have been updated to their 2023 versions, which include improved system detection and modernized licensing headers. Additionally, the VxWorks-specific configuration script (configure.vxworks) and the Windows cache file (win32.config.cache) have been removed, reflecting the removal of VxWorks support from the build system.

erts/autoconf · medium confidence

Updated build system with new Autoconf scripts and app targets

The build system in the make directory has been updated with new Autoconf helper scripts (config.guess, config.sub, install-sh) and a new app\_targets.mk file. The app\_targets.mk introduces standardized make targets for each application, including test, info, dialyzer, and clean operations. The autoconf scripts provide updated system detection and configuration capabilities, while the vendor.info file documents the inclusion of these Autoconf scripts. These changes improve the consistency and reliability of the build process across different platforms.

make · high confidence

Updated bundled Zstandard library to v1.5.7

The embedded Zstandard (zstd) compression library has been updated to version 1.5.7. This update brings the latest improvements and bug fixes from the upstream zstd project to the Erlang/OTP emulator.

erts/emulator/zstd · high confidence

Updated bundled zlib to version 1.3.2

The Erlang/OTP runtime system now uses zlib 1.3.2 for internal compression and decompression. This update brings performance improvements, including a new multi-braid CRC32 implementation and optimized deflate algorithms, along with updated copyright headers and build system files (zlib.mk, vendor.info) to reflect the new version and license information.

erts/emulator/zlib · high confidence

Updated crypto library version and build configuration

The crypto library has been updated to version 5.9.2, with corresponding updates to the version file (vsn.mk) and Makefile headers. The build system now includes app\_targets.mk and adjusts subdirectories for static library builds. Additionally, the info file for the crypto module has been removed.

lib/crypto · medium confidence

Updated header files with Apache 2.0 license and modernized type definitions

The header files in the bootstrap kernel library have been updated to use the Apache 2.0 license, replacing the previous Erlang Public License headers. Additionally, the \file.hrl\ header was modified to allow \undefined\ as a value for various \file\_info\ record fields, and the \inet.hrl\ header updated type definitions to reference \inet:\ module types for hostnames and IP addresses.

bootstrap/lib/kernel/include · high confidence

Updated license headers and added assert macros to stdlib headers

The header files in \bootstrap/lib/stdlib/include\ (including \assert.hrl\, \erl\_bits.hrl\, \erl\_compile.hrl\, \ms\_transform.hrl\, \qlc.hrl\, and \zip.hrl\) have been updated to use the Apache License, Version 2.0, replacing the previous Erlang Public License headers. Additionally, \assert.hrl\ was introduced to provide \assert\, \assertNot\, \assertMatch\, and \assertNotMatch\ macros for runtime assertion checking, while \erl\_bits.hrl\ was updated to allow \undefined\ as a valid value for bit type fields, and \zip.hrl\ was updated to use the \file:file\_info()\ type for the \info\ record field.

bootstrap/lib/stdlib/include · medium confidence

Updated license headers and added example modules for matrix NIFs and time compatibility

All example files in erts/example have been updated to use the Apache License 2.0 header with SPDX identifier and updated copyright years. Additionally, new example modules were added: matrix\_nif (a C NIF implementation for matrix calculations) with its corresponding Erlang interface, and time\_compat (an Erlang module providing compatibility for time functions across ERTS versions). The Makefile was also updated to build time\_compat.beam.

erts/example · high confidence

Updated license headers to Apache 2.0 and modernized Windows system layer

The Erlang/OTP emulator's Windows system layer (erts/emulator/sys/win32) has been updated to use the Apache 2.0 license header across all source files. This change also modernizes the Windows-specific code by replacing deprecated or SMP-specific constructs with modern equivalents, such as using \erts\_mtx\ instead of \erts\_smp\_mtx\, updating the driver API to use \ErlDrvSizeT\ for sizes, and improving Unicode support for file paths and environment variables. Additionally, the poller and time management systems have been refactored to use new atomic APIs and generic signal handlers, enhancing stability and performance on Windows.

erts/emulator/sys/win32 · high confidence

Updated license headers to Apache 2.0 and modernized build scripts

The license headers in the Unix utilities under erts/etc/unix have been updated from the Erlang Public License to the Apache License, Version 2.0. Additionally, the build system for the \etp-commands\ tooling has been refactored to use a new \Makefile\ that generates the script from a template, and several legacy scripts like \makewhatis\ and \dyn\_erl.c\ have been removed.

erts/etc/unix · high confidence

Upgraded AsmJit to v1.18

The AsmJit library embedded in the emulator has been upgraded to version 1.18. This update includes a refreshed implementation of the \Arena\ memory allocator, introducing an \ArenaStatistics\ struct to track block counts, used/reserved/overhead/pooled sizes, and a \reset\ policy for memory management. The \ArenaBitSet\ has been updated to support dynamic resizing and copying of bit vectors allocated from the arena. Additionally, the \ArenaHash\ template and its base class have been refreshed with new prime number tables for hashing, and the \ArenaList\ and \ArenaPool\ support structures have been updated to align with the new memory allocation model.

erts/emulator/asmjit/support, erts/emulator/asmjit/ujit · high confidence

Windows erlsrv service converted to wide-character (UTF-16) strings

The Windows \erlsrv\ service utility has been converted to use wide-character (UTF-16) strings throughout its codebase. This change updates string handling in the service manager, registry interactions, and utility functions to use \wchar\_t\ types and wide-character Windows API calls (e.g., \RegOpenKeyExW\, \ReportEventW\). This ensures proper support for non-ASCII characters in service names, environment variables, and log messages on Windows. Additionally, the license header has been updated from the Erlang Public License to the Apache License 2.0.

erts/etc/win32/erlsrv · high confidence

Windows installer updated for Win64, ARM64, and NSIS 3.x

The Windows installer build system and scripts have been updated to support 64-bit (x64) and ARM64 architectures, with the installer outputting separate installers for each. The build process now requires NSIS 3.x, and the installer script (erlang20.nsi) has been refactored to handle architecture-specific paths, registry keys, and redistributable files. Additionally, a new escript (vsn\_number.escript) was added to generate four-part version numbers for the installer, and the license header was updated to Apache 2.0.

erts/etc/win32/nsis · high confidence

Windows startup and installation updated for Unicode and modern Windows support

The Windows startup and installation components have been updated to use wide-character (Unicode) strings throughout, ensuring correct handling of file paths and command-line arguments containing non-ASCII characters. A new manifest file (manifest.xml) was added to declare compatibility with Windows 8.1 through Windows 11 and Windows Server 2016–2022, and the installer (Install.c) now uses wide-character APIs for directory and file operations. Additionally, the installer now supports a root directory argument, and the erl.exe binary includes updated version resources and a default manifest for modern Windows controls.

erts/etc/win32 · high confidence

jinterface: Support 32-bit creation values and new serialization tags

The jinterface library has been updated to support 32-bit creation values for PIDs and ports, allowing the full range of these identifiers to be used rather than being truncated to 15/13/2 bits. This is achieved by introducing new serialization tags (newPidTag, newPortTag) that are compatible with OTP-19 and newer, while maintaining backward compatibility with older versions. Additionally, the license header has been updated to Apache License 2.0, and various internal improvements were made such as removing unused interfaces, making fields private, and fixing compiler warnings.

. · high confidence

os\_mon: Migrate documentation to Markdown and ExDoc

The OS\_Mon application's documentation has been migrated from the legacy XML-based system to Markdown format, with ExDoc used for generation. This change updates the build system (Makefile) and replaces the old \doc/src\ XML files with new Markdown files (\os\_mon\_app.md\, \notes.md\) and an ExDoc configuration (\docs.exs\). Users will see the updated documentation structure and potentially improved rendering of the OS\_Mon manual pages and release notes.

_lib/os\mon · high confidence

stdlib: Update to version 8.0.2 with new modules and dependencies

The stdlib application has been updated to version 8.0.2, introducing several new modules including argparse, binary, edlin\_key, edlin\_context, edlin\_type\_suggestion, erl\_abstract\_code, erl\_anno, erl\_error, erl\_features, erl\_stdlib\_errors, graph, io\_ansi, json, man\_docs, maps, peer, rand, records, shell\_docs, shell\_docs\_markdown, unicode\_util, and zstd. The module list also reflects the removal of lib, pg, regexp, and dets\_v8. Additionally, the application now declares runtime dependencies on sasl, kernel, erts, crypto, compiler, and syntax\_tools.

bootstrap/lib/stdlib/ebin · high confidence

Test coverage

2 commits adding/updating tests in erts/emulator/test/map\_SUITE\_data; Add NIF test helper for persistent term destructor tests; Add debugger test suite; Added BEAM test cases for literal type tests and select\_val instructions; Added NIF API 2.0 header files for testing; Added NIF test harness for the tracer suite; Added benchmark result visualization tool; Added dirty NIF test suite data; Added hello.erl test module for BEAM instruction testing; Added port test suite data for file descriptor counting and failure simulation; Added property-based tests for compiler type system and compilation; Added property-based tests for erlang:phash2/1 and erlang:phash2/2; Added property-based tests for the new crypto API; Added scheduling\_drv test driver for port scheduling scenarios; Added stress tests for the rwmutex implementation; Added test coverage for the SHA256 NIF example; Added test data for large integer arithmetic operations; Added test driver for signal race conditions; Added test for tuple element access and overwriting; Added test for unicode module names; Added test harness for port tracing; Added test helper for Erlang/OTP process\_SUITE; Added test infrastructure for slow driver and NIF functions; Added test infrastructure for tracer port crash scenarios; Added test suite data for module\_info tests; Added test support files for binary\_SUITE; Added tests for the OTP-13076 distribution node fix; Added tests for the legacy NIF API 2.4; Expanded Common Test suite coverage; Expanded Core Erlang test coverage for compiler passes; Expanded NIF test suite with new test infrastructure and driver; Expanded code\_SUITE test suite with new test cases and infrastructure; Expanded compiler test coverage for SSA passes and bounds analysis; Expanded compiler test suite with new test fixtures; Expanded test coverage for ASN.1 compiler and runtime; Expanded test coverage for compiler doc chunk generation; Expanded test coverage for erts/test; Expanded test coverage for receive optimization; Expanded test coverage for the Erlang runtime system; Expanded test coverage for the SSA compiler passes; Migrate allocator test suite from Erlang drivers to NIFs; Modernize and expand the ASN.1 test suite; Removed obsolete test data file for tuple\_size guard; Removed test data for parameterized modules; Restructure crypto test suite into separate modules; Strengthen record access in guards tests with corruption checks; Updated AES test vectors for CCM, VNT, and VPT modes; Updated EPMD test suite to Common Test standard; Updated NIF test suite to reflect API changes; Updated and added test cases for the inline SUITE; Updated and added test drivers for the driver\_SUITE; Updated beam validator test suite with new and modified test cases; Updated copyright headers and removed obsolete compiler test cases; Updated copyright headers to Apache License 2.0; Updated ethread tests with synchronization and licensing changes; Updated license headers and build configuration for test suite data; Updated license headers and fixed C driver API compatibility; Updated license headers and modernized test driver API; Updated test data and headers for the erlc\_SUITE suite; Updated test driver to match new Erlang driver API; Updated test drivers to conform to the new driver API; Updated test suite data and driver implementation for the send\_term\_SUITE; Updated test suite data for port BIFs; Updated test suite headers and build rules; Updated test utilities with Apache 2.0 license and removed purify support.

Dependencies

Lock smoke-test dependencies

The Elixir dependency lock file for the compiler's smoke test build is now pinned to specific versions of libraries including credentials\_obfuscation (1.1.0), goldrush (0.1.9), jsx (2.9.0), lager (3.8.0), rabbit\_common (3.7.20), ranch (1.7.1), and recon (2.5.0). This ensures the smoke test uses consistent, reproducible versions of these dependencies.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 53.

Lenses

  • Code Health 85
  • Architecture 99
  • Maturity 71
  • Readiness 46
  • Security 57
  • Event-Driven 55
  • Event Sourcing 86
  • Accessibility 55

Changes since last survey

  • 300 commits — 230 feature/other, 70 fixes

By area

  • (repo) — 191 commits
  • lib/ssl — 42 commits
  • lib/ssh — 15 commits
  • lib/compiler — 9 commits
  • lib/crypto — 8 commits
  • lib/stdlib — 7 commits
  • (root) — 6 commits
  • lib/kernel — 6 commits
  • erts/emulator — 5 commits
  • erts/epmd — 3 commits
  • lib/diameter — 2 commits
  • lib/public_key — 2 commits
  • .github/dockerfiles — 1 commit
  • bootstrap/lib — 1 commit
  • erts/preloaded — 1 commit
  • lib/mnesia — 1 commit

Notable commits

  • fix: Fix chacha20-poly1305 key buffer overread
  • fix: Fix chacha20-poly1305 key buffer overread
  • fix: Fix crash in diameter_dist when Session-Id avp is shorter than 8 bytes
  • fix: Fix crypto:macN overlength crash
  • fix: Fix infinite loop in diameter_dist when avp has zero length
  • fix: Fix obvious misspelling bug
  • fix: Fix segfault when crypto:crypto_one_time_aead_init fails argument validation
  • fix: Merge branch 'ingela/doc-fix/OTP-20248' into maint
  • fix: Merge branch 'ingela/doc-fix/OTP-20248' into maint-29
  • fix: Merge branch 'isabell/compiler/fix/GH-11352/OTP-20255' into maint
  • fix: Merge branch 'isabell/compiler/fix/GH-11368/OTP-20261' into maint
  • fix: Merge branch 'isabell/compiler/fix/GH-11368/OTP-20261' into maint-29
  • fix: Merge branch 'john/erts/fix-epmd-regression/OTP-20275' into maint-27
  • fix: Merge branch 'john/erts/fix-epmd-regression/OTP-20275' into maint-28
  • fix: Merge branch 'john/erts/fix-epmd-regression/OTP-20275' into maint-29
  • fix: Merge branch 'kiko/erts/fixes-heap-pointer-signed-unsigned/OTP-20214' into maint-27
  • fix: Merge branch 'kiko/erts/fixes-heap-pointer-signed-unsigned/OTP-20214' into maint-28
  • fix: Merge branch 'kiko/erts/fixes-heap-pointer-signed-unsigned/OTP-20214' into maint-29
  • fix: Merge branch 'michal/crypto/fix-aead-cipher-key-buffer-overread/OTP-20244' into maint
  • fix: Merge branch 'michal/crypto/fix-aead-cipher-key-buffer-overread/OTP-20244' into maint-28
  • …and 280 more

Architecture

  • 0 containers · 1 bounded contexts · 0 dependency edges (baseline)

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

erlang/otp was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 6 August 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 0652aaad6e3cc39d0e74ef99a8025934ea57ddea — the exact code this score is about.
  • Scored under rubric-2026.08.19 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer latest.