Haxe 4.1 programlama dilinin piyasaya sürülmesi

Mevcut araç seti sürümü 4.1Güçlü yazım, çapraz derleyici ve standart bir işlev kitaplığı ile aynı adı taşıyan çok paradigmalı üst düzey programlama dilini içerir. Proje, her hedef platformun yerel özelliklerine erişimle birlikte C++, HashLink/C, JavaScript, C#, Java, PHP, Python ve Lua'ya çevirinin yanı sıra JVM, HashLink/JIT, Flash ve Neko bayt koduna derlemeyi destekler. Derleyici kodu tarafından dağıtıldı GPLv2 lisansı ve Haxe için geliştirilen standart kütüphane ve sanal makineler kapsamında HashLink и bazı MIT lisansı altında.

Dil ifade odaklı güçlü yazımla. Nesneye yönelik, genel ve işlevsel programlama teknikleri desteklenmektedir. Haxe sözdizimi ECMAScript'e yakındır ve genişler statik yazma, otomatik tür çıkarımı, desen eşleştirme, jenerikler, yineleyici tabanlı for döngüleri, AST makroları, GADT (Genelleştirilmiş Cebirsel Veri Türleri), soyut türler, anonim yapılar, basitleştirilmiş dizi tanımları, koşullu derleme ifadeleri, alanlara meta veriler ekleme gibi özellikleri , sınıflar ve ifadeler, dize enterpolasyonu (“'Benim adım $isim'”), tür parametreleri ('yeni Ana ("foo")') ve daha fazla.

sınıf Testi {
statik işlev ana() {
son kişiler = [
"Elizabeth" => "Programlama",
"Joel" => "Tasarım"
];

for (isim => insanlardaki iş) {
trace('$isim geçimini sağlamak için $iş yapıyor!');
}
}
}

Sürüm 4.1'deki yeni özellikler:

  • Kuyruk özyineleme optimizasyonu eklendi.
  • İstisna yönetimi için yeni bir birleştirilmiş API eklendi.
  • "try {} catch(e) {}" yapısına "try {} catch(e: haxe.Exception) {}" için kısa yol olarak izin verilir.
  • Değerlendirme yorumlayıcısına SSL desteği eklendi.
  • Hedef JVM artık deneysel olarak kabul edilmiyor.
  • Dil Sunucusu Protokolü için “Uygulamaya Git” ve “Referans Bul” işlevleri desteği eklendi.
  • Oluşturulan koddaki geçici yerel değişkenlerin adlandırılması iyileştirildi. Gereksiz "geri dönüş" kaldırıldı; dönüş değeri olmayan ok fonksiyonlarında.
  • Alanlarda erişim birleşimlerine (alma, varsayılan) izin verilir (yalnızca alıcı, varsayılan atama davranışı).
  • Alanlar için artırma ve azaltma işleçlerine izin ver soyut türleri.
  • Anonim yineleyiciler kullanılarak for döngülerinin satır içi kullanımı iyileştirildi.
  • Node.js: ES5 için geliştirilmiş StringMap uygulaması.
  • js: “-D js-es=6” derleyici seçeneğine let değişkenlerinin oluşturulması eklendi, ES6 sınıflarının oluşturulması iyileştirildi.
  • lua: "StringIterator" optimize edildi, hata yönetimi iyileştirildi.
  • php: Temel türler için "Std.isOfType" optimize edildi.
  • php: Oluşturulan diziler artık “Iterator”, “IteratorAggregate”, “Countable” yerel arayüzlerini uyguluyor.
  • cs: "@:assemblyMeta" ve "@:assemblyStrict" meta verileri eklendi.
  • python: anonim nesnelere "__contains__" uygulaması eklendi
    ve oluşturulan kodda sözlük olarak kullanılmalarına olanak tanıyan "__getitem__".

  • jvm: Nesnelerin anonim yapılar olarak kullanıldığı durumlarda (dinamik özellik araması engellenir) yazılan işlevlere erişmenin ve ek arayüzler oluşturmanın yeni yolu sayesinde önemli ölçüde iyileştirilmiş performans:
    Haxe 4.1 programlama dilinin piyasaya sürülmesi

Standart kütüphanedeki iyileştirmeler:

  • "Array.contains" işlevi eklendi.
  • Diziler için anahtar/değer yinelemesini uygulayan "Array.keyValueIterator" eklendi ("for (key => dizideki değer)").
  • "haxe.Constraints.NotVoid" kısıtlama türü eklendi.
  • “Lambda” sınıfına “findIndex” ve “foldi” fonksiyonları eklendi.
  • "dizi erişimi" ("arr[i]" aracılığıyla erişim) ve "haxe.ds.HashMap" için anahtar-değer yinelemesi uygulandı.
  • jvm: "StringMap", "sys.thread.Lock", "sys.thread.Thread" öğelerinin JVM'ye özgü sürümleri uygulandı.
  • java/jvm: "haxe.crypto" modülleri için "MD5", "SHA-1" ve "SHA-256"nın yerel uygulamaları kullanıldı.
  • makro: "haxe.macro.Context.containsDisplayPosition(pos)" eklendi.
  • nullsafety: "Katı" mod artık tek iş parçacıklı olarak değerlendiriliyor; "StrictThreaded" modu eklendi.
  • "Std.is", "Std.isOfType" lehine kullanımdan kaldırıldı.
  • Kapanışlarda değer olmadan yerel değişkenler kullanıldığında bir uyarı eklendi.
  • js: "untyped __js__(code, args)" kullanımdan kaldırıldı, yerini "js.Syntax.code(code, args)" aldı.
  • php/neko: "neko.Web" ve "php.Web" kullanımdan kaldırıldı ve daha sonra "hx4compat" kitaplığına taşınacak.

Bir sonraki sürümde planlandı:

  • Paket yöneticisi iyileştirmeleri haxelib.
  • Asenkron sistem API tabanlı libuv.
  • Koroutinler.
  • Sınıflar oluşturmadan modüler statik işlevlerin ve değişkenlerin bildirilmesi (gecelik sürümlerde zaten mevcuttur).

Kaynak: opennet.ru

Yorum ekle