With Microsoft finally making its Arm Windows version available with Arm options for its Surface Pro 9 tablet, there’s a lingering question: Where are all the Arm applications going to come from? Microsoft has produced a lightweight, relatively inexpensive yet powerful and flexible hardware answer in the Windows Dev Kit 2023, formerly known as Project Volterra.
- Windows Dev Kit 2023 manages Arm workloads other hardware can’t
- Why can’t I use my Surface Pro 9 for Arm development?
- Building Arm code in Visual Studio
- Arm is more than Microsoft
- Using Dev Kit for Linux and Android
- Using the Dev Kit outside of the Microsoft ecosystem
Windows Dev Kit 2023 manages Arm workloads other hardware can’t
The Windows Dev Kit 2023 is a relatively low-cost Arm-based developer PC based around Qualcomm’s 8cx Gen 3 Arm chipset. You can buy it now from the Microsoft Store for $599, around a third of the cost of the new Arm-based Surface Pro 9 5G.
Built into a small black case made partially from recovered ocean plastics, the Windows Dev Kit has:
- 32GB of memory and 512GB fast NVMe storage, a similar specification to most developer laptops
- Two USB-C ports and one mini DisplayPort connection for video out
- Three USB-A ports that connect to most common devices
- Gigabit Ethernet port and Wi-Fi 6
All you need to add is a screen and a keyboard and mouse.
The low price tag makes it useful for Arm and beyond
Its low cost is one of the most attractive features of Windows Dev Kit 2023. You can buy three or four for the cost of a high-end developer PC, either to stack them for one developer as a complete build, test and deploy environment for Arm Windows applications or to provide tools for more developers.
Working with continuous integration and continuous deployment tools like Azure Pipelines, you’re not limited to Arm development. With these tools, you can use cloud-build tools for working with x86 and x64 and even use a shared Mac to build iOS and macOS code.
With the ability to drive multiple screens there’s the prospect of an interesting crossover with Microsoft’s cloud-hosted Dev Box, allowing you to get additional power when you need it. There’s also support for Microsoft’s Remote Desktop feature, so you can boot a Windows Dev Kit device in headless mode and access it from your usual PC or laptop, logging in when you need to build or test Windows Arm applications.
SEE: Hiring kit: Back-End Developer (TechRepublic Premium)
Out of the box you get a copy of Windows 11 Pro and Office 365, ready for use with existing Microsoft 365 accounts. A link on the basic set up instructions takes you to more detailed information on Microsoft’s website, which also provides links to Arm versions of Microsoft’s main development tools and links to Qualcomm’s developer content and tools for use with its neural processing unit artificial intelligence accelerator.
Why can’t I use my Surface Pro 9 for Arm development?
While the Windows on Arm version of Windows 11 can emulate both 32- and 64-bit Intel processors, there’s a hefty overhead that comes with any emulation. If you buy the 8GB version of the Surface Pro 9 5G, you’re risking potentially slow and stuttering applications, as Windows’ just-in-time emulation technology converts Intel code to Arm code, caching it for the next time it’s called.
Microsoft has been working to provide tooling, so developers can build native versions of their code for Arm. Building on work done for Windows RT and optimized for the latest Arm processors, you can compile directly to Arm from familiar languages like C# and C++ using familiar tools like Visual Studio and Visual Studio Code.
There’s no need to learn anything new, as Microsoft has provided Arm versions of all Windows application programming interfaces and software development kits. In addition, there are many popular libraries on NuGet already making the transition to a new processor architecture and an enthusiastic Arm Windows community driving updates for those that haven’t made the necessary changes.
Compiling code for Arm should now be as easy as targeting Arm64 in Microsoft’s build tools. While you could use Azure’s Ampere Altera instances to host your compilers and test suites through Azure’s Windows 11 Arm virtual machines, most developers prefer something a little closer to home. Moreover, you could use a Surface Pro X or Pro 9 as an Arm development PC, but the thin and light always-connected mobile devices are better suited for editing code, not running a full developer toolchain.
Building Arm code in Visual Studio
Perhaps the best way of judging Microsoft’s success is building and running code. As the current builds of .NET 7 are near final, I built and compiled a simple console application using the latest Arm-native preview of Visual Studio.
There was no difference between working on an x64 Intel Xeon-E workstation and on the Arm-based Dev Kit. Creating a C# project set up the same files, and when the code compiled, I got the same output on both machines. I got the same result working closer to the metal with C++, with both devices delivering the same results and running native code.
That’s what we should expect, the Windows Arm APIs and SDKs need to be the same as the Intel hardware. Microsoft needs to get this right if it’s to establish Arm as a valid part of the Windows ecosystem, making it as simple for developers to deliver to one platform as to the other. It’s already building Arm versions of its own code, with considerable success. Only a couple of processes on the Windows Dev Kit 2023 Windows install run as emulated x64 code, and one of them is the Office 365 click-to-run installer.
SEE: How to use the new Microsoft 365 deployment tools (TechRepublic)
It would have been interesting to experiment with the hardware AI accelerator, but you need access to Qualcomm’s developer program. A week after applying, I still don’t have access to the necessary tools and SDKs. However, as it is based around the ONNX portable model standard, and you should be able to use familiar tools like Azure’s Machine Learning studio to design and train models ready for export as ONNX.
These can then be optimized using Qualcomm’s tools and added to your applications using Microsoft’s existing ONNX runtime libraries. Hopefully the conversion process can be automated in future releases, so you only need to build one ONNX model that can be run on all CPUs, GPUs, and NPUs, rather than having to distribute separate ones.
Arm is more than Microsoft
Microsoft isn’t the only company working on delivering an Arm tool chain for Windows. JetBrains has recently shipped a preview of an Arm64 version of its popular Rider .NET development environment, available as part of its early access program.
If you don’t need the full Visual Studio environment and want something more like an integrated development environment, Rider is a useful alternative for C# development. While it doesn’t fully support .NET 7 yet, it works well enough for most purposes. I was able to use it to edit, compile, and test the C# project I built in Visual Studio.
There have been a lot of changes to how Microsoft supports developers over the last few years. Back in the early days of .NET, it was very much a corporate-driven approach, with regular deliveries of code and documentation on quarterly MSDN CD-ROMs. That’s all changed with the shift to open platforms, open design, and open-source development. Windows’ developer philosophy has become one of going to where the developers are.
Using Dev Kit for Linux and Android
As a result of those changes to how developers work, the Windows Dev Kit 2023 can’t only be a pure Windows device. Azure is running both Windows and Linux, and if you’re going to build modern cloud-native applications, your toolchain has to include Linux support.
While the drivers necessary for running Linux natively on the Windows Dev Kit hardware haven’t been released, you can still take advantage of Windows support for its hosted Linux kernel via WSL 2. The WSL Ubuntu release will install the Arm version, so you have end-to-end Arm support in both Windows and in Linux.
SEE: Linux 101: What tech pros need to know (TechRepublic Premium)
There’s more to the platform than Linux and Windows, too. With the recent release of the Windows Subsystem for Android, you now have a local Android environment with full developer access. It may not have the full Google Play APIs, but you can use it to test code written in Visual Studio using its mobile development tools Xamarin or MAUI.
Sadly, the Windows version of Google’s Android Studio remains purely x64 for now, so it only runs in emulation. But, using it with WSA on Microsoft’s Arm hardware can help test and debug code, as WSA allows the host machine to use Android’s ADB connection for debugging and sideloading code.
Using the Dev Kit outside of the Microsoft ecosystem
It’ll be interesting to watch other vendors’ reactions to the Dev Kit as a gateway to Windows on Arm. Clearly JetBrains’ release of an Arm version of Rider is a pointer to work that hopefully should end with Arm versions of tools like IntelliJ.
Microsoft’s tools aren’t the only platform for building Windows applications, so it’s worth keeping an eye on technologies like Google’s Flutter, which has an existing GitHub pull request for Arm support from developers at Linaro, though the code is not in the main branch yet. The underlying Dart language already has support for Windows on Arm in its beta channel, giving you another option for cross-platform application development.
Windows Dev Kit is at the heart of Microsoft’s plan to deliver a cross-platform Windows. The operating system is there; now, it’s time for apps to follow. By aggressively pricing developer-grade hardware, Microsoft is aiming to quickly stamp out the argument that porting and testing code is too expensive. It’s an answer we can all take advantage of, putting Arm and Windows on our desktops.
Subscribe to the Developer Insider Newsletter
From the hottest programming languages to commentary on the Linux OS, get the developer and open source news and tips you need to know. Delivered Tuesdays and Thursdays