آپدیت کامپایلر زبان برنامه نویسی والا 0.50.4

نسخه جدید کامپایلر زبان برنامه نویسی والا 0.50.4 منتشر شد. شاخه پشتیبانی بلند مدت (LTS) Vala 0.48.14 (بسته بندی شده برای اوبونتو 18.04) و شاخه آزمایشی Vala 0.51.3 نیز به روز شده اند.

زبان والا یک زبان برنامه نویسی شی گرا است که سینتکسی مشابه سی شارپ یا جاوا ارائه می کند. Gobject (Glib Object System) به عنوان یک مدل شی استفاده می شود. مدیریت حافظه با مالکیت (پیوندهای متعلق به/غیر مالکیت) یا با استفاده از ARC (جایگزینی تخریبگرها و کاهش شمارنده های مرجع شی در مرحله کامپایل) انجام می شود.

این زبان از درون نگری، توابع لامبدا، رابط‌ها، نمایندگی‌ها و بسته‌ها، سیگنال‌ها و اسلات‌ها، استثناها، ویژگی‌ها، انواع غیر تهی، استنتاج نوع برای متغیرهای محلی پشتیبانی می‌کند. این کیت با تعداد زیادی صحافی به کتابخانه ها به زبان C (vala-girs، vala-extra-vapis) ارائه می شود. برنامه های Vala به نمایش C ترجمه می شوند و سپس توسط یک کامپایلر استاندارد C کامپایل می شوند.امکان اجرای برنامه ها در حالت اسکریپت وجود دارد.

لیست تغییرات:

  • پشتیبانی اضافی برای کلمه کلیدی params برای سازندگان کلاس Foo{ public Foo(params string[] args){ foreach (var arg in args) print(arg); } }
  • کدژن:
    • پشتیبانی بهبود یافته برای سازنده های ساختار SimpleType (به عنوان مثال برای اتصال typedef uint32_t people_inside؛ از C) [SimpleType] [CCode (cname = "people_inside")] ساختار عمومی PeopleInside : uint32 {}
    • مدیریت بهبود یافته با ویژگی "NoWrapper".
    • CCode.type_cname و get_ccode_type_name() برای کلاس ها مجاز هستند.
    • G_TYPE_INSTANCE_GET_CLASS/INTERFACE همیشه برای نمادهای خارجی استفاده می شود.
    • از g_boxed_free در بسته بندی آزاد برای تخصیص GLib.Value روی پشته استفاده شد.
    • رفع نشت حافظه در هنگام جعبه گشایی ضمنی GLib.Value (یک ظرف جهانی از هر نوع مقدار).
    • رفع نشت حافظه هنگام انتقال ساختار تخصیص یافته به پشته.
    • وراثت ویرانگر ساختار مادر تضمین شده است
    • بازیابی صحیح نماد_مرجع عبارات بازیگران تودرتو بهبود یافته است.
    • تمام رخدادهای تو در تو CCodeCastExpression حذف شد.
    • تماس نادرست با کنترل کننده سیگنال پیش فرض متوقف شد.
    • "string.h" برای strcmp() متصل شد (نمایه POSIX، حالتی که در آن Vala تنها با استفاده از کتابخانه استاندارد C کد تولید می کند).
  • والا:
    • تشخیص بهبود یافته فایل های منبع بسته تکراری.
    • فیلدها/ویژگی‌های GtkChild باید فاقد مالکیت اعلام شوند.
    • تخصیص مجدد فیلد/ویژگی GtkChild ممنوع است.
    • هنگام واگذاری یک تکلیف، یک شرط سختگیرانه برای لامبدا اعمال شده است.
    • استفاده از ساختارهای یکبار مصرف SimpleType ممنوع است.
    • جعبه‌گشایی GLib.Value تضمین می‌کند که مقدار ناشناس برگردانده می‌شود.
    • ریختن GLib.Value به یک ساختار/نوع ساده قابل تهی ممنوع است.
    • بررسی آرگومان نوع در پیش‌شرط‌های پایه انواع/کلاس/اینترفیس اضافه شد.
    • گرفتن پارامترها/متغیرهای va_list ممنوع است.
    • ژنریک های حاوی اشاره گر به یک ساختار باید در صورت دسترسی به نوع صحیح ریخته شوند تا از C UB جلوگیری شود.
    • استنتاج نوع پیاده‌سازی شده برای "in" در داخل enum.
    • بررسی زمینه بهبود یافته برای تکالیف فیلد قابل نوشتن.
    • شامل "stdlib.h" برای Enum.to_string() (POSIX).
    • منبع_مرجع صحیح برای متغیرهای ضمنی "this" و "result" تنظیم شده است.
    • یک پیام خطا برای عملوند داخلی نامعتبر از عبارات unary ارائه کرد.
  • Сodewriter: اضافه کردن دنباله ";" را متوقف کرد بعد از بدن WithStatement.
  • گیرپارسر:
    • پردازش یک نماینده ناشناس که توسط روش یا سیگنال مجازی پشتیبانی نمی شود، ارائه شده است.
    • ابرداده "delegate_target" را برای متدها و پارامترها اعمال کرد
    • ابرداده "destroy_notify_cname" را در فیلدها اعمال کنید
    • ابرداده "type_get_function" را برای کلاس ها و رابط ها اعمال کنید
    • اگر پیش فرض نباشد، CCode.type_cname را برای کلاس ها تنظیم کنید.
  • girwriter: از نوشته شدن عناصر پارامتر نمونه اطمینان می دهد.
  • girwriter: خروجی کنترل کننده سیگنال پیش فرض پیاده سازی شده است.
  • libvaladoc/html: مرتب‌سازی فیلدهای ساختار حذف شد تا ترتیب اصلی خود را هنگام ایجاد اسناد html ایجاد کنید valadoc.org
  • libvaladoc: اطمینان حاصل کنید که مقادیر Api.Class.is_compact به درستی بازیابی شده اند.
  • libvaladoc: بسته بندی اضافه شده برای کتابخانه graphviz "agedge".
  • اتصالات:
    • اصلاحات جزئی هنگام ایجاد پیوندها: cairo، gobject-2.0، pango، goocanvas-2.0، curses، alsa، bzlib، sqlite3، libgvc، posix، gstreamer-1.0، gdk-3.0، gdk-x11-3.0، gtk-3.0، gtk+t. فیوز، libxml-4
    • gdk-pixbuf-2.0: رفع مشکل Pixbuf.save_to_streamv_async()
    • gio-2.0: رفع اتصال PollableOutputStream.write*_nonblocking()
    • gio-2.0,gtk+-3.0,gtk4: ویژگی‌های صریح نوع c پارامترهای va_list کنار گذاشته می‌شوند
    • gio-2.0: فراخوان گمشده برای برخی از روش‌های AppInfo/File.*() انتخاب شد
    • glib-2.0: روش‌های راحت GLib.[S]List.is_empty() برای غیر تهی اضافه شد
    • glib-2.0: اتصال تابع assert_cmp* [#395]
    • glib-2.0: نوع فیلد OptionEntry.flags بهبود یافته است
    • glib-2.0: PtrArray اکنون یک زیر کلاس از GenericArray است
    • gstreamer-1.0: CCode.type_id از MiniObject روی G_TYPE_BOXED [#1133] تنظیم شده است
    • gtk+-2.0,javascriptcoregtk-4.0: استفاده تصحیح شده از ویژگی CCode.type_cname
    • gtk+-3.0,gtk4: برخی از مقادیر و پارامترهای بازگشتی نمایندگی را ثابت کرد
    • gtk4: به روز رسانی به نسخه 4.0.2.

منبع: opennet.ru

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