انتشار مترجم زبان برنامه نویسی Vala 0.54.0

نسخه جدید مترجم زبان برنامه نویسی Vala 0.54.0 منتشر شد. زبان والا یک زبان برنامه نویسی شی گرا است که سینتکسی مشابه سی شارپ یا جاوا ارائه می کند. کد Vala به یک برنامه C ترجمه می شود، که به نوبه خود توسط یک کامپایلر استاندارد C در یک فایل باینری کامپایل شده و با سرعت یک برنامه کاربردی که در کد شی پلت فرم هدف کامپایل شده است، اجرا می شود. امکان اجرای برنامه ها در حالت اسکریپت وجود دارد. این زبان تحت نظارت پروژه GNOME در حال توسعه است. Gobject (Glib Object System) به عنوان یک مدل شی استفاده می شود. کد کامپایلر تحت مجوز LGPLv2.1 توزیع شده است.

این زبان از درون نگری، توابع لامبدا، رابط‌ها، نمایندگی‌ها و بسته‌ها، سیگنال‌ها و شکاف‌ها، استثناها، ویژگی‌ها، انواع غیر تهی، استنتاج نوع برای متغیرهای محلی (var) پشتیبانی می‌کند. مدیریت حافظه بر اساس شمارش مرجع انجام می شود. یک کتابخانه برنامه نویسی تعمیم یافته libgee برای این زبان ایجاد شده است که توانایی ایجاد مجموعه هایی برای انواع داده های سفارشی را فراهم می کند. شمارش عناصر مجموعه با استفاده از دستور foreach پشتیبانی می شود. برنامه نویسی برنامه های گرافیکی با استفاده از کتابخانه گرافیکی GTK انجام می شود.

این کیت با تعداد زیادی پیوند به کتابخانه‌ها به زبان C ارائه می‌شود. مترجم Vala از زبان Genie پشتیبانی می‌کند، که قابلیت‌های مشابهی را ارائه می‌دهد، اما با یک نحو الهام گرفته از زبان برنامه‌نویسی پایتون. برنامه هایی مانند سرویس گیرنده ایمیل Geary، پوسته گرافیکی Budgie، برنامه سازماندهی فایل عکس و ویدئو Shotwell و سایر موارد به زبان Vala نوشته شده اند. این زبان به طور فعال در توسعه توزیع سیستم عامل ابتدایی استفاده می شود.

نوآوری های اصلی:

  • پشتیبانی اضافه شده برای نمایندگان با تعداد متغیر پارامتر.
  • اضافه شدن نمایه LIBC که مترادف با نمایه POSIX است.
  • تولید بهبود یافته در حالت پروفایل POSIX.
  • قابلیت اعلام متغیرهایی که می توانند مقدار تهی با نوع استنتاج (var?) داشته باشند اضافه شده است.
  • اضافه شدن قابلیت اعلام کلاس های ممنوعه برای ارث بردن (مهر شده)؛
  • اپراتور دسترسی ایمن به فیلدهای کلاس اضافه شد که می توانند تهی باشند (a.?b.?c).
  • مقداردهی اولیه محتویات ساختار به null مجاز است (const Foo[] BARS = { { "bar", 42 }, null };);
  • عملیات resize() برای آرایه های ثابت ممنوع است.
  • هنگام تلاش برای فرستادن یک تابع به void ((void)not_void_func();) خروجی هشدار اضافه شد.
  • محدودیت در انواع عناصر GLib.Array حذف شد.
  • وراثت مالکیت "var unposed" در بیانیه foreach() ثابت شد.
  • اتصال به webkit2gtk-4.0 به نسخه 2.33.3 به روز شده است.
  • اتصال به gstreamer به نسخه 1.19.0+ git master به روز شده است.
  • اتصال به gtk4 به نسخه 4.5.0~e681fdd9 به روز شده است.
  • Binding برای gtk+-3.0 به نسخه 3.24.29+f9fe28ce به روز شده است
  • اتصال به gio-2.0,glib-2.0 به نسخه 2.69.0 به روز شده است.
  • برای لینوکس، اتصالات به SocketCAN اضافه شده است.
  • رفع اتصالات برای glib-2.0، gio-2.0، gstreamer-rtp-1.0، javascriptcoregtk-4.0، gobject-2.0، pango، linux، gsl، rest-0.7، libusb، libusb-1.0، pixman-1، webkit2gt-webkit افزونه-4.0، x11، zlib، gnutls;
  • پیوندهای gedit-2.20 و webkit-1.0 حذف شدند.
  • اتصالات به روز شده بر اساس GIR.
  • قابلیت بررسی کد C تولید شده به سیستم تست اضافه شده است.
  • گیرپارسر بهبود یافته، گیر رایتر، والادوک، لیبوالادوک/گیرمپورتر;
  • خطاها و کاستی های انباشته شده در اجزای مختلف کامپایلر برطرف شده است.

منبع: opennet.ru

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