Fortran ve WebAssembly'nin birleşimi
- Fortran, ilk kez 1957'de ortaya çıkan eski bir programlama dilidir; C dili, Intel 4004 CPU ve IBM System/360 ana bilgisayarlarından daha eskidir.
- Fortran, bilimsel ve mühendislik uygulamalarında hesaplama yoğun işler için kullanılagelmiştir ve bazıları tarafından sayısal işlemlerde C'den daha verimli kabul edilir.
- Bu blog yazısı, mevcut Fortran kodunu WebAssembly'ye derleyip web tarayıcısında çalıştırmanın yollarını açıklar.
Sorun ne?
- Fortran'ı WebAssembly'ye derlemenin çeşitli yolları vardır, ancak bunların hiçbiri tüm özellikleri eksiksiz desteklemez.
- Her yöntemin kendi dezavantajları vardır; yani basit bir tak ve çalıştır çözümü değildir.
Derleyici özeti
- LLVM tabanlı Fortran derleyicilerinde bazı değişiklikler yaşandı.
f2c yardımcı programı Fortran 77'yi C koduna dönüştürür, ancak modern Fortran koduyla uyumlu değildir.
LFortran derleyicisi artık birçok özelliği destekliyor, ancak yine de bazı projelerde sorun çıkarabilir.
Dragonegg, LLVM IR üreten bir GCC eklentisidir, ancak eski GCC ve LLVM sürümleri gerektirir.
- Classic Flang 32 bit çıktı desteklemez ve LLVM Flang şu anda varsayılan olarak WebAssembly çıktısı üretmez.
LLVM Flang ile WebAssembly derlemek ve kullanmak
- WebAssembly hedefini gerçekleştirmek için LLVM Flang kaynak kodunu değiştirmek gerekir.
- LLVM'nin modüler tasarımından yararlanarak Flang frontend'i ve WebAssembly backend'i kullanılabilir.
Fortran alt yordamını C'den çağırmak
- Bir Fortran alt yordamının C programının parçası olarak nasıl derlenip bağlanacağını yeniden gözden geçirir.
LLVM Flang'e geri dönmek
- LLVM Flang derleyicisiyle Fortran alt yordamları derlenebilir, ancak WebAssembly hedefi henüz uygulanmadığı için kaynak koda yama uygulanmalıdır.
Fortran rutinlerini JavaScript'ten çağırmak
- Emscripten kullanılarak Fortran nesneleri bağlanabilir ve JavaScript'ten doğrudan çağrılabilir.
Fortran çalışma zamanı kütüphanesi: "Hello, World!"a giden yolculuk
- Fortran ile bir "Hello, World!" programı derlemeye çalışırken ortaya çıkan sorunları açıklar.
- LLVM Fortran çalışma zamanı kütüphanesi WebAssembly için derlenmelidir.
GN⁺'un görüşü
- Bu yazı, Fortran gibi geleneksel dilleri modern web teknolojileriyle entegre etme girişimini gösteriyor. Bu yaklaşım, mevcut ve doğrulanmış sayısal hesaplama kütüphanelerini web'e taşımakta faydalı olabilir.
- Fortran'ı WebAssembly'ye derleme süreci, mevcut kod tabanlarını yeni platformlara taşımanın zorluklarını iyi gösteriyor. Özellikle çapraz derlemeyle ilgili sorunlar, başka dillere veya platformlara taşımada da dikkate alınması gereken önemli unsurlardır.
- Bu teknoloji ilgi çekici olsa da, web üzerinde yüksek performans gerektiren sayısal hesaplama işlerini gerçekten yürütmenin hâlâ pratik sınırları vardır. WebAssembly, geleneksel yerel uygulamalar kadar performans sunmayabilir.
- LLVM Flang'in geliştirilmesi oldukça aktiftir ve bu geliştirme çabalarının Fortran topluluğu üzerinde olumlu etkileri olması beklenmektedir. Ancak bu yazıda değinilen çeşitli sorunlar, hâlâ çözülmesi gereken görevler olduğunu gösteriyor.
- Bu yazı, Fortran'ı web teknolojileriyle entegre etmek isteyen geliştiriciler için yararlı bilgiler sunuyor; özellikle sayısal analiz veya bilimsel hesaplama alanında web tabanlı araçlar geliştirmeyi düşünenler için faydalı olabilir.
1 yorum
Hacker News görüşleri
George'un, R'yi web tarayıcısında çalıştırmak için WebR projesine katılırken Fortran üzerine araştırdığı şeyler
20 yıl önce Xilinx'te FORTRAN derleyicisi üzerinde çalışmış olma deneyimi
barfadlı bir tanım bulunmasıydıLLVM projesinin en güncel kaynak koduyla f18 derlenmesinin tavsiye edilmesi
"En basit ama önemsiz olmayan örnek" yaklaşımıyla yapılan anlatımın övülmesi
WebAssembly geliştirme konusundaki bilgi eksikliğinden bahsedilmesi
JavaScript'te lineer cebir için "production" düzeyinde hazır bir ekosistem olup olmadığına dair soru
1981/82'de yazılmış Fortran 78 kodları saklanmış olsaydı, bugün bunu çalıştırıp çalıştıramayacağını görmek isteyeceğine dair yorum
LFortran'dan daha fazla söz edilmemesinin garip bulunduğu belirtiliyor
.NET ve Java'da Fortran kullanımına dair bilgi verilmesi
TensorFlow'u tarayıcı için derleme deneyiminin paylaşılması