1 puan yazan GN⁺ 2024-04-07 | 1 yorum | WhatsApp'ta paylaş

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

 
GN⁺ 2024-04-07
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

    • R kaynak kodunda önemli miktarda Fortran kodu bulunuyor
    • Başlangıçta WebR, Fortran'ı C'ye dönüştüren f2c'yi kullanıyordu; ancak LLVM Flang'e yapılan yamalar sayesinde gerçek bir Fortran derleyicisiyle derlenebiliyor
    • George bunu blog yazısında doğrudan söylememiş olsa da, Flang'in kendi yamasını kabul etmesini ya da daha iyi bir yama uygulamasını umuyor
    • Bu tür yamaların ayrı olarak bakımı gerekmeden, değiştirilmemiş Flang'in wasm'e derlenebilir hale gelmesi Fortran kullanan diğer projelere de yardımcı olacaktır
  • 20 yıl önce Xilinx'te FORTRAN derleyicisi üzerinde çalışmış olma deneyimi

    • Akılda kalan şey, f2c.h başlık dosyasında barf adlı bir tanım bulunmasıydı
  • LLVM projesinin en güncel kaynak koduyla f18 derlenmesinin tavsiye edilmesi

    • LLVM projesinin çok hızlı ilerlediği, zaten çözülmüş sorunları debug etmenin veya zaten uygulanmış özellikleri kaçırmanın zaman kaybı olduğu belirtiliyor
  • "En basit ama önemsiz olmayan örnek" yaklaşımıyla yapılan anlatımın övülmesi

    • "JavaScript'ten BLAS fonksiyonu çağırma" gibi somut bir problem üzerinden çok şey öğrenilebildiği söyleniyor
  • WebAssembly geliştirme konusundaki bilgi eksikliğinden bahsedilmesi

    • WebAssembly'nin bugün son kullanıcılara sunabileceği somut bir şey olup olmadığı ya da her şeyin gerçekten taşınabilir programların geleceği için temel atmakla mı ilgili olduğu merak ediliyor
    • WebAssembly'nin ağ ve dosya erişimini kısıtlamaya yardımcı olduğuna dair şeyler duyulduğu, ancak bunun teorik mi yoksa gerçekten uygulanmış mı olduğundan emin olunmadığı belirtiliyor
  • JavaScript'te lineer cebir için "production" düzeyinde hazır bir ekosistem olup olmadığına dair soru

    • Arama yapınca sık sık eski kütüphanelerin JavaScript'e taşınmış hâllerinin bulunduğu, ancak gözden kaçan bir şey olup olmadığının merak edildiği söyleniyor
  • 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

    • O dönemde kullanmak zorunda kaldığı Jovial programlama dili kaynak kodu biçimlendiricisine değiniliyor
  • LFortran'dan daha fazla söz edilmemesinin garip bulunduğu belirtiliyor

    • LFortran'ın internette harika ve şaşırtıcı WASM örnekleri sunduğu söyleniyor
  • .NET ve Java'da Fortran kullanımına dair bilgi verilmesi

    • İlgili bağlantılar üzerinden Fortran'ın .NET ve Java'da kullanılabildiği ifade ediliyor
  • TensorFlow'u tarayıcı için derleme deneyiminin paylaşılması

    • TensorFlow Eigen kullandığı için, Fortran ile yazılmış popüler matematik kütüphanelerini (BLAS, Lapack) kullanmamasının çok daha fazla işten kurtardığı için memnuniyet dile getiriliyor