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 Object System) нь объектын загвар болгон ашиглагддаг. Санах ойн удирдлагыг өмчлөх (эзэмших/эзэмшихгүй холбоосууд) эсвэл ARC (эмхэтгэх үе шатанд устгагчийг орлуулах, объектын лавлагааны тоолуурыг багасгах) ашиглан гүйцэтгэдэг.

Энэ хэл нь дотоод ажиглалт, ламбда функц, интерфейс, төлөөлөгч ба хаалт, дохио ба үүр, үл хамаарах зүйл, шинж чанар, null бус төрлүүд, локал хувьсагчийн төрлийн дүгнэлт зэргийг дэмждэг. Энэхүү иж бүрдэл нь C (vala-girs, vala-extra-vapis) хэл дээрх номын сангуудад олон тооны хавтастай ирдэг. Vala программуудыг Си хэл дээрх дүрслэл рүү хөрвүүлж, дараа нь стандарт Си хөрвүүлэгчээр эмхэтгэдэг.Скрипт горимд программуудыг ажиллуулах боломжтой.

Өөрчлөлтийн жагсаалт:

  • Foo ангийн бүтээгчдэд зориулсан params түлхүүр үгэнд нэмэлт дэмжлэг нэмсэн{ public Foo(params string[] args){ foreach (var arg in args) print(arg); } }
  • кодлогч:
    • SimpleType бүтцийн бүтээгчдэд зориулсан сайжруулсан дэмжлэг (жишээ нь typedef uint32_t people_inside-г холбоход ашигладаг; C-ээс) [SimpleType] [CCode (cname = "people_inside")] public struct PeopleInside : uint32 {}
    • "NoWrapper" шинж чанарыг сайжруулсан.
    • Ангиудад CCode.type_cname болон get_ccode_type_name()-г зөвшөөрдөг.
    • G_TYPE_INSTANCE_GET_CLASS/INTERFACE нь үргэлж гадаад тэмдэгтүүдэд ашиглагддаг.
    • GLib.Value-г овоолон дээр хуваарилахын тулд g_boxed_free-г үнэгүй боодолд ашигласан.
    • GLib.Value (ямар ч утгын төрлийн бүх нийтийн контейнер)-ийг далд задлах үед санах ойн алдагдлыг зассан.
    • Бөөнөөр хуваарилагдсан бүтцийг стек рүү шилжүүлэх үед санах ойн алдагдлыг зассан.
    • Эцэг эхийн бүтцийг устгагчийн өв залгамжлал хангагдана
    • Оруулсан дамжуулалтын илэрхийлэлүүдийн symbol_reference-г зөв сэргээх нь сайжирсан.
    • CCodeCastExpression-ийн бүх үүрлэсэн тохиолдлыг устгасан.
    • Өгөгдмөл дохионы зохицуулагч руу буруу залгахаа больсон.
    • strcmp()-д "string.h"-г холбосон (POSIX профайл, Вала зөвхөн стандарт C номын санг ашиглан код үүсгэдэг горим).
  • Вала:
    • Давхардсан багцын эх файлуудын илрүүлэлтийг сайжруулсан.
    • GtkChild талбарууд/пропертиуд эзэнгүй гэж зарлагдсан байх ёстой.
    • GtkChild талбар/өмчийг дахин хуваарилахыг хориглоно.
    • Даалгавар шилжүүлэхдээ ламбдад илүү хатуу нөхцөл тавьсан.
    • Нэг удаагийн SimpleType бүтцийг ашиглахыг хориглоно.
    • GLib.Value хайрцгийг задлах нь эзэнгүй утгыг буцаахыг баталгаажуулдаг.
    • GLib.Value-г тэглэх боломжтой бүтэц/энгийн төрөлд шилжүүлэхийг хориглоно.
    • Үндсэн төрөл/анги/интерфэйсийн урьдчилсан нөхцөл дэх төрлийн аргументыг шалгахыг нэмсэн.
    • va_list параметрүүд/хувьсагчдыг авахыг хориглоно.
    • C UB-ээс зайлсхийхийн тулд бүтцэд заагч агуулсан ерөнхий зүйлүүдийг хандахдаа зөв төрөлд шилжүүлэх ёстой.
    • Enum доторх "in" төрлийн дүгнэлтийг хэрэгжүүлсэн.
    • Бичих боломжтой талбарт даалгаврын контекст шалгах ажиллагааг сайжруулсан.
    • Enum.to_string() (POSIX)-д "stdlib.h" орсон.
    • "энэ" болон "үр дүн" гэсэн далд хувьсагчдын хувьд зөв эх_ лавлагааг тохируулсан.
    • Нэгдмэл илэрхийллийн хүчингүй дотоод операндын алдааны мессежийг өгсөн.
  • Кодерайтер: Араас нь ";" нэмэхээ больсон. Биеийн дараа WithStatement.
  • Оруулагч:
    • Виртуал арга эсвэл дохиогоор дэмжигдээгүй нэргүй төлөөлөгчийн боловсруулалтыг хангасан.
    • Арга болон параметрүүдэд "төлөөлөгч_зорилтот" мета өгөгдлийг ашигласан
    • Талбаруудад "destroy_notify_cname" мета өгөгдлийг ашиглана уу
    • Ангиуд болон интерфейсүүдэд "type_get_function" мета өгөгдлийг ашиглана уу
    • Ангиудад анхдагч биш бол CCode.type_cname тохируулна уу.
  • girwriter: Жишээ параметрийн элементүүдийг бичсэн эсэхийг баталгаажуулдаг.
  • girwriter: Анхдагч дохио зохицуулагчийн гаралтыг хэрэгжүүлсэн.
  • libvaladoc/html: valadoc.org html баримт бичгийг үүсгэх үед анхны дарааллыг нь үлдээхийн тулд бүтцийн талбаруудын эрэмбэлэхийг хассан.
  • libvaladoc: Api.Class.is_compact-ийн утгуудыг зөв татаж авсан эсэхийг шалгаарай
  • libvaladoc: "agedge" graphviz номын санд зориулж боодол нэмсэн
  • Холболт:
    • Холболт үүсгэх үед бага зэргийн засварууд: cairo, gobject-2.0, pango, goocanvas-2.0, хараал, alsa, bzlib, sqlite3, libgvc, posix, gstreamer-1.0, gdk-3.0, gdk-x11-3.0, gtk.3.0., gtk. гал хамгаалагч, libxml-4
    • gdk-pixbuf-2.0: Pixbuf.save_to_streamv_async() засах
    • gio-2.0: PollableOutputStream.write*_nonblocking() холболтыг засах
    • gio-2.0,gtk+-3.0,gtk4: va_list параметрүүдийн тодорхой c төрлийн шинж чанаруудыг хассан
    • gio-2.0: Зарим AppInfo/File.*() аргуудын хувьд алга болсон дуудагчийг сонгосон
    • glib-2.0: Нэмэгдсэн GLib.[S]List.is_empty() null бусд зориулсан хялбар аргууд
    • glib-2.0: assert_cmp* функцийг холбох [#395]
    • glib-2.0: OptionEntry.flags талбарын төрлийг сайжруулсан
    • glib-2.0: PtrArray нь одоо GenericArray-ийн дэд ангилал болсон
    • gstreamer-1.0: MiniObject-н CCode.type_id-г G_TYPE_BOXED болгож тохируулсан [#1133]
    • gtk+-2.0,javascriptcoregtk-4.0: CCode.type_cname шинж чанарын хэрэглээг зассан
    • gtk+-3.0,gtk4: Төлөөлөгчийн буцаах утгууд болон параметрүүдийг зассан
    • gtk4: 4.0.2 хувилбар руу шинэчлэгдсэн.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх