<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Aptos;
        panose-1:2 11 0 4 2 2 2 2 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:12.0pt;
        font-family:"Aptos",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        mso-ligatures:none;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body lang="DE" link="blue" vlink="purple" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US">Hi all,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US">even if we deprecate 32 bit now, arm32 will still be usable with JDK 25 LTS for quite some time.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US">The big question is if there will still be a significant demand in 2 years.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US">I also wonder when other projects will terminate arm32 support.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US">Best regards,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US">Martin<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<div id="mail-editor-reference-message-container">
<div>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal" style="margin-bottom:12.0pt"><b><span style="color:black">Von:
</span></b><span style="color:black">jdk-dev <jdk-dev-retn@openjdk.org> im Auftrag von Johan Vos <johan.vos@gluonhq.com><br>
<b>Datum: </b>Freitag, 4. April 2025 um 11:17<br>
<b>An: </b>Thomas Stüfe <thomas.stuefe@gmail.com><br>
<b>Cc: </b>JDK Dev list <jdk-dev@openjdk.org><br>
<b>Betreff: </b>Re: The future of 32-bit?<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal">Hi Thomas, all,<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">At the OCW workshop, I expressed my worries about removing all 32-bit code, because I feared it would impact the ability to distribute Java apps to mobile devices (via the existing stores). As someone pointed out, at the very least 32-bit
 versions are not a requirement anymore. I did a bit of research, and while there are still 32-bit devices in the field, the 2 major stores are pushing for 64-bits, and discouraging 32 bits -- something we would call @Deprecated(forRemoval="true"). As a consequence,
 zero-32 code is no requirement for iOS, and arm-32 is no requirement for Android.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">There are still usecases for the Pi Zero (v1) and older Raspberry Pi devices (< 3). I have no idea about the installed base of those devices, but I believe it is possible that this would be the largest group that will suffer if 32-bit support
 was halted.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Having said that, I fully agree there is lots of additional work required to keep 32-bit support (the (un)compressed classpointers are a good example indeed). Though situation.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">- Johan<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">On Fri, Apr 4, 2025 at 9:17<span style="font-family:"Arial",sans-serif"> </span>AM Thomas Stüfe <<a href="mailto:thomas.stuefe@gmail.com">thomas.stuefe@gmail.com</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<div>
<p class="MsoNormal">Hi,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Continuing our discussion at the last FOSDEM workshop, I would like to know what we think about the future of 32-bit support.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Supporting 32-bit became a lot more cumbersome after the x86 port was removed. Before, one could easily build 32-bit on the ubiquitous x64 platforms with --target-bits=32; that is not an option anymore.<o:p></o:p></p>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><br>
We have two remaining 32-bit platforms, at least in theory:<br>
<br>
- arm32<br>
- zero 32-bit<br>
<br>
Zero 32-bit has been broken for a long while now; see <a href="https://bugs.openjdk.org/browse/JDK-8353699" target="_blank">
https://bugs.openjdk.org/browse/JDK-8353699</a>. I try this occasionally and don't remember the last time it built successfully.<br>
<br>
Arm32 is the last bastion of serious 32-bit support, and the last option for testing 32-bit coding. So, one needs to build arm32 (best done via crossbuild), then spin up an arm32 system to test the changes. I do this with a slow-as-molasses Raspberry. It is
 not fun.<br>
<br>
Unfortunately, maintaining 32-bit is not as easy as "make sure it builds and fix smaller things". It requires real development, especially in the context of ongoing object header work.<br>
<br>
32-bit also means we need to keep some form of uncompressed class pointers around, which makes the eventual removal of uncompressed class pointers (see [2]) more difficult. The current plan is to implement some sort of fake-compressed-class-pointer mode [3],
 which sounds easy in theory but is still tricky work I'd rather avoid.<br>
<br>
Keeping up 32-bit development in the face of dwindling options to build and test is a struggle. It has been a struggle for some time now. Even the comparatively well-maintained arm32 platform had periodic weeks of brokenness after heavy upstream changes. And
 this is not intended to diminish the effort put in by the arm32-maintainers. They are few, and they do good work.
<o:p></o:p></p>
<div>
<p class="MsoNormal">But I expect this periodic brokenness to worsen now after the removal of x86. This is not a good situation.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Thank you, Thomas<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt">[1] <a href="https://bugs.openjdk.org/browse/JDK-8353699" target="_blank">
https://bugs.openjdk.org/browse/JDK-8353699</a><br>
[2] <a href="https://bugs.openjdk.org/browse/JDK-8350754" target="_blank">https://bugs.openjdk.org/browse/JDK-8350754</a><br>
[3] <a href="https://bugs.openjdk.org/browse/JDK-8350754?focusedId=14757275&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14757275" target="_blank">
https://bugs.openjdk.org/browse/JDK-8350754?focusedId=14757275&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14757275</a><o:p></o:p></p>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</div>
</body>
</html>