Keluaran bahasa pengaturcaraan Crystal 1.5

Pengeluaran bahasa pengaturcaraan Crystal 1.5 telah diterbitkan, pembangunnya cuba menggabungkan kemudahan pembangunan dalam bahasa Ruby dengan ciri prestasi aplikasi tinggi bahasa C. Sintaks Crystal hampir, tetapi tidak serasi sepenuhnya dengan, Ruby, walaupun beberapa program Ruby berjalan tanpa pengubahsuaian. Kod pengkompil ditulis dalam Crystal dan diedarkan di bawah lesen Apache 2.0.

Bahasa ini menggunakan semakan jenis statik, dilaksanakan tanpa perlu menyatakan secara eksplisit jenis pembolehubah dan hujah kaedah dalam kod. Program kristal disusun ke dalam fail boleh laku, dengan makro dinilai dan kod dijana pada masa penyusunan. Dalam program Crystal, adalah mungkin untuk menyambungkan pengikatan yang ditulis dalam C. Penyelarasan pelaksanaan kod dijalankan menggunakan kata kunci "spawn", yang membolehkan anda menjalankan tugas latar belakang secara tidak segerak, tanpa menyekat benang utama, dalam bentuk benang ringan yang dipanggil gentian.

Pustaka standard menyediakan satu set besar fungsi biasa, termasuk alatan untuk memproses CSV, YAML dan JSON, komponen untuk mencipta pelayan HTTP dan sokongan WebSocket. Semasa proses pembangunan, adalah mudah untuk menggunakan arahan "main kristal", yang menjana antara muka web (localhost:8080 secara lalai) untuk pelaksanaan kod interaktif dalam bahasa Kristal.

Perubahan utama:

  • Pengkompil telah menambah semakan untuk korespondensi nama argumen dalam pelaksanaan kaedah abstrak dan dalam definisinya. Jika terdapat ketidakpadanan nama, amaran kini dikeluarkan: kelas abstrak FooAbstract abstract def foo(nombor : Int32) : Kelas akhir tiada Foo < FooAbstract def foo(nama : Int32) : Tiada p nama hujung hujung 6 | def foo(nama : Int32): Tiada ^β€” Amaran: parameter kedudukan 'nama' sepadan dengan parameter 'nombor' kaedah yang diganti FooAbstract#foo(nombor : Int32), yang mempunyai nama yang berbeza dan boleh menjejaskan hantaran hujah bernama
  • Apabila memberikan hujah kepada kaedah yang tidak ditaip kepada nilai pembolehubah, hujah itu kini terhad kepada jenis pembolehubah itu. class Foo @x : Int64 def initialize(x) @x = x # parameter x akan ditaip @x end end
  • Membolehkan anda menambah anotasi pada parameter kaedah atau makro. def foo(@[MaybeUnused] x); tamat # OK
  • Menambah sokongan untuk menggunakan pemalar sebagai indeks dan nama dalam tupel. KEY = "s" foo = {s: "String", n: 0} meletakkan foo[KEY].size
  • Kaedah Fail#padam? baharu telah ditambahkan pada API Fail untuk memadam fail dan direktori. dan Dir#delete?, yang mengembalikan palsu jika fail atau direktori tiada.
  • Perlindungan kaedah File.tempfile telah diperkukuh, yang kini tidak membenarkan aksara nol dalam baris yang membentuk nama fail.
  • Pembolehubah persekitaran NO_COLOR ditambah, yang melumpuhkan penonjolan warna dalam output pengkompil dan penterjemah.
  • Kerja dalam mod penterjemah telah dipertingkatkan dengan ketara.

Sumber: opennet.ru

Tambah komen