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

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.2 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:

  • Əsas sinfin elementinə ümumi sinifin alt sinfini təyin etmək imkanı əlavə edildi. sinif Foo(T); son sinif Bar(T) < Foo(T); son x = Foo x = Bar
  • Makrolar indi for döngəsindəki dəyəri nəzərə almamaq üçün alt xəttdən istifadə edə bilər. {% for _, v, i in {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% end %}
  • Makrolara “fayl_mövcuddur?” metodu əlavə edildi. faylın mövcudluğunu yoxlamaq üçün.
  • Standart kitabxana indi 128 bitlik tam ədədləri dəstəkləyir.
  • BitArray və Deque kimi kolleksiyalar üçün qabaqcıl əməliyyatların həyata keçirilməsi ilə Indexable::Mutable(T) modulu əlavə edildi. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = doğru # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • XML-dən xüsusi ad məkanını çıxarmaq üçün XML::Node#namespace_definition metodu əlavə edildi.
  • IO#write_utf8 və URI.encode metodları köhnəlmişdir və IO#write_string və URI.encode_path ilə əvəz edilməlidir.
  • 32-bit x86 arxitekturasına dəstək ikinci səviyyəyə köçürüldü (hazır paketlər artıq yaradılmır). ARM64 arxitekturası üçün dəstəyin birinci səviyyəsinə transfer hazırlanır.
  • Windows platforması üçün tam dəstəyin təmin edilməsi istiqamətində işlər davam edir. Windows yuvaları üçün əlavə dəstək.
  • MacOS üçün həm x86 prosessorlu cihazlarda, həm də Apple M1 çipli avadanlıqlarda işləyən universal paket əlavə edilib.

Mənbə: opennet.ru

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