Rilis Basa Pemrograman Crystal 1.5

Rilis basa pamrograman Crystal 1.5 wis diterbitake, para pangembang nyoba nggabungake kenyamanan pembangunan ing basa Ruby kanthi karakteristik kinerja aplikasi sing dhuwur saka basa C. Sintaksis Crystal cedhak, nanging ora kompatibel karo, Ruby, sanajan sawetara program Ruby mbukak tanpa modifikasi. Kode kompiler ditulis ing Crystal lan disebarake miturut lisensi Apache 2.0.

Basa kasebut nggunakake pamriksa jinis statis, dileksanakake tanpa kudu nemtokake kanthi jelas jinis variabel lan argumen metode ing kode kasebut. Program kristal dikompilasi dadi file sing bisa dieksekusi, kanthi makro dievaluasi lan kode digawe nalika kompilasi. Ing program Crystal, sampeyan bisa nyambungake bindings sing ditulis ing C. Parallelization saka eksekusi kode ditindakake kanthi nggunakake tembung kunci "spawn", sing ngidini sampeyan nglakokake tugas latar mburi kanthi ora sinkron, tanpa ngalangi utas utama, ing wangun benang entheng sing diarani serat.

Pustaka standar nyedhiyakake akeh fungsi umum, kalebu alat kanggo ngolah CSV, YAML, lan JSON, komponen kanggo nggawe server HTTP, lan dhukungan WebSocket. Sajrone proses pangembangan, trep nggunakake printah "play kristal", sing ngasilake antarmuka web (localhost: 8080 minangka standar) kanggo eksekusi kode interaktif ing basa Crystal.

Owah-owahan utama:

  • Compiler wis nambah mriksa kanggo korespondensi jeneng argumen ing implementasine saka cara abstrak lan ing definisi. Yen ana jeneng sing ora cocog, saiki ana peringatan: kelas abstrak FooAbstract abstrak def foo(nomer : Int32): Nil kelas pungkasan Foo < FooAbstract def foo(jeneng: Int32): Nil p jeneng mburi mburi 6 | def foo(jeneng: Int32): Nil ^β€” PΓ¨nget: 'jeneng' parameter posisi cocog karo parameter 'nomer' saka metode sing diganti FooAbstract#foo(nomer: Int32), sing duwe jeneng sing beda lan bisa mengaruhi passing argumen sing dijenengi.
  • Nalika nemtokake argumen menyang metode sing ora diketik kanggo nilai variabel, argumen kasebut saiki diwatesi kanggo jinis variabel kasebut. kelas Foo @x : Int64 def initialize(x) @x = x # parameter x bakal diketik @x end end
  • Ngidini sampeyan nambah anotasi menyang paramΓ¨ter cara utawa makro. def foo(@[MaybeUnused] x); pungkasan # OK
  • Dhukungan ditambahake kanggo nggunakake konstanta minangka indeks lan jeneng ing tuple. KEY = "s" foo = {s: "String", n: 0} sijine foo[KEY].size
  • Metode File#delete? anyar wis ditambahake menyang File API kanggo mbusak file lan direktori. lan Dir#delete?, kang bali palsu yen file utawa direktori ilang.
  • Proteksi metode File.tempfile wis dikuatake, sing saiki ora ngidini karakter null ing baris sing mbentuk jeneng berkas.
  • Nambahake variabel lingkungan NO_COLOR, sing mateni panyorot warna ing kompiler lan output interpreter.
  • Pakaryan ing mode juru basa wis saya apik.

Source: opennet.ru

Add a comment