انتشار زبان برنامه نویسی Haxe 4.2

نسخه ای از جعبه ابزار Haxe 4.2 در دسترس است که شامل زبان برنامه نویسی چند پارادایم سطح بالا به همین نام با تایپ قوی، یک کامپایلر متقابل و یک کتابخانه استاندارد توابع است. این پروژه از ترجمه به C++، HashLink/C، JavaScript، C#، Java، PHP، Python و Lua و همچنین کامپایل به JVM، HashLink/JIT، Flash و Neko بایت کد با دسترسی به قابلیت های بومی هر پلتفرم هدف پشتیبانی می کند. کد کامپایلر تحت مجوز GPLv2 توزیع می شود و کتابخانه استاندارد و ماشین های مجازی HashLink و Neko که برای Haxe توسعه یافته اند تحت مجوز MIT مجوز دارند.

زبان بیان محور با تایپ قوی است. تکنیک های برنامه نویسی شی گرا، عمومی و کاربردی پشتیبانی می شوند. نحو Haxe نزدیک به ECMAScript است و آن را با ویژگی‌هایی مانند تایپ استاتیک، استنتاج نوع خودکار، تطبیق الگو، ژنریک، حلقه‌های مبتنی بر تکرار، ماکروهای AST، GADT (انواع داده‌های جبری عمومی)، انواع انتزاعی، ساختارهای ناشناس، ساده شده گسترش می‌دهد. آرایه‌های تعاریف، عباراتی برای کامپایل شرطی، پیوست کردن ابرداده به فیلدها، کلاس‌ها و عبارات، درون‌یابی رشته‌ای («نام من $name است»)، پارامترهای نوع («اصلی جدید» ("foo")') و بسیاری دیگر. class Test { static function main() { final people = [ "Elizabeth" => "Programming", "Joel" => "Design" ]; for (name => job in people) { trace('$name $job برای امرار معاش می کند!'); } }

ویژگی های جدید در نسخه 4.2:

  • اعلان متغیرها و توابع استاتیک در سطح ماژول، بدون نیاز به قرار دادن آنها در یک کلاس.
  • پشتیبانی از کلاس ها و توابع انتزاعی "کلاسیک".
  • اجرای بومی توابع متغیر برای همه پلتفرم های هدف (haxe.Rest) و اضافه کردن عملگر گسترش آرگومان "f(...array)".
  • پیاده سازی یک حلقه رویداد برای رشته های جداگانه ("sys.thread.Thread.events").
  • ابرداده "@:inheritDoc" برای به ارث بردن اسناد نوع/فیلد.
  • پشتیبانی بیش از حد روش برای روش‌های خارجی در همه پلتفرم‌های هدف.
  • با استفاده از ابرداده "@:forward.new" سازنده زیربنای نوع آن را به چکیده منتقل کنید.
  • سازنده "EIs" به "haxe.macro.Expr" اضافه شد.
  • امکان ساخت یک نوع انتزاعی با "@:forward.variance".
  • نمایش نوع "Any" به عنوان "Dynamic" هنگام یکسان سازی تنوع.
  • برخی از انواع استثناهای اساسی را به بسته "haxe.exceptions" اضافه کرد.
  • پشتیبانی از پیوست کردن ابرداده هنگام اعلام متغیرها.
  • تابع "StringTools.unsafeCharAt" برای تکرار رشته استفاده می شود.
  • eval (مفسر): پیوندهایی به "libuv" در بسته "eval.luv" اضافه شده است.
  • eval: اتصال به پیاده سازی های بومی "Int64" و "UInt64" از طریق بسته "eval.integers".
  • cs: اجرای سوکت UDP.
  • cs: ماژول "cs.Syntax" برای درج درون خطی کد C#.
  • jvm: پرچم "-D jvm.dynamic-level=x" را برای کنترل تعداد بهینه سازی های ایجاد شده برای کد پویا اضافه کرد. 0 = هیچ، 1 = بهینه سازی خواندن/نوشتن فیلد، 2 = بسته شدن روش در زمان کامپایل.
  • java, jvm: پشتیبانی از پرچم "--java-lib <directory>".
  • پایتون: اجرای API threading.

پیشرفت های کلی:

  • "expr is SomeType" نیازی به قرار دادن داخل پرانتز ندارد.
  • اولویت برای پسوندهای نوع "@:using" افزایش یافته است.
  • استفاده از پسوندهای نوع ایستا را از طریق "super" اجازه می دهد.
  • امکان تنظیم متادیتا روی فیلدهای "@:noDoc".
  • نوع انتزاعی "نقشه" متعدی ساخته شده است.
  • پشتیبانی از "@:native" در سازندگان enum.
  • پشتیبانی از "@:using" در اعلان‌های نوع ("typedefs").
  • خطاهای چند خطی از "..." به عنوان پیشوند برای خطوط بعدی استفاده می کنند.
  • استنتاج نوع دوباره کار شده است، ساختارهای ناشناس بهتر به انواع صریح تبدیل می شوند و پس از تکمیل تابع "بسته" می شوند.
  • استنتاج نوع توابع بدون آرگومان به صورت "()->..." به جای "Void->...".
  • کلمه کلیدی "function" به عنوان نام بسته مجاز است.
  • داخلی سازی بهبود یافته اجسام.
  • cs: اضافه شدن پشتیبانی برای دات نت 5.0.
  • cpp: پشتیبانی از سازنده های بومی برای کلاس های خارجی.
  • php: "php.Syntax.customArrayDecl" را برای اعلام آرایه بومی اضافه کرد.
  • php: متدهای خارجی به روز شده برای توابع و کلاس های مختلف.
  • php: اجرای بهینه سازه های ناشناس.
  • hl: در صورت عدم تغییر در ماژول ها از کامپایل صرفنظر کنید.
  • lua: استفاده از "hx-lua-simdjson" برای تجزیه json.
  • jvm: کاهش بار CPU در اجرای "sys.thread.Lock".
  • js: سازگاری بهبود یافته با Google Closure Compiler.
  • امنیت تهی: هنگام اعلام متغیرها، "@:nullSafety(Off)" را در نظر بگیرید: "var @:nullSafety(Off) v".

همچنین، افزودنی ویرایشگر VSCode به نسخه جدید کامپایلر به روز شده است که در آن نکاتی با تولید فیلدهای گمشده رابط ها، کلاس های ساده و انتزاعی و همچنین متدهای ویژگی ظاهر شده است.

منبع: opennet.ru

اضافه کردن نظر