Elixir v1.17 dirilis: tipe teori himpunan, durasi kalender, dukungan Erlang/OTP 27
Peringatan tipe teori himpunan bertahap
- Elixir v1.17 memperkenalkan tipe teori himpunan yang menyimpulkan tipe dari pattern dan menggunakannya untuk melakukan type check pada program.
- Sistem tipe ini memungkinkan pencarian kesalahan dan bug di codebase tanpa perlu mengubah perangkat lunak yang sudah ada.
- Saat ini, pengembang hanya dapat berinteraksi dengan sistem tipe ini melalui peringatan.
- Peringatan utama:
- Pattern matching terhadap key yang tidak ada
- Akses ke key yang tidak ada
- Pemanggilan fungsi pada sesuatu yang bukan modul
- Saat memanggil fungsi anonim, memanggil sesuatu yang bukan fungsi
- Perbandingan antar struct
- Perbandingan antar tipe yang tidak saling tumpang tindih
- Binary pattern matching yang salah
- Upaya menangkap struct exception yang tidak terdefinisi
- Akses ke field yang tidak terdefinisi pada exception yang ditangkap
Dukungan Erlang/OTP
- Elixir v1.17 mendukung Erlang/OTP 27 dan menghentikan dukungan untuk Erlang/OTP 24.
- Pengembang Elixir disarankan untuk bermigrasi ke Erlang/OTP 26 atau yang lebih baru.
- Fitur utama Erlang/OTP 27:
- Penambahan modul json
- Penambahan label proses (
proc_lib:set_label/1)
Tipe data Duration baru dan fungsi penggeseran tanggal
Perubahan penting lainnya
- Penambahan fungsi baru
Keyword.intersect/2,3.
- Penambahan profiler Mix baru
mix profile.tprof.
- Penambahan guard
Kernel.is_non_struct_map/1.
- Logger Elixir memformat laporan
gen_statem dan menyertakan label proses Erlang/OTP 27.
Opini GN⁺
- Tipe teori himpunan: Sistem tipe ini bisa sangat membantu meningkatkan stabilitas dan keandalan kode. Terutama berguna pada proyek berskala besar.
- Dukungan Erlang/OTP 27: Dengan mendukung versi terbaru Erlang/OTP, banyak keuntungan dari sisi performa dan fitur dapat diperoleh.
- Tipe data Duration: Fitur penggeseran tanggal yang mempertimbangkan zona waktu dan kalender sangat berguna untuk aplikasi seperti manajemen jadwal.
- Keterbatasan sistem tipe: Saat ini analisis tipe belum dapat dilakukan melampaui batas fungsi, sehingga bagian ini perlu ditingkatkan pada pembaruan mendatang.
- Produk pesaing: Jika dibandingkan dengan bahasa lain yang menyediakan sistem tipe statis seperti TypeScript, pendekatan Elixir menawarkan stabilitas tipe sambil tetap mempertahankan fleksibilitas bahasa dinamis.
1 komentar
Komentar Hacker News
Tim Elixir dan Erlang telah menunjukkan hasil yang luar biasa dalam beberapa tahun terakhir. Kontribusi para penulis library dan buku juga sangat besar. Menarik mengikuti commit di Elixir dan OTP. Terima kasih kepada semua yang terlibat.
Saya punya pengalaman yang produktif dan menyenangkan dalam proyek sampingan yang menggunakan Elixir sebagai backend. Saya sangat menghargai produktivitas LiveView, tetapi ini kurang cocok jika koneksi jaringan tidak stabil. Elixir tetap sangat menyenangkan digunakan bahkan terpisah dari LiveView.
Saya sedang mengembangkan startup secara full-stack dengan Elixir, dan ini adalah teknologi terbaik yang pernah saya gunakan sejauh ini. Saya juga sedang menyebarkan kelebihan Elixir kepada teman-teman. Semoga RabbitMQ dan kliennya bisa berjalan di OTP 27.
Terima kasih atas kerja luar biasa para pengembang Elixir dan Erlang. Saya berharap alasan "tidak punya tipe" hilang demi adopsi Elixir yang lebih luas. Semoga terus menghasilkan hal-hal hebat.
Saya sudah membaca tentang Elixir selama 10 tahun dan menyukai bahasa ini. Namun, saya menyerah mencari pekerjaan terkait Elixir karena gajinya lebih rendah dibanding bahasa yang lebih arus utama. Gaji dan produk yang keren lebih penting daripada tech stack. Meski begitu, tetap menyenangkan mengikuti Elixir dari kejauhan.
Fitur keren dalam rilis ini adalah penambahan
get_in/1. Misalnya, dalamget_in(struct.foo.bar), jikafoomengembalikannil, tidak akan terjadi error saat mengaksesbar.Rilis ini adalah potongan terakhir yang saya inginkan. Saya menantikan langkah-langkah berikutnya. Saya rasa bahasa ini sekarang sudah 100% lengkap secara fitur.
Saya sangat menantikan sistem tipe ini. Saya ingat José pernah menjelaskannya sebagai "sistem tipe gradual". Ini tampaknya akan ditambahkan secara bertahap. Saya penasaran apakah akan ada fitur baru terkait sistem tipe pada tahap berikutnya. Saya terutama menantikan optimasi compiler yang baru.
Saya sangat bersemangat dengan rilis ini. Saya berharap ada sumber daya yang dialokasikan untuk plugin Elixir di IntelliJ. Saya tidak menikmati menggunakan VSCode.
Saya penasaran apakah ada yang tahu apa arti "tipe set-teoretis". Saya sangat tertarik pada bahasa pemrograman, tetapi ini pertama kalinya saya mendengar istilah itu.