RFR: 8369186: HotSpot Style Guide should permit some uses of the C++ Standard Library [v2]
David Holmes
dholmes at openjdk.org
Fri Oct 10 05:46:05 UTC 2025
On Thu, 9 Oct 2025 04:07:02 GMT, Kim Barrett <kbarrett at openjdk.org> wrote:
>> Please review this change to the HotSpot Style Guide to suggest that C++
>> Standard Library components may be used, after appropriate vetting and
>> discussion, rather than just a blanket "no, don't use it" with a few very
>> narrow exceptions. It provides some guidance on that vetting process and
>> the criteria to use, along with usage patterns.
>>
>> In particular, it proposes that Standard Library headers should not be
>> included directly, but instead through HotSpot-provided wrapper headers. This
>> gives us a place to document usage, provide workarounds for platform issues in
>> a single place, and so on.
>>
>> Such wrapper headers are provided by this PR for `<cstddef>`, `<limits>`, and
>> `<type_traits>`, along with updates to use them. I have a separate change for
>> `<new>` that I plan to propose later, under JDK-8369187. There will be
>> additional followups for other C compatibility headers besides `<cstddef>`.
>>
>> This PR also cleans up some nomenclature issues around forbid vs exclude and
>> the like.
>>
>> Testing: mach5 tier1-5, GHA sanity tests
>
> Kim Barrett has updated the pull request incrementally with two additional commits since the last revision:
>
> - jrose comments
> - move tuple to undecided category
> Are global or static objects with non-trivial destructors permitted? I think there are a couple of such uses today.
It is discouraged but yes they exist and cause problems. I am currently fixing a bunch of issues due to static Semaphore instances. https://bugs.openjdk.org/browse/JDK-8361462
-------------
PR Comment: https://git.openjdk.org/jdk/pull/27601#issuecomment-3388368328
More information about the hotspot-dev
mailing list