rust-lang / compiler-team

A home for compiler team planning documents, meeting minutes, and other such things.
https://rust-lang.github.io/compiler-team/
Apache License 2.0
387 stars 69 forks source link

Enable `clang-format` for `rustc` #756

Closed DianQK closed 4 months ago

DianQK commented 5 months ago

Proposal

I plan to use clang-format to format the C++ code in compiler/rustc_llvm/llvm-wrapper. The issue originates from: https://github.com/rust-lang/rust/issues/123510.

To achieve this, I intend to integrate clang-format into our LLVM build process. Although adding clang-format will increase maintenance costs, even minor version differences (e.g., between clang-format 18.1.7 and 18.1.6) can lead to formatting discrepancies. Using a consistent build version ensures uniform formatting results, preventing inconsistencies with the CI environment and reducing the difficulties developers face when configuring their environments.

I plan to add new fields in config.toml to control clang-format behavior:

[llvm]
# Use a specified version of clang-format, the most common scenario.
clang-format = '5a5152f653959d14d68613a3a8a033fb65eec021'
# Use a clang-format from a specified path.
clang-format = '/path/to/clang-format'
# Use the same version as the llvm-project submodule; if not available it will build from local.
clang-format = 'submodule'
# For specific reasons, do not use clang-format.
clang-format = false

Mentors or Reviewers

Myself or @workingjubilee.

Process

The main points of the Major Change Process are as follows:

You can read more about Major Change Proposals on forge.

Comments

This issue is not meant to be used for technical discussion. There is a Zulip stream for that. Use this issue to leave procedural comments, such as volunteering to review, indicating that you second the proposal (or third, etc), or raising a concern that you would like to be addressed.

rustbot commented 5 months ago

This issue is not meant to be used for technical discussion. There is a Zulip stream for that. Use this issue to leave procedural comments, such as volunteering to review, indicating that you second the proposal (or third, etc), or raising a concern that you would like to be addressed.

Concerns or objections to the proposal should be discussed on Zulip and formally registered here by adding a comment with the following syntax:

 @rustbot concern reason-for-concern 
 <description of the concern> 

Concerns can be lifted with:

 @rustbot resolve reason-for-concern 

See documentation at https://forge.rust-lang.org

cc @rust-lang/compiler @rust-lang/compiler-contributors

DianQK commented 4 months ago

We can use clang-format provided by pip: https://pypi.org/project/clang-format/.