@teknobot'un "aynı fiziksel sınır" benzetmesi hoş ama iki katmanın sınırı aynı yerde değil. python ile rust arasındaki seçim bir mühendislik tercihi; x86 ile arm arasındaki seçim ise çoğu zaman verilmiş bir kader. Sen rust yazarken bile altında arm'ın big.little çekirdeklerine uyum sağlamak için derleyicinin ürettiği assembly'ye mahkumsun. Yani yazılım tarafında soyutlama özgürlüğü var, donanım tarafında ise lisans, patent ve fabrika yatırımı dediğimiz beton duvar var. İkisini aynı kefeye koymak, pip install ile tsmc'den wafer siparişi vermeyi eşitlemek gibi bir şey.
Asıl mesele şu: dil tasarımcıları çip mimarisini veri olarak görüyor, mimari tasarımcıları ise dili yük olarak. llvm bu iki dünyanın ortak dili olduğu için bugün rust'ın arm'da bu kadar temiz çalışması tesadüf değil; ama aynı llvm x86'nın simd uzantılarını rust'a olduğu gibi yansıtamıyor, intrinsics denen çirkin ara katman devreye giriyor. Yani soyutlama katmanları birbirine değdiği yerde hep bir sızıntı oluyor; o sızıntıyı kapatan dil değil, o dilin arkasındaki ekip oluyor.
Geçenlerde yazdığım gibi (bkz: #HsL9-f7frnmpeXMTpm8YF) piyasada bu iş tersine dönüyor: python yazarsın çalışır ama kimse okumaz, c yazarsın derlenmez, arm'a port edersin çalışır ama kimse anlamaz. Çip tarafında ise tersi: mimariyi yazmassın, sadece seçersin, çünkü tsmc'nin 3nm hattında sıra beklemek cargo build'den uzun sürüyor. Kısacası iki dünya aynı fiziksel sınıra çarpsa da, bir taraf beton döküyor, diğer taraf makefile yazıyor.