LLVM 17.0 has already been released and these are its news

LLVM Logo

LLVM is a framework for developing compilers as well as helping to build new programming languages ​​and improve existing languages.

After six months of development The new version of LLVM 17.0 has been presented, in which various improvements, changes, bug fixes and, above all, various important aspects have been implemented in Clang 17.0.

For those unfamiliar with LLVM, you should know that this is a GCC compatible compiler (compilers, optimizers, and code generators) that compiles programs into a RISC-like virtual instruction intermediate bitcode (a low-level virtual machine with a multilevel optimization system).

The generated pseudocode can be converted by the JIT compiler into machine instructions just at the time of program execution.

Main new features of LLVM 17.0

In this new version of LLVM 17.0 that is presented, there are various relevant aspects to take into account, of which are, for example, the improvements to the X86 backend, well he has addedo support for extensions instruction set architecture ISA SHA512, ISA SM3, ISA SM4 and ISA AVX-VNNI-INT16.

In addition to this, it also highlights the improvements in backend capabilities for architecture RISC-V which have expanded significantly, since added support for the sifive-x280 processor.

Another of the changes that we can find is the Implemented support for XTH processor extensions*, as well as compatibility with extensions LSX, LASX, LVZ and LBT ISA to the backend of the LoongArch architecture.

Improved backends for AArch64, ARM, WebAssembly, MIPS, PowerPC, AMDGPU architectures, expanded LLD linker capabilities, and added a new "register info" command to the LLDB debugger to display all known information about a record .

Regarding the improvements in Clang 17.0, it is highlighted that the features defined in the future C-standard C2x such as the bool, static_assert, aligns, alignof and thread_local keywords have been implemented, as well as the ability to specify empty square brackets «{} » for initialization to zero values.

The codeo C provides the ability to forward the "goto" expression within "asm" blocks through indirectly selected tags, support was added for a C extension that allows using a type instead of an expression as the first operand in "_Generic", in addition to allowing constant expressions in C language to use of structures, unions and arrays declared with the "const" attribute.

Regarding the improvements related to the C++20 standard, it is mentioned that now On all platforms except Windows, there is full support for Coroutines, In addition, additional requirements for constant expression comparison operations have been implemented.

It is also highlighted that nowCorrect parsing of lambda templates is guaranteed specified immediately after the template parameters and containing a variable with a dependent type in the block. Reserved the use of double underscores in user literals and discouraged the use of the "operator" keyword in function definitions with reserved identifiers in the name

As for the improvements to be made related to the C++23 standard , it is mentioned that it is in the final stage of approval by ISO, since changed scope of final return type in lambda functions to look at the hooks first and then the surrounding text.

Of the other changes that stand out:

  • Added the ability to define multidimensional arrays using
  • When compiling C++ applications using the "-O0" optimization mode, code generation for calls has been improved.
  • Added support for the NO_COLOR environment variable to disable output color.
  • Static analysis and diagnostic tools have been significantly expanded, for example, new signed integer overflow checks, lambda template correction, constexpr expressions, null pointer comparisons, use of uninitialized structures, etc. have been added.
  • The Libc++ library continues to implement support for the capabilities of the C++20 and C++23 standards, and work has also begun to provide support for the C++26 specification.
  • Added support for the expression “requires cplusplus23” in descriptions of connections between header files and modules.

Finally, if you are interested in being able to know more about it, you can consult the details in the following link


The content of the article adheres to our principles of editorial ethics. To report an error click here.

Be the first to comment

Leave a Comment

Your email address will not be published. Required fields are marked with *

*

*

  1. Responsible for the data: AB Internet Networks 2008 SL
  2. Purpose of the data: Control SPAM, comment management.
  3. Legitimation: Your consent
  4. Communication of the data: The data will not be communicated to third parties except by legal obligation.
  5. Data storage: Database hosted by Occentus Networks (EU)
  6. Rights: At any time you can limit, recover and delete your information.