Extra Clang Tools 23.0.0git (In-Progress) Release Notes

Written by the LLVM Team

Warning

These are in-progress notes for the upcoming Extra Clang Tools 23 release. Release notes for previous releases can be found on the Download Page.

Introduction

This document contains the release notes for the Extra Clang Tools, part of the Clang release 23.0.0git. Here we describe the status of the Extra Clang Tools in some detail, including major improvements from the previous release and new feature work. All LLVM releases may be downloaded from the LLVM releases web site.

For more information about Clang or LLVM, including information about the latest release, please see the Clang Web Site or the LLVM Web Site.

Note that if you are reading this file from a Git checkout or the main Clang web page, this document applies to the next release, not the current one. To see the release notes for a specific release, please see the releases page.

What’s New in Extra Clang Tools 23.0.0git?

Some of the major new features and improvements to Extra Clang Tools are listed here. Generic improvements to Extra Clang Tools as a whole or to its underlying infrastructure are described first, followed by tool-specific sections.

Major New Features

Potentially Breaking Changes

Improvements to clangd

Inlay hints

Diagnostics

Semantic Highlighting

Compile flags

Hover

Code completion

Code actions

Signature help

Cross-references

Objective-C

Miscellaneous

Improvements to clang-doc

Improvements to clang-query

Improvements to clang-tidy

New checks

  • New llvm-use-vector-utils check.

    Finds calls to llvm::to_vector(llvm::map_range(...)) and llvm::to_vector(llvm::make_filter_range(...)) that can be replaced with llvm::map_to_vector and llvm::filter_to_vector.

  • New modernize-use-string-view check.

    Looks for functions returning std::[w|u8|u16|u32]string and suggests to change it to std::[...]string_view for performance reasons if possible.

  • New performance-string-view-conversions check.

    Finds and removes redundant conversions from std::[w|u8|u16|u32]string_view to std::[...]string in call expressions expecting std::[...]string_view.

New check aliases

Changes in existing checks

  • Improved bugprone-macro-parentheses check by printing the macro definition in the warning message if the macro is defined on command line.

  • Improved bugprone-unsafe-functions check by adding the function std::get_temporary_buffer to the default list of unsafe functions. (This function is unsafe, useless, deprecated in C++17 and removed in C++20).

  • Improved bugprone-use-after-move check by including the name of the invalidating function in the warning message when a custom invalidation function is used (via the InvalidationFunctions option).

  • Improved llvm-use-ranges check by adding support for the following algorithms: std::accumulate, std::replace_copy, and std::replace_copy_if.

  • Improved misc-const-correctness check:

    • Added support for analyzing function parameters with the AnalyzeParameters option.

  • Improved modernize-use-std-format check by fixing a crash when an argument is part of a macro expansion.

  • Improved modernize-use-using check by avoiding the generation of invalid code for function types with redundant parentheses.

  • Improved performance-enum-size check:

    • Exclude enum in extern "C" blocks.

    • Improved the ignore list to correctly handle typedef and enum.

  • Improved performance-move-const-arg check by avoiding false positives on trivially copyable types with a non-public copy constructor.

  • Improved readability-enum-initial-value check: the warning message now uses separate note diagnostics for each uninitialized enumerator, making it easier to see which specific enumerators need explicit initialization.

Removed checks

Miscellaneous

Improvements to include-fixer

Improvements to clang-include-fixer

Improvements to modularize

Improvements to pp-trace

Clang-tidy Visual Studio plugin