Rilis bahasa pemrograman Crystal 1.2

Rilis bahasa pemrograman Crystal 1.2 telah diterbitkan, pengembangnya mencoba menggabungkan kemudahan pengembangan dalam bahasa Ruby dengan kinerja aplikasi tinggi yang melekat dalam bahasa C. Sintaks Crystal mirip, tetapi tidak sepenuhnya kompatibel dengan Ruby, meskipun beberapa program Ruby berjalan tanpa pengerjaan ulang. Kode kompiler ditulis dalam Crystal dan didistribusikan di bawah lisensi Apache 2.0.

Bahasa ini menggunakan pemeriksaan tipe statis, diimplementasikan tanpa perlu secara eksplisit menentukan tipe variabel dan argumen metode dalam kode. Program kristal dikompilasi menjadi file yang dapat dieksekusi, dengan evaluasi makro dan pembuatan kode pada waktu kompilasi. Dalam program Crystal, diperbolehkan untuk menghubungkan binding yang ditulis dalam bahasa C. Paralelisasi eksekusi kode dilakukan menggunakan kata kunci β€œspawn”, yang memungkinkan Anda menjalankan tugas latar belakang dalam mode asinkron, tanpa memblokir thread utama, dalam bentuk thread ringan yang disebut serat (Fiber).

Pustaka standar menyediakan sejumlah besar fungsi umum, termasuk alat untuk menangani CSV, YAML, dan JSON, komponen untuk membangun server HTTP, dan dukungan WebSocket. Selama proses pengembangan, akan lebih mudah untuk menggunakan perintah β€œcrystal play”, yang menghasilkan antarmuka web (localhost:8080 secara default) untuk eksekusi kode interaktif dalam bahasa Crystal.

Perubahan besar:

  • Menambahkan kemampuan untuk menetapkan subkelas dari kelas generik ke elemen kelas induk. kelas Foo(T); kelas akhir Bar(T) < Foo(T); ujung x = Foo x = Batang
  • Makro sekarang dapat menggunakan garis bawah untuk mengabaikan nilai dalam perulangan for. {% untuk _, v, i di {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% end %}
  • Menambahkan metode β€œfile_exists?” ke makro. untuk memeriksa keberadaan file.
  • Perpustakaan standar sekarang mendukung bilangan bulat 128-bit.
  • Menambahkan modul Indexable::Mutable(T) dengan implementasi operasi lanjutan untuk koleksi seperti BitArray dan Deque. ba = BitArray.baru(10) # ba = BitArray[0000000000] ba[0] = benar # ba = BitArray[1000000000] ba.putar!(-1) # ba = BitArray[0100000000]
  • Menambahkan metode XML::Node#namespace_definition untuk mengekstrak namespace tertentu dari XML.
  • Metode IO#write_utf8 dan URI.encode sudah tidak digunakan lagi dan harus diganti dengan IO#write_string dan URI.encode_path.
  • Dukungan untuk arsitektur 32-bit x86 telah dipindahkan ke tingkat kedua (paket siap pakai tidak lagi dibuat). Transfer ke dukungan tingkat pertama untuk arsitektur ARM64 sedang dipersiapkan.
  • Pekerjaan terus dilakukan untuk memastikan dukungan penuh untuk platform Windows. Menambahkan dukungan untuk soket Windows.
  • Paket universal telah ditambahkan untuk macOS, berfungsi pada perangkat dengan prosesor x86 dan pada peralatan dengan chip Apple M1.

Sumber: opennet.ru

Tambah komentar