Crystal programlama dili 1.2'nın piyasaya sürülmesi

Geliştiricileri Ruby dilinde geliştirmenin kolaylığını C dilinin yüksek uygulama performansı özelliğiyle birleştirmeye çalışan Crystal 1.2 programlama dilinin sürümü yayınlandı. Bazı Ruby programları değişiklik yapılmadan çalışsa da, Crystal'in sözdizimi Ruby'ye yakındır ancak tam olarak uyumlu değildir. Derleyici kodu Crystal'de yazılmıştır ve Apache 2.0 lisansı altında dağıtılmaktadır.

Dil, koddaki değişken türlerini ve yöntem bağımsız değişkenlerini açıkça belirtmeye gerek kalmadan uygulanan statik tür denetimini kullanır. Crystal programları, derleme zamanında değerlendirilen makrolar ve oluşturulan kodlarla çalıştırılabilir dosyalar halinde derlenir. Crystal programlarında C dilinde yazılmış bağlamaları bağlamak mümkündür. Kod yürütmenin paralelleştirilmesi, arka plan görevini ana iş parçacığını engellemeden, lif adı verilen hafif iş parçacıkları biçiminde eşzamansız olarak çalıştırmanıza olanak tanıyan "doğma" anahtar sözcüğü kullanılarak gerçekleştirilir.

Standart kitaplık, CSV, YAML ve JSON'u işlemeye yönelik araçlar, HTTP sunucuları oluşturmaya yönelik bileşenler ve WebSocket desteği de dahil olmak üzere çok sayıda ortak işlev sağlar. Geliştirme süreci sırasında, Crystal dilinde kodun etkileşimli olarak yürütülmesi için bir web arayüzü (localhost: varsayılan olarak 8080) oluşturan “crystal play” komutunu kullanmak uygundur.

Ana değişiklikler:

  • Genel bir sınıfın alt sınıfını üst sınıfın bir öğesine atama yeteneği eklendi. sınıf Foo(T); son sınıf Bar(T) < Foo(T); son x = Foo x = Çubuk
  • Makrolar artık for döngüsündeki bir değeri yoksaymak için alt çizgi kullanabilir. {% for _, v, i in {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% end %}
  • Makrolara “file_exists?” yöntemi eklendi. Bir dosyanın varlığını kontrol etmek için.
  • Standart kitaplık artık 128 bitlik tam sayıları desteklemektedir.
  • BitArray ve Deque gibi koleksiyonlar için gelişmiş işlemlerin uygulanmasıyla Indexable::Mutable(T) modülü eklendi. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = true # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • XML'den belirli bir ad alanını çıkarmak için XML::Node#namespace_definition yöntemi eklendi.
  • IO#write_utf8 ve URI.encode yöntemleri kullanımdan kaldırıldı ve bunların IO#write_string ve URI.encode_path ile değiştirilmesi gerekiyor.
  • 32 bit x86 mimarisi desteği ikinci seviyeye taşındı (hazır paketler artık üretilmiyor). ARM64 mimarisi için birinci seviye desteğe geçiş hazırlığı yapılıyor.
  • Windows platformuna tam destek sağlamak için çalışmalar devam ediyor. Windows yuvaları için destek eklendi.
  • MacOS için hem x86 işlemcili cihazlarda hem de Apple M1 çipli ekipmanlarda çalışan evrensel bir paket eklendi.

Kaynak: opennet.ru

Yorum ekle