LLVM, a project that develops tools such as compilers, optimizers, and code generators to compile programs into intermediate bitcode RISC-like virtual instructions, has announced the release of LLVM 23.1.0. This project, which includes a multi-level optimization system, generates pseudocode that can be converted into machine code for a specific platform or used by a JIT compiler to generate machine instructions during program execution. The development of the Clang compiler, which supports programming languages like C, C++, and Objective-C, is also based on LLVM technologies.
With the 18.x branch onwards, LLVM has adopted a new version numbering scheme, where the zero release (“N.0”) is used during development, and the first stable version is denoted as “N.1”. The project’s code is distributed under the Apache 2.0 license and can be found on GitHub.
The latest improvements in Clang 23 include:
- Support for OpenCL C 3.1 (-cl-std=CL3.1).
- Features related to the C language:
- Added functions for cyclic bit shift and changing the order of array elements in memory, in preparation for the C2y standard.
- Allowed access to structure elements using “.” inside constant expressions.
- Enhanced string formatting functions to support size modifiers introduced in the C23 standard.
- C++-related features:
- Support for enum comparisons with the function __is_trivially_equality_comparable.
- Usage of the “auto” keyword to infer function parameter types in all C++ modes.
- Introduction of flags “-std=c++2d” and “-std=c++2d” “-std=gnu++2d” to test upcoming features for post C++26 standardization.
- Added support for additional universal escape characters and named aliases.
- Expansion of the ability to use structured bindings in “constexpr” and “constinit” contexts to support tuple-like structures as per