Crystal proqramlaşdırma dilinin buraxılışı 1.5

Tərtibatçıları Ruby dilində işlənmənin rahatlığını C dili üçün xarakterik olan yüksək tətbiq performansı ilə birləşdirməyə çalışan Crystal 1.5 proqramlaşdırma dilinin buraxılışı nəşr olundu. Crystal-ın sintaksisi Ruby-ə yaxındır, lakin ona tam uyğun gəlmir, baxmayaraq ki, bəzi Ruby proqramları dəyişdirilmədən işləyir. Kompilyator kodu Crystal-da yazılır və Apache 2.0 lisenziyası altında paylanır.

Dil, kodda dəyişənlərin növlərini və metod arqumentlərini açıq şəkildə göstərməyə ehtiyac olmadan həyata keçirilən statik tip yoxlamasından istifadə edir. Kristal proqramlar icra edilə bilən fayllara yığılır, makrolar qiymətləndirilir və tərtib zamanı kod yaradılır. Crystal proqramlarında C dilində yazılmış bağlamaları birləşdirmək mümkündür. Kodun icrasının paralelləşdirilməsi “kürü” açar sözündən istifadə etməklə həyata keçirilir ki, bu da fon tapşırığını asinxron olaraq, əsas ipi bloklamadan, liflər adlanan yüngül iplər şəklində yerinə yetirməyə imkan verir.

Standart kitabxana CSV, YAML və JSON-un emalı üçün alətlər, HTTP serverlərinin yaradılması üçün komponentlər və WebSocket dəstəyi daxil olmaqla geniş ümumi funksiyalar dəstini təmin edir. İnkişaf prosesində Kristal dilində kodun interaktiv icrası üçün veb-interfeys (defolt olaraq localhost:8080) yaradan “kristal oyun” əmrindən istifadə etmək rahatdır.

Əsas dəyişikliklər:

  • Kompilyator mücərrəd metodun həyata keçirilməsində və onun tərifində arqument adlarının uyğunluğu üçün yoxlama əlavə etmişdir. Əgər ad uyğunsuzluğu varsa, indi xəbərdarlıq verilir: mücərrəd sinif FooAbstract abstrakt def foo(nömrə : Int32) : Nil son sinif Foo < FooAbstract def foo(ad : Int32) : Nil p adın sonu 6 | def foo(name : Int32) : Nil ^— Xəbərdarlıq: ‘ad’ mövqe parametri ləğv edilmiş FooAbstract#foo(nömrə: Int32) metodunun ‘nömrə’ parametrinə uyğundur, onun fərqli ada malikdir və adlı arqumentin ötürülməsinə təsir göstərə bilər.
  • Dəyişməmiş metoda arqumenti dəyişənin dəyərinə təyin edərkən, arqument indi həmin dəyişənin növü ilə məhdudlaşdırılır. class Foo @x : Int64 def initialize(x) @x = x # parametr x yazılacaq @x end end
  • Metodların və ya makroların parametrlərinə annotasiyalar əlavə etməyə imkan verir. def foo(@[BəlkəUnused] x); son # OK
  • Sabitlərin indekslər və dəstlərdə adlar kimi istifadəsi üçün dəstək əlavə edildi. KEY = "s" foo = {s: "String", n: 0} foo[KEY].size qoyur
  • Faylların və qovluqların silinməsi üçün Fayl API-yə yeni File#delete? metodları əlavə edilib. və Dir#delete?, hansı fayl və ya qovluq yoxdursa, false qaytarır.
  • File.tempfile metodunun mühafizəsi gücləndirilib ki, bu da indi fayl adını təşkil edən sətirlərdə null simvollara icazə vermir.
  • Kompilyator və tərcüməçi çıxışında rəng vurğulamasını söndürən NO_COLOR mühit dəyişəni əlavə edildi.
  • Tərcüməçi rejimində iş əhəmiyyətli dərəcədə təkmilləşdirilmişdir.

Mənbə: opennet.ru

Добавить комментарий