Ngaleupaskeun basa pamrograman Crystal 1.5

Pelepasan basa pamrograman Crystal 1.5 parantos diterbitkeun, pamekar anu nyobian ngagabungkeun genah pangwangunan dina basa Ruby sareng ciri kinerja aplikasi anu luhur tina basa C. Sintaksis Crystal caket sareng, tapi henteu sapinuhna cocog sareng, Ruby, sanaos sababaraha program Ruby dijalankeun tanpa modifikasi. Kodeu kompiler ditulis dina Kristal sareng disebarkeun dina lisénsi Apache 2.0.

Basa ngagunakeun pamariksaan tipe statik, dilaksanakeun tanpa kedah sacara eksplisit nangtukeun jinis variabel sareng metode argumen dina kode. Program kristal disusun kana file anu tiasa dieksekusi, kalayan makro dievaluasi sareng kode dibangkitkeun dina waktos kompilasi. Dina program Kristal, mungkin pikeun nyambungkeun bindings ditulis dina C. Parallelization of code execution dilumangsungkeun maké kecap konci "spawn", nu ngidinan Anjeun pikeun ngajalankeun tugas tukang dina modeu Asynchronous tanpa blocking thread utama, dina bentuk threads lightweight disebut serat.

Perpustakaan standar nyayogikeun sakumpulan fungsi umum, kalebet alat pikeun ngolah CSV, YAML, sareng JSON, komponén pikeun nyiptakeun server HTTP, sareng dukungan WebSocket. Salila prosés pangwangunan, éta merenah ngagunakeun paréntah "maén kristal", nu dibangkitkeun panganteur web (localhost: 8080 sacara standar) pikeun palaksanaan interaktif kode dina basa Kristal.

Parobahan utama:

  • Kompiler parantos nambihan cek pikeun korespondensi nami argumen dina palaksanaan metode abstrak sareng dina definisina. Lamun aya ngaran mismatch, warning ayeuna dikaluarkeun: kelas abstrak FooAbstract abstrak def foo(nomer: Int32): Nil tungtung kelas Foo < FooAbstract def foo (ngaran: Int32): Nil p ngaran tungtung tungtung 6 | def foo(ngaran: Int32): Nil ^— Perhatosan: parameter posisi 'ngaran' pakait jeung parameter 'angka' tina metoda overridden FooAbstract#foo(nomer: Int32), nu boga ngaran béda jeung bisa mangaruhan ngaranna argumen ngalirkeun
  • Nalika assigning argumen ka metoda untyped kana nilai variabel, argumen ayeuna konstrain kana tipe variabel éta. class Foo @x: Int64 def initialize(x) @x = x # parameter x bakal diketik @x tungtung tungtung
  • Ngidinan anjeun pikeun nambihan anotasi kana parameter metode atanapi makro. def foo (@[MaybeUnused] x); tungtung # OK
  • Ditambahkeun dukungan pikeun ngagunakeun konstanta salaku indéks sareng nami dina tuple. KEY = "s" foo = {s: "String", n: 0} nempatkeun foo [KEY].size
  • Métode File#delete? anyar geus ditambahkeun kana File API pikeun mupus payil jeung directories. jeung Dir#delete?, nu balik palsu lamun file atawa diréktori leungit.
  • Perlindungan metode File.tempfile parantos dikuatkeun, anu ayeuna henteu ngijinkeun karakter nol dina garis anu ngabentuk nami file.
  • Ditambahkeun variabel lingkungan NO_COLOR, anu nganonaktipkeun panyorot warna dina kompiler sareng kaluaran juru.
  • Gawé dina mode juru basa parantos ningkat sacara signifikan.

sumber: opennet.ru

Tambahkeun komentar