Dropping support for Arm32 (.NET 9) #71042
-
Update: Linux Arm32 will be supported with .NET 9+. Hey folks -- A couple of us have been talking about the CoreCLR architecture support roadmap. We're hyper-focused on Arm64 and x64 (alpha order). They are both critical to us. As it relates to Arm, all of our effort has gone into Arm64/Armv8. There have been no substantial improvement in Arm32/Armv7. We're not focused on it. We've started to talk about dropping support for it. Our current thinking is to support Arm32 through .NET 7 and 8 and then end support after that (with .NET 9). We dropped support for Windows Arm32 some time ago. This thinking is specific to CoreCLR, not Mono. We encourage Arm32 users to migrate to Arm64 if that's a choice. Our best work on Arm is absolutely on the 64-bit side, and there is more coming. Also, we'd absolutely love more (functional or performance) issue reports on Arm64 to improve it further. This can be on Raspberry Pi class devices or on big servers in the cloud. The IoT space is an important part of the .NET + Arm ecosystem. Raspberry Pi 3 Model B was the first 64-bit capable Pi and has been available since February 2016. We've been waiting since then for Raspberry Pi to announce their 64-bit OS. In fact, I've tested .NET on Raspberry Pi with Manjaro and also other distros while waiting. Yes, I use Raspberry Pi OS 64-bit now. It's great to see the Raspberry Pi Foundation focused on 64-bit enablement, particularly since most of their hardware lineup (including the latest Pi Zero) is Arm64-capable. We also appreciate that they adopt new Debian versions at a decent pace, but that's a separate topic. Gosh! We've not even shipped .NET 7 and we're already talking about .NET 9? We plan to be shipping new .NET releases to/for you for a long time. This proposed architecture change (a removal of support) is perhaps the most important one we've considered. We're wanting to start a conversation about it and see if our read of your hardware needs is well-informed or not. There is at least one party that we know has a hard dependency on Arm32. Assuming that Arm32 is still relevant at the start of the .NET 9 project, we won't delete Arm32 support from the codebase, but enable other parties to efficiently maintain it over time as an upstream project. This is similar to other open source projects. Some folks might ask if we have similar plans for the other 32-bit platforms we support: Wasm and Windows x86. We also have a community supported port of Mono for Armv6. No changes are planned for those projects. For mobile platforms, we follow the requirements of Apple and Google/Android. As they drop support for 32-bit, so will we. What are your thoughts on this proposed change? |
Beta Was this translation helpful? Give feedback.
Replies: 24 comments 53 replies
-
Can you shed some light on this? |
Beta Was this translation helpful? Give feedback.
-
I'm fine with dropping arm32 support, but now that .NET is going to focus on x64/arm64, is there any plan to ship .NET to Android and iOS platforms? I'm talking about coreclr and nativeaot, not mono. |
Beta Was this translation helpful? Give feedback.
-
It feels very reasonable and give some time to be prepared. Yes, small CPU based on ARM are moving to 64 bits. All what is available for the last almost 2 years now is 64 bits. So if you look at the all up period, it's like 5 years to move from Arm32 to Arm64 which seems to be reasonable all up. |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
I think sunsetting 32-bit makes sense. The major issue I can think of with the timeline is whether the supply chain for Raspberry Pis clears up in the next 2.5 years. I'm not sure that's a clear "things should be back to normal by then". My main thought is that .Net marketing as a cross-platform, long-term-stable, Arm-friendly development platform is still pretty new. As it gains traction, I would expect more developers in emerging markets to want to learn .Net as a path towards a long-term career. It feels a little like a rug-pull when the only cheap SBCs that would support .Net are the ones you can't get. All of this is to say, I don't think dropping 32-bit is a problem. I just think that to have the best positive impact on the global developer community, dropping that support should be well-telegraphed (which is beginning with this issue) and given time for developers everywhere to transition (which is tied to the global chip shortage). |
Beta Was this translation helpful? Give feedback.
-
I activity develop mini projects for raspberry pi zero w...which is arm32. I would hate to drop arm32 support. This would force all my users to upgrade to raspberry pi zero w 2 or something newer. |
Beta Was this translation helpful? Give feedback.
-
I absolutely agree with you. However the issue is people are still using 32 bit version. My build is 32 bit for arm v6 processors. I had many issues building with x64. |
Beta Was this translation helpful? Give feedback.
-
Many apps running on ARM today don't need a large address space, but might want to reduce their working set size. |
Beta Was this translation helpful? Give feedback.
-
I'm on the fence with this one. I personally would like to see all 32-bit things go the way of the dodo, but I do have some reservations about how this affects the people using these devices. I might feel differently come 2024, but currently I do wonder if it'll still be a little too early to drop it completely. The Pi Foundation is still recommending the 32-bit distribution of Raspberry Pi OS, and my impression has been that they are in no rush to recommend 64-bit as a default. (The 64-bit option is semi-hidden in the imager tool under "Raspberry Pi OS (other)".) It'd be one thing if there was a path to upgrade an existing 32-bit installation to 64-bit, but as far as I am aware there is not. A lot of these Raspberry Pis are set up by non-technical people or fledgling student developers who cobbled together their systems through much sweat, tears, and copy+pasting of commands. Their systems aren't documented, asking them to reinstall the OS isn't very far from just asking them to get another Pi. That being said I definitely don't lament the lack of improvements to Armv7 codegen and such, I would not blame the .NET team for putting Armv7 on bare-minium maintenance-only mode (or even dropping the paid support and letting it be community-supported like Armv6.) |
Beta Was this translation helpful? Give feedback.
-
I think this may make a lot of sense from the platform point of view (reducing the number of targets) including mobile (in the future). But I'm worried about the impact on IoT, I'm not talking about hobbyists now (myself included) when you can always say "buy a newer Pi". But if your considering industry level IoT where you need to support your products for a long time (maybe a decade), this move may discourage people to start even considering .NET in this scenario. This is sort of a shame if you ask me. And you're saying there are other maintainers to do this job for the time being, which may sound reasonable but for smaller companies the risk of depending on someone else than MS, the risk may simply be too high which in the end will move them away from the .NET (an possibly other MS) ecosystem(s). |
Beta Was this translation helpful? Give feedback.
-
I also use linux Arm32 in IoT. Someone from MS said that linux ARM32 will be supported as long as there will be Raspbian OS 32bit version available. I'm not sure, but that's I think till 2025 at least. (So .NET 10) |
Beta Was this translation helpful? Give feedback.
-
.net core + Uno is an attractive alternative to Qt. Dropping support for a I love to have an good alternative to Qt! |
Beta Was this translation helpful? Give feedback.
-
It's very strange to use Raspberry Pi as an example of IoT devices. Realworld IoT devices run on SoC much lower-end with much less memory. There's nothing good for these devices to use 64 bits platforms. |
Beta Was this translation helpful? Give feedback.
-
Please, reconsider your decision and align your support timeline with other non-raspberry-pi arm32-linux distributions and hardware/SoC suppliers. .NET was promoted to support IoT scenarios and the expectation is that you follow the market rules of that market segment (which are those "industry folks" as you named them). Please respect those industry folks using IoT with .NET as eraly-adopters and don't cut them off from their tools many years before hardware/SoC vendors or OS-suppliers do. Reducing your arm32-investment is understandable, but give them more time for migration. Dropping support for ARM32 in .NET will most probably result in dropping support for arm32 in SDKs like the Azure IoT Hub SDK. We are using arm32 in an Azure IoT project. So what are alternatives for "industry folks"?
Given the efforts of 1) and 2), i suspect the second one will be the choice in most cases. None the less, this will be substantial impact on projects and arguing to use .NET in the next IoT projects will be very hard (if not impossible). Even if the product will be migrated to arm64 in future because arm32 chips are not available any more or OS support is cancelled, the new chosen ecosystem might be kept. I loved using .NET on arm32 projects and until reading this announcement, i was convinced that it was a good decision to use .NET. Good developer productivity, no buffer-overflows and memleaks, good and easy to use ecosystem etc. |
Beta Was this translation helpful? Give feedback.
-
There are a fair number of PLCs that still use Arm32, still produced, where no 64-bit support has yet been announced. And since those are long-lived hardware, I think it will be bad to cut support for Arm32 at this time. |
Beta Was this translation helpful? Give feedback.
-
Maybe instead of dropping the support for arm32, we can keep arm32 codebase and move the major work to the community, and let the community to continuously contribute necessary fixes and improvements to the arm32 support in the future (eg. after .NET 10)? Just like the situation of x86 today. |
Beta Was this translation helpful? Give feedback.
-
Only Even obscurity (on linux) as Poor guys who built their hardware on 32 bit ARM and bet on c#, thinking that |
Beta Was this translation helpful? Give feedback.
-
This would be a big blow for industrial embedded iot devices. NXP’s I.mx6 is widely popular in low power/low cost industrial devices. |
Beta Was this translation helpful? Give feedback.
-
There should be a middle ground; something like "like Framework, expect minimal future arm32 improvements - future improvements will be focused on Core and arm64", rather than "lol, arm32 is now borked as it is now unsupported territory on future versions". In general the community appears "ok" in using components that are still included, and supported in as much as existing functionally is guaranteed, even if certain features are a little behind the times (looking at you Expressions). A simple "this is no longer a development focus, community patches for feature extensions are welcome" might be able to split the difference between being a timesink for parallel 64/32 work, and leaving legacy users unsupported. |
Beta Was this translation helpful? Give feedback.
-
support x86 for native aot bro?? |
Beta Was this translation helpful? Give feedback.
-
Too early for professional IoT / embedded scenarios. |
Beta Was this translation helpful? Give feedback.
-
During recent chip crisis many companies designed IoT devices using old chips due to shortages. Many upgrades were postponed. It would be nice if dropping support for arm32 could be postponed. |
Beta Was this translation helpful? Give feedback.
-
We have IoT customers with embedded control unit, that is running on Arm 32. |
Beta Was this translation helpful? Give feedback.
-
Official answer: We are NOT dropping Linux Arm32 with .NET 9. It will be supported. There are no plans to revisit this decision. I apologize for not offering clarity sooner. A number of customers have asked about this and we are happy to support them. |
Beta Was this translation helpful? Give feedback.
Official answer:
We are NOT dropping Linux Arm32 with .NET 9. It will be supported. There are no plans to revisit this decision.
I apologize for not offering clarity sooner. A number of customers have asked about this and we are happy to support them.