تحديث مترجم لغة البرمجة Vala 0.50.4

تم إصدار نسخة جديدة من المترجم للغة برمجة Vala 0.50.4. تم أيضًا تحديث فرع الدعم طويل المدى (LTS) Vala 0.48.14 (المجهز لـ Ubuntu 18.04) والفرع التجريبي Vala 0.51.3.

لغة Vala هي لغة برمجة موجهة للكائنات توفر بناء جملة مشابهًا لـ C# أو Java. يتم استخدام Gobject (نظام كائن Glib) كنموذج كائن. تتم إدارة الذاكرة عن طريق الملكية (الروابط المملوكة/غير المملوكة) أو استخدام ARC (استبدال أدوات التدمير وتناقص عدادات مرجع الكائنات في مرحلة التجميع).

تدعم اللغة الاستبطان، ووظائف لامدا، والواجهات، والمفوضين والإغلاقات، والإشارات والفتحات، والاستثناءات، والخصائص، والأنواع غير الخالية، واستدلال النوع للمتغيرات المحلية. تأتي المجموعة مع عدد كبير من الارتباطات للمكتبات في لغة C (vala-girs، vala-extra-vapis). تتم ترجمة برامج Vala إلى تمثيل C ثم يتم تجميعها بواسطة مترجم C قياسي. ومن الممكن تشغيل البرامج في وضع البرنامج النصي.

قائمة التغييرات:

  • تمت إضافة دعم إضافي للكلمة الأساسية المعلمات للمنشئين class Foo{ public Foo(params string[] args){ foreach (var arg in args) print(arg); } }
  • مولد الكود:
    • دعم محسّن لمنشئي بنية SimpleType (على سبيل المثال يُستخدم لربط typedef uint32_tpeople_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" داخل التعداد.
    • تحسين التحقق من السياق للتعيينات في الحقل القابل للكتابة.
    • تم تضمين "stdlib.h" لـ Enum.to_string() (POSIX).
    • تم تعيين المرجع المصدر الصحيح للمتغيرين الضمنيين "هذا" و"النتيجة"
    • تم توفير رسالة خطأ لمعامل داخلي غير صالح للتعبيرات الأحادية.
  • كاتب الكود: توقف عن إضافة اللاحقة ";" بعد الجسم 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 "agege".
  • الارتباطات:
    • إصلاحات طفيفة عند إنشاء الارتباطات: cairo، gobject-2.0، pango، goocanvas-2.0، curs، alsa، bzlib، sqlite3، libgvc، posix، gstreamer-1.0، gdk-3.0، gdk-x11-3.0، gtk+-3.0، gtk4، الصمامات، ليبكسمل-2.0
    • 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: ربط الدالة Assur_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

إضافة تعليق