Crystal programlama dili 1.5'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.5 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:

  • Derleyici, soyut bir yöntemin uygulanmasında ve tanımında argüman adlarının uygunluğuna yönelik bir kontrol ekledi. Ad uyuşmazlığı varsa, artık bir uyarı verilir: abstract class FooAbstract abstract def foo(number : Int32) : Nil end class Foo < FooAbstract def foo(name : Int32) : Nil p name end end 6 | def foo(name : Int32) : Nil ^— Uyarı: konumsal parametre 'name', geçersiz kılınan FooAbstract#foo(number : Int32) yönteminin 'number' parametresine karşılık gelir; bu, farklı bir ada sahiptir ve adlandırılmış argüman geçişini etkileyebilir
  • Bir değişkenin değerine türlenmemiş bir yönteme bir argüman atarken, argüman artık o değişkenin türüyle sınırlandırılır. class Foo @x : Int64 definitialize(x) @x = x # parametre x yazılacak @x end end
  • Yöntemlerin veya makroların parametrelerine açıklamalar eklemenizi sağlar. def foo(@[BelkiKullanılmadı] x); son # tamam
  • Sabitlerin dizinlerde ve adlarda kullanılmasına yönelik destek eklendi. KEY = "s" foo = {s: "String", n: 0} foo[KEY].size değerini koyar.
  • Dosyaları ve dizinleri silmek için Dosya API'sine yeni File#delete? yöntemleri eklendi. ve Dir#delete?, dosya veya dizin eksikse false değerini döndürür.
  • File.tempfile yönteminin koruması güçlendirildi ve artık dosya adını oluşturan satırlarda boş karakterlere izin verilmiyor.
  • Derleyici ve yorumlayıcı çıktısında renk vurgulamayı devre dışı bırakan NO_COLOR ortam değişkeni eklendi.
  • Tercüman modunda çalışma önemli ölçüde iyileştirildi.

Kaynak: opennet.ru

Yorum ekle