Menggabungkan Fortran dan WebAssembly
- Fortran adalah bahasa pemrograman lama yang pertama kali muncul pada tahun 1957, lebih tua daripada bahasa C, CPU Intel 4004, dan komputer mainframe IBM System/360.
- Fortran telah digunakan untuk pekerjaan yang intensif komputasi dalam aplikasi sains dan teknik, dan sebagian orang menganggapnya lebih efisien daripada C untuk operasi numerik.
- Postingan blog ini menjelaskan cara mengompilasi kode Fortran yang sudah ada ke WebAssembly agar dapat dijalankan di browser web.
Apa masalahnya?
- Ada berbagai cara untuk mengompilasi Fortran ke WebAssembly, tetapi tidak ada metode yang mendukung semua fitur secara sempurna.
- Setiap metode memiliki kekurangannya sendiri, dan ini bukan solusi plug-and-play yang sederhana.
Ringkasan kompilator
- Ada beberapa perubahan pada kompilator Fortran berbasis LLVM.
- Utilitas f2c mengubah Fortran 77 menjadi kode C, tetapi tidak kompatibel dengan kode Fortran modern.
- Kompilator LFortran kini mendukung banyak fitur, tetapi masih dapat menimbulkan masalah pada beberapa proyek.
- Dragonegg adalah plugin untuk GCC yang menghasilkan LLVM IR, tetapi memerlukan versi GCC dan LLVM yang lama.
- Classic Flang tidak mendukung output 32-bit, dan LLVM Flang saat ini belum menghasilkan output WebAssembly secara bawaan.
Membangun dan menggunakan WebAssembly dengan LLVM Flang
- Perlu memodifikasi source code LLVM Flang untuk mengimplementasikan target WebAssembly.
- Dengan memanfaatkan desain modular LLVM, frontend Flang dan backend WebAssembly dapat digunakan.
Memanggil subrutin Fortran dari C
- Mengulas cara mengompilasi dan menautkan subrutin Fortran sebagai bagian dari program C.
Kembali ke LLVM Flang
- Kompilator LLVM Flang dapat digunakan untuk mengompilasi subrutin Fortran, tetapi karena target WebAssembly belum diimplementasikan, patch perlu diterapkan pada source code.
Memanggil rutin Fortran dari JavaScript
- Dengan menggunakan Emscripten, objek Fortran dapat ditautkan dan dipanggil langsung dari JavaScript.
Pustaka runtime Fortran: perjalanan menuju "Hello, World!"
- Menjelaskan masalah yang muncul saat mencoba membangun program "Hello, World!" dengan Fortran.
- Pustaka runtime LLVM Fortran harus dikompilasi untuk WebAssembly.
Opini GN⁺
- Artikel ini menunjukkan upaya untuk mengintegrasikan bahasa tradisional seperti Fortran dengan teknologi web modern. Pendekatan seperti ini dapat berguna untuk membawa pustaka komputasi numerik lama yang sudah teruji ke web.
- Proses mengompilasi Fortran ke WebAssembly memperlihatkan dengan jelas tantangan dalam memindahkan codebase lama ke platform baru. Khususnya, masalah yang terkait dengan cross-compiling merupakan faktor penting yang juga perlu dipertimbangkan saat memindahkan ke bahasa atau platform lain.
- Teknologi ini memang menarik, tetapi menjalankan pekerjaan komputasi numerik berperforma tinggi di web masih memiliki keterbatasan praktis. WebAssembly mungkin masih belum dapat memberikan performa setara aplikasi native tradisional.
- Pengembangan LLVM Flang sangat aktif, dan upaya pengembangan ini diharapkan akan memberikan dampak positif bagi komunitas Fortran. Namun, berbagai masalah yang disebutkan dalam artikel ini menunjukkan masih ada tantangan yang perlu diselesaikan.
- Artikel ini memberikan informasi yang berguna bagi para pengembang yang ingin mengintegrasikan Fortran dengan teknologi web, khususnya bagi mereka yang mempertimbangkan pengembangan alat berbasis web di bidang analisis numerik atau komputasi ilmiah.
1 komentar
Opini Hacker News
George meneliti Fortran saat bergabung dengan proyek WebR untuk menjalankan R di browser web
f2c, yang mengubah Fortran menjadi C, tetapi lewat patch pada LLVM Flang kini bisa dibangun dengan kompiler Fortran sungguhanPengalaman pernah mengerjakan kompiler FORTRAN di Xilinx 20 tahun lalu
f2c.hberisi definisi bernamabarfRekomendasi untuk membangun
f18menggunakan source terbaru dari proyek LLVMPujian untuk cara penjelasan lewat pendekatan "contoh paling sederhana yang tidak sepele"
Menyebut kurangnya pengetahuan tentang pengembangan WebAssembly
Pertanyaan apakah ada ekosistem yang siap "produksi" untuk aljabar linear di JavaScript
Pendapat bahwa andai kode Fortran 78 yang ditulis pada 1981/82 masih disimpan, akan menarik untuk melihat apakah sekarang kode itu masih bisa dijalankan
Menyebut aneh karena tidak ada lebih banyak pembahasan tentang LFortran
Memberikan informasi tentang penggunaan Fortran di .NET dan Java
Berbagi pengalaman mengompilasi TensorFlow untuk browser