Windows neden Arm geliştiricileri için hazır değil?

  • Sep 06, 2023

Geliştiricileri Windows on Arm için uygulamaları taşımaya teşvik etmek istiyorsanız çapraz derleyiciler yeterince iyi değildir.

Yakın zamanda yazdığım bir köşe yazısı, açık kaynaklı bir yazılım geliştiricisiyle ilgili olumsuz bir not aldı. Görünen o ki, Windows on Arm yazılım geliştirme durumu yalnızca silikon ve donanım kullanılabilirliği ile sınırlı değil. Okumaya devam etmek. --Jason Perlow


Ayrıca bakınız

Kol işlemcileri: Bilmeniz gereken her şey

Apple'ın yakın zamanda Mac bilgisayarlarını kendisi için ürettiği çipler etrafında yeniden tasarlama hamlesi, Intel, hak sahibi olma ihtimalinizin çok yüksek olduğu bir işlemci sınıfına yeni bir ışık tuttu Şimdi.

Şimdi Oku

Yakın zamanda yayınlanan bir blog yazısında, ZDNet'in Jason Perlow Windows'un önündeki ana engelin Kol donanımdır. Keşke donanım mevcut olsaydı harika bir deneyim yaşayabilirdik çünkü yazılım ve geliştirici araçları hazır. Windows for Arm'daki geliştirici araçlarının durumunu düşündüğünüzde bu kesinlikle doğru değil.

Microsoft'un resmi geliştirici araç zinciri Arm'da oldukça kötü. Microsoft, Visual Studio'nun, VS Derleme Araçlarının Arm sürümlerini ve hatta yalnızca

Microsoft Visual C++; Arm geliştiricilerinin C++ yazılımını bir x86 ana bilgisayarında çapraz derlemesini veya x86 yazılımını taklit etmesini bekliyorlar.

.NET ve VS Code için yerel Arm desteği mevcuttur ancak bu, C++ geliştiricilerine yardımcı olmaz. MSVC kapalı kaynak olduğundan, MSVC on Arm için yerel destek almanın tek yolu Microsoft'un bunu uygulamasıdır. Görmek https://developercommunity.visualstudio.com/t/native-Arm-support-for-visual-studio/1161018

Açık kaynak durumu daha iyi değil. Kol uygulaması yoktur. MinGW veya MSYS geliştirme ortamları; bu nedenle Kol yok GCC veya Arm Clang araç zinciri henüz Windows'ta da mevcuttur. Yerel Arm desteği eklemeleri için açık özellik istekleri var ancak henüz hazır değil. Arm'ın web sitesine giderseniz, onların bir sayfası var Arm cihazı için çapraz derleme yapmak üzere bir x86 cihazı için MinGW GCC'yi buradan indirebilirsiniz. Ürününüzü Windows'ta derlemenin tek yolunun bir rakibin ürününü kullanmak olması gerçekten bir şeyler söylüyor.

Windows'taki bir diğer popüler C++ derleyicisi Intel C++ derleyici (ICC). Bu, bariz nedenlerden dolayı Arm'da mevcut değildir ve yine de Visual Studio'nun yüklenmesini gerektirir. Bu nedenle, 4 popüler C++ derleyicisinden 0'ı Arm Windows için mevcuttur.

Henüz Python'un Arm yerel Windows sürümü de yok. Ancak bu sorun muhtemelen bu yıl içerisinde çözülecektir: Bkz. https://bugs.python.org/issue33125

Derleyiciler için yerel Arm desteğine sahip olmanın neden bu kadar önemli olduğunu merak ediyor olabilirsiniz. Pek çok geliştirici, akıllı telefonlar veya konsollar için yazılım geliştirirken zaten bilgisayarlarından diğer cihazlara çapraz derleme yapıyor; peki neden aynı şeyi Arm Windows cihazlarıyla yapmasınlar? Yapabilirler ama bu ikinci sınıf bir deneyim.

Çapraz derleme, Windows için yerel bir Arm araç zinciri değildir

Yerel olarak bir derleyiciyi çalıştıramayan ve çapraz derleme için başka bir bilgisayara ihtiyaç duyan bir Windows bilgisayarı Çalıştırılması için ikili dosyalar/yürütülebilir dosyalar akıllı telefonla aynı sınıftadır, çünkü üzerinde geliştiremez ve test edemezsiniz. aynı cihaz. Buradaki fark, akıllı telefonların ve konsolların geliştirme platformu olarak tasarlanmamasıdır; Telefonunuza kod yazmak mümkündür ancak alışılmadık bir durumdur.

Gelecek vaat eden bir yazılım geliştiricisi olduğunuzu ve C++ öğrenebilmek için mağazaya bir bilgisayar almak üzere gittiğinizi hayal edelim. A durumunda, bir x86 Windows cihazı satın alırsınız, onu eve götürürsünüz, Visual Studio gibi bir IDE yüklersiniz, bazı C++ kodları yazarsınız, bir düğmeye basarsınız ve kodunuz çalışır. Bu harika, birinci sınıf desteğe sahip bir platformda gelişiyorsunuz. Şimdi B durumunda, bir Arm Windows cihazı satın alıyorsunuz, onu eve götürüyorsunuz ve bilgisayarınız için herhangi bir Visual Studio veya herhangi bir C++ derleyicisi olmadığını fark ediyorsunuz. Ee ne yapıyorsun? Pek çok kişi mağazaya geri döner ve bilgisayarı iade edip bir x86 satın alırdı. Veya C durumunda, x86 olan ikinci bir bilgisayar satın almak için mağazaya geri dönersiniz, onu eve götürürsünüz, Visual Studio'yu yüklersiniz, çapraz derleme geliştirme ortamı, bir miktar C++ kodu yazın, bir düğmeye basın ve bunun Arm'a konuşlandırılması için 10 saniye bekleyin cihaz. Bu noktada siz, hevesli bir geliştirici olarak, neden yalnızca bir bilgisayara ihtiyacınız olacak ve ikinci sınıf Arm cihazını iade edebilecek şekilde x86 hedeflemeyi geliştirmemeniz gerektiğini merak edeceksiniz.

Windows for Arm'ın bir başka dezavantajı da OpenGL veya Vulkan Destek. Çapraz derleme araç zinciri kursanız bile uygulamanız Vulkan kullanıyorsa şansınız kalmaz. Bir OpenGL uygulamanız varsa, Microsoft'un önerisi şunu kullanmanızdır: AÇI OpenGL'yi DirectX'e çevirmek için.

Microsoft'un mesajı açık: Yeni Arm Windows platformumuzu desteklemek istiyorsanız, özel API'lerimizi kullanmalısınız. Benzer şekilde PlayStation'da da Xbox, Switch ve iPhone, geliştiricilerin özel grafik API'leri kullanmasını gerektirir ve hiçbiri bir derleyiciyi çalıştıramaz, dolayısıyla başka birinden çapraz derleme yapmanız gerekir cihaz. Geliştiricilerin duyduğu şey de oldukça açık: Windows for Arm, endüstri standardında çalışamayan oyuncak bir işletim sistemidir grafik API'leri veya derleyicileridir ve bu nedenle ciddi bir geliştirme platformu değildir ve bir telefon veya konsol.

Arm Windows cihazında geliştirme yapmak kalitesiz bir deneyim olduğu sürece, geliştiriciler birinci sınıf desteğe sahip olduğu için x86'yı kullanmayı seçeceklerdir; Arm Windows'a asla x86 ile aynı seviyede destek vermeyecekler.

Bu ikinci sınıf durum, tüketicilerin x86'yı taklit etmeleri gerekecekse Arm cihazını istememelerine neden olacaktır. uygulamalar zaten kötü bir deneyim olduğu için geliştiricilerin Arm'ı önemsemediği bir geri bildirim döngüsüne yol açıyor ve az sayıda kullanıcı. Bu da donanım üreticilerinin güçlü Arm Windows cihazları üretmeye yeterince önem vermemesine yol açıyor çünkü çok az kişi ikinci sınıf bir cihaza çok fazla para harcamak isteyecek. Bu döngüyü kırmaya başlamanın tek yolu Visual Studio gibi büyük geliştirici araçlarının Arm'ı desteklemesidir.

Karşılaştırıldığında, macOS ve Linux'taki geliştirici araçları için Arm desteği çok daha iyi. GCC, Clang ve Python bu işletim sistemlerinde Arm için hazırdır ve harika çalışır. Bu geliştirici araçlarının yerel sürümlerini indirebilir ve bunları tek bir cihazda yerel olarak derleyebilirsiniz; bu, tam olarak umduğunuz gibi çalışır.

  • Ayrıca bakınız: Linux Vakfı Açık Kaynak Yazılım Geliştirme, Linux ve Git sertifikasyonunu başlattı

Geliştiriciler Apple hakkında farklı düşünür müydü?

Bir an için Apple'ın Arm macOS'u taşıma olmadan piyasaya sürdüğünü hayal etmenizi istiyorum çıngırak ona ve OpenGL desteği olmadan. Bu durumda, bir geliştiricinin Arm Mac için geliştirme ve çapraz derleme amacıyla kullanmak üzere eski bir x86 Mac alması gerekecektir. Eğer bu gerçekleşirse, Apple'ın macOS'u iOS'a dönüştüreceği korkusuna yol açacak bir kargaşa çıkacaktı. kilitlenir, eğer kendi yazılımınızı derleyemezseniz, kısa sürede yazılımınızı çalıştıramaz hale gelirsiniz. yazılım. Bu, Arm desteğini ikinci sınıf hale getirecek ve insanlar bundan nefret edecekti.

ZDNET Öneriler

En iyi Linux Hazırlık sınıfları

İyi bir teknik iş mi istiyorsunuz? O zaman Linux'u ve açık kaynaklı yazılımları bilmeniz gerekiyor. Öğrenmenin en iyi yollarından biri Linux Foundation kursudur.

Şimdi Oku

Tamamen bir C++ geliştiricisinin bakış açısından, Linux'un Windows'un Arm desteğinden daha iyi RISC-V desteğine sahip olduğunu iddia edebilirsiniz. RISC-V çok yeni ve tüketiciler için hazır olmayan açık kaynaklı bir CPU mimarisidir. RISC-V üzerinde Linux harika bir deneyim değil, ancak çapraz derleme olmadan tek bir cihazda yerel yazılımla yerel geliştirme yapabilmeniz için hala bir derleyici mevcut. Bu, Windows for Arm'a göre bir avantajdır.

Microsoft'un bir Arm cihazına yönelik ilk girişimi, 2012'de piyasaya sürülen ve Windows RT (Arm için Windows 8) çalıştıran orijinal Surface tabletiydi. Microsoft, Arm'ı destekleme konusunda ciddi olsaydı, MSVC ve Visual Studio'yu tekrar Arm'a taşımaları gerekirdi 2012'de, Apple'ın ilk ARM'i piyasaya sürdüğünde Xcode ve Clang için ilk gün desteğine benzer şekilde Mac'ler. Geçmişlerine bakınca Microsoft'un Visual Studio'yu yakın zamanda Arm'a taşıyacağından şüpheliyim. Microsoft'un Visual Studio'yu aynı mimarinin 64 bit sürümüne taşıması 2022 yılına kadar sürdü. Bu, ilk 64 bit x86 CPU'nun 2003 yılında piyasaya sürülmesinden 19 yıl sonra, Athlon 64. Adil olmak gerekirse, ~2005 yılında MSVC'nin kendisini 64-bit x86'ya taşıdılar, dolayısıyla umut var, ancak iyi bir geliştirici deneyimi için tüm Visual Studio yığınını Arm'a taşımaları gerekiyor.

Parallels VM'lerde Windows ve Linux için macOS geliştirme ve Arm geliştirme yapmak üzere Arm MacBook Pro 14" satın aldım. Arm macOS ve Arm Linux'u desteklemeyi hedefliyorum. Ancak mevcut durum göz önüne alındığında, Arm Windows geliştirme konusunda herhangi bir ek çaba harcamayacağım. Microsoft bunun gerçek bir bilgisayar olduğuna karar verir ve Visual Studio, MSVC, OpenGL ve için yerel Arm desteği vardır. Vulkan. Microsoft'un eninde sonunda bu noktaya ulaşacağından eminim, ancak basit gerçek şu ki, donanım hazır olsa bile ARM için Windows geliştirici araçları bugün hazır değil.


Yazar hakkında: Aaron Franke (@aaronfranke7) Teksas merkezli açık kaynaklı bir yazılım geliştiricisidir. Kendisi sık sık katkıda bulunanlardan biridir. Godot 2D/3D oyun motoru projesi, son katkılarından bazıları arasında motoru RISC-V CPU mimarisine taşımak ve genel olarak x86 olmayan mimarilere yönelik desteği iyileştirme üzerinde çalışmak yer alıyor.

Geliştirici

Bildiğimiz programlamanın sonu yine geldi
Geliştiriciler işlerinde kendilerini güvende hissediyorlar ancak hâlâ işi bırakmayı düşünüyorlar
Web'in geleceği farklı türden bir yazılım geliştiricisine ihtiyaç duyacak
Tüketiciler ve geliştiriciler için en iyi Linux dizüstü bilgisayarlar
  • Bildiğimiz programlamanın sonu yine geldi
  • Geliştiriciler işlerinde kendilerini güvende hissediyorlar ancak hâlâ işi bırakmayı düşünüyorlar
  • Web'in geleceği farklı türden bir yazılım geliştiricisine ihtiyaç duyacak
  • Tüketiciler ve geliştiriciler için en iyi Linux dizüstü bilgisayarlar