JEP 501: Deprecate the 32-bit x86 Port for Removal

OwnerAleksey Shipilev
TypeFeature
ScopeImplementation
StatusIntegrated
Release24
Componenthotspot / other
Discussionhotspot dash dev at openjdk dot org
EffortS
DurationS
Relates toJEP 449: Deprecate the Windows 32-bit x86 Port for Removal
JEP draft: JEP XXX: Remove the 32-bit x86 Port
JEP 479: Remove the Windows 32-bit x86 Port
Reviewed byColeen Phillimore, Magnus Ihse Bursie, Vladimir Kozlov
Endorsed byVladimir Kozlov
Created2024/08/13 09:08
Updated2024/11/28 10:00
Issue8338285

Summary

Deprecate the 32-bit x86 port, with the intent to remove it in a future release. This will thereby deprecate the Linux 32-bit x86 port, which is the only 32-bit x86 port remaining in the JDK. It will also, effectively, deprecate any remaining downstream 32-bit x86 ports. After the 32-bit x86 port is removed, the architecture-agnostic Zero port will be the only way to run Java programs on 32-bit x86 processors.

Goals

Non-Goals

Motivation

As noted in a recent discussion involving the current 32-bit x86 maintainer and interested parties, the cost of maintaining this port outweighs the benefits. Maintaining parity with new features, such as Loom, the Foreign Function & Memory API (FFM), the Vector API, late GC barrier expansion, etc., is a major opportunity cost. Deprecating and eventually removing the port would allow OpenJDK developers to accelerate the development of new features and enhancements.

Deprecating this port in JDK 24 will allow us to remove it in JDK 25.

Description

An attempt to configure a 32-bit x86 build will produce:

$ bash ./configure
...
checking compilation type... native
configure: error: The 32-bit x86 port is deprecated and may be removed in a future release. \
Use --enable-deprecated-ports=yes to suppress this error.
configure exiting with result code 1
$

The build configuration option --enable-deprecated-ports=yes will suppress the error and continue:

$ bash ./configure --enable-deprecated-ports=yes
...
checking compilation type... native
configure: WARNING: The 32-bit x86 port is deprecated and may be removed in a future release.
...
Build performance summary:
* Cores to use:   32
* Memory limit:   96601 MB

The following warnings were produced. Repeated here for convenience:
WARNING: The 32-bit x86 port is deprecated and may be removed in a future release.
$

There will be no guarantee that the port will build, much less function.

In order to unblock mainline development, we have already disabled Linux 32-bit x86 builds in the GitHub Actions defined in the JDK source repository (8338286). We will completely remove these build jobs as part of this deprecation.

Risks and Assumptions

Alternatives

The alternative would be to continue to support 32-bit x86. This would require active maintainers who can provide a sustainable and performant implementation of virtual threads, as well as future JEPs, to ensure that the JDK on 32-bit x86 continues to meet the expectations of Java developers. There are no prospective maintainers who are willing to take that role.