Güçlü yazım, çapraz derleyici ve standart işlev kitaplığı ile aynı adı taşıyan çok paradigmalı üst düzey programlama dilini içeren Haxe 4.2 araç setinin bir sürümü mevcuttur. 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 GPLv2 lisansı altında dağıtılmakta olup standart kütüphane ve Haxe için geliştirilen HashLink ve Neko sanal makineleri MIT lisansı kapsamında lisanslanmıştır.
Dil, güçlü yazımla ifade odaklıdır. Nesneye yönelik, genel ve işlevsel programlama teknikleri desteklenmektedir. Haxe'nin sözdizimi ECMAScript'e yakındır ve onu statik yazma, otomatik tür çıkarımı, kalıp eşleştirme, jenerikler, döngüler için yineleyici tabanlı, AST makroları, GADT (Genelleştirilmiş Cebirsel Veri Türleri), soyut türler, anonim yapılar, basitleştirilmiş gibi özelliklerle genişletir. tanım dizileri, koşullu derleme için ifadeler, alanlara, sınıflara ve ifadelere meta veriler ekleme, dize enterpolasyonu ('Benim adım $name'), tür parametreleri ('new Main("foo")') ve çok daha fazlası. class Test { statik fonksiyon main() { final kişiler = [ "Elizabeth" => "Programlama", "Joel" => "Tasarım" ]; for (name => insanlarda iş) { trace('$isim geçimini sağlamak için $iş yapıyor!'); } } }
4.2 sürümündeki yeni özellikler:
- Statik değişkenleri ve işlevleri bir sınıfa sarmaya gerek kalmadan modül düzeyinde bildirme.
- “Klasik” soyut sınıflar ve işlevler için destek.
- Tüm hedef platformlar için variadic fonksiyonların yerel uygulaması (haxe.Rest) ve bağımsız değişken genişletme operatörü “f(...array)” eklenmesi.
- Bireysel iş parçacıkları için bir olay döngüsünün uygulanması ("sys.thread.Thread.events").
- Tür/alan belgelerini devralmak için "@:inheritDoc" meta verileri.
- Tüm hedef platformlarda harici yöntemler için yöntem aşırı yükleme desteği.
- Kendi türünün altında yatan yapıcıyı “@:forward.new” meta verilerini kullanarak özete iletme.
- "Haxe.macro.Expr" dosyasına "EIs" yapıcısı eklendi.
- "@:forward.variance" ile soyut tür varyantı oluşturabilme yeteneği.
- Varyasyonu birleştirirken "Herhangi biri" türünün "Dinamik" olarak temsil edilmesi.
- "haxe. Exceptions" paketine bazı temel istisna türleri eklendi.
- Değişkenleri bildirirken meta veri ekleme desteği.
- Dize yinelemesi için kullanılan "StringTools.unsafeCharAt" işlevi.
- eval (yorumlayıcı): "eval.luv" paketindeki "libuv"a bağlamalar eklendi.
- eval: "eval.integers" paketi aracılığıyla "Int64" ve "UInt64"ün yerel uygulamalarına bağlanma.
- cs: UDP soket uygulaması.
- cs: C# kodunun satır içi eklenmesi için “cs.Syntax” modülü.
- jvm: Dinamik kod için oluşturulan optimizasyonların sayısını kontrol etmek amacıyla "-D jvm.dynamic-level=x" bayrağı eklendi. 0 = yok, 1 = alan okuma/yazma optimizasyonu, 2 = derleme zamanında yöntem kapanışları.
- java, jvm: "--java-lib " bayrağı desteği.
- python: iş parçacığı API uygulaması.
Genel iyileştirmeler:
- "expr is SomeType" parantez içine alınmasını gerektirmez.
- "@:using" tipi uzantılar için artan öncelik.
- "Süper" aracılığıyla statik tip uzantıların kullanılmasına izin verir.
- Meta verileri “@:noDoc” alanlarına ayarlama yeteneği.
- "Harita" soyut türü geçişli hale getirilir.
- Enum yapıcılarında "@:native" desteği.
- Tür bildirimlerinde ("typedefs") "@:using" desteği.
- Çok satırlı hatalar, sonraki satırlar için önek olarak "..." kullanır.
- Tür çıkarımı yeniden düzenlendi, anonim yapılar açık türlere daha iyi dönüştürüldü ve işlev tamamlandığında "kapatıldı".
- Bağımsız değişkenler olmadan işlevlerin türünü "Void->..." yerine "()->..." olarak çıkarmak.
- Paket adı olarak "function" anahtar sözcüğüne izin verilir.
- Nesnelerin iyileştirilmiş satır içi yerleşimi.
- cs: .NET 5.0 desteği eklendi.
- cpp: Harici sınıflar için yerel yapıcılar desteği.
- php: Yerel bir dizi bildirmek için "php.Syntax.customArrayDecl" eklendi.
- php: Çeşitli işlevler ve sınıflar için güncellenmiş harici yöntemler.
- php: Anonim yapıların optimize edilmiş uygulaması.
- hl: Modüllerde değişiklik yoksa derlemeyi atlayın.
- lua: Json'u ayrıştırmak için "hx-lua-simdjson" kullanımı.
- jvm: "sys.thread.Lock" uygulamasındaki CPU yükü azaltıldı.
- Node.js: Google Kapatma Derleyicisi ile geliştirilmiş uyumluluk.
- Boş Güvenlik: Değişkenleri bildirirken "@:nullSafety(Off)" seçeneğini göz önünde bulundurun: "var @:nullSafety(Off) v".
Ayrıca, VSCode düzenleyicisine yapılan ekleme, derleyicinin yeni sürümüne güncellendi; burada eksik arayüz alanlarının, basit ve soyut sınıfların ve özellik yöntemlerinin oluşturulmasıyla ilgili ipuçları ortaya çıktı.
Kaynak: opennet.ru
