Cập nhật trình biên dịch ngôn ngữ lập trình Vala 0.50.4

Phiên bản mới của trình biên dịch cho ngôn ngữ lập trình Vala, phiên bản 0.50.4, đã được phát hành. Nhánh hỗ trợ dài hạn (LTS) của Vala 0.48.14 cũng đã được cập nhật (đóng gói cho...). Ubuntu 18.04) và nhánh thử nghiệm Vala 0.51.3.

Ngôn ngữ Vala là ngôn ngữ lập trình hướng đối tượng cung cấp cú pháp tương tự như C# hoặc Java. Gobject (Hệ thống đối tượng Glib) được sử dụng làm mô hình đối tượng. Việc quản lý bộ nhớ được thực hiện theo quyền sở hữu (liên kết sở hữu/không sở hữu) hoặc sử dụng ARC (thay thế hàm hủy và giảm dần bộ đếm tham chiếu đối tượng ở giai đoạn biên dịch).

Ngôn ngữ này hỗ trợ tính năng xem xét nội tâm, hàm lambda, giao diện, đại biểu và bao đóng, tín hiệu và vị trí, ngoại lệ, thuộc tính, loại không null, suy luận kiểu cho các biến cục bộ. Bộ công cụ này đi kèm với một số lượng lớn các liên kết với các thư viện trong C (vala-girs, vala-extra-vapis). Các chương trình Vala được dịch sang dạng biểu diễn C và sau đó được biên dịch bởi trình biên dịch C tiêu chuẩn. Có thể chạy các chương trình ở chế độ tập lệnh.

Danh sách các thay đổi:

  • Đã thêm hỗ trợ bổ sung cho từ khóa params cho hàm tạo class Foo{ public Foo(params string[] args){ foreach (var arg in args) print(arg); } }
  • mã hóa:
    • Cải thiện hỗ trợ cho các hàm tạo cấu trúc SimpleType (ví dụ được sử dụng để liên kết typedef uint32_t people_inside; từ C) [SimpleType] [CCode (cname = "people_inside")] public struct PeopleInside : uint32 {}
    • Cải thiện việc xử lý thuộc tính “NoWrapper”.
    • Cho phép CCode.type_cname và get_ccode_type_name() cho các lớp.
    • G_TYPE_INSTANCE_GET_CLASS/INTERFACE luôn được sử dụng cho các ký hiệu bên ngoài.
    • Đã sử dụng g_boxed_free trong trình bao bọc miễn phí để phân bổ GLib.Value trên vùng nhớ heap.
    • Đã sửa lỗi rò rỉ bộ nhớ trong quá trình mở hộp ngầm của GLib.Value (một vùng chứa chung của bất kỳ loại giá trị nào).
    • Đã sửa lỗi rò rỉ bộ nhớ khi di chuyển cấu trúc được phân bổ vùng heap vào ngăn xếp.
    • Sự kế thừa của hàm hủy của cấu trúc cha được đảm bảo
    • Việc truy xuất chính xác tham chiếu ký hiệu của các biểu thức lồng nhau đã được cải thiện.
    • Đã xóa tất cả các lần xuất hiện lồng nhau của CCodeCastExpression.
    • Đã dừng gọi sai bộ xử lý tín hiệu mặc định.
    • Đã kết nối "string.h" cho strcmp() (cấu hình POSIX, chế độ trong đó Vala tạo mã chỉ bằng thư viện C tiêu chuẩn).
  • Vala:
    • Cải thiện khả năng phát hiện các tệp nguồn gói trùng lặp.
    • Các trường/thuộc tính GtkChild phải được khai báo là không có chủ sở hữu.
    • Việc chỉ định lại trường/thuộc tính GtkChild bị cấm.
    • Một điều kiện chặt chẽ hơn đã được áp dụng cho lambda khi giao nhiệm vụ.
    • Nghiêm cấm sử dụng các cấu trúc SimpleType sử dụng một lần.
    • Việc mở hộp GLib.Value đảm bảo rằng giá trị chưa được sở hữu sẽ được trả về.
    • Việc truyền GLib.Value sang kiểu cấu trúc/loại đơn giản có thể vô hiệu đều bị cấm.
    • Đã thêm kiểm tra các đối số loại trong các điều kiện tiên quyết về loại/lớp/giao diện cơ sở.
    • Việc chụp các tham số/biến va_list bị cấm.
    • Generics chứa con trỏ tới cấu trúc phải được chuyển sang đúng loại khi truy cập để tránh C UB.
    • Đã triển khai suy luận kiểu cho "in" bên trong enum.
    • Cải thiện việc kiểm tra ngữ cảnh cho các bài tập cho trường có thể ghi.
    • Bao gồm "stdlib.h" cho Enum.to_string() (POSIX).
    • Source_reference đúng được đặt cho các biến ẩn "this" và "result"
    • Đã cung cấp thông báo lỗi về toán hạng nội bộ không hợp lệ của các biểu thức đơn nguyên.
  • Người viết mã: Đã ngừng thêm dấu ";" sau phần thân WithStatement.
  • Trình phân tích cú pháp:
    • Việc xử lý đại biểu ẩn danh không được hỗ trợ bởi phương thức hoặc tín hiệu ảo được cung cấp.
    • Đã áp dụng siêu dữ liệu "delegate_target" cho các phương thức và tham số
    • Áp dụng siêu dữ liệu "destroy_notify_cname" cho các trường
    • Áp dụng siêu dữ liệu "type_get_function" cho các lớp và giao diện
    • Đặt CCode.type_cname cho các lớp nếu không phải là mặc định.
  • girwriter: Đảm bảo các phần tử tham số phiên bản được ghi.
  • girwriter: Đã triển khai đầu ra xử lý tín hiệu mặc định.
  • libvaladoc/html: Đã xóa việc sắp xếp các trường cấu trúc để giữ nguyên thứ tự ban đầu khi tạo tài liệu html valadoc.org
  • libvaladoc: Đảm bảo rằng các giá trị cho Api.Class.is_compact được truy xuất chính xác
  • libvaladoc: Đã thêm trình bao bọc cho thư viện graphviz "agedge"
  • Ràng buộc:
    • Các bản sửa lỗi nhỏ khi tạo liên kết: cairo, gobject-2.0, pango, goocanvas-2.0, lời nguyền, alsa, bzlib, sqlite3, libgvc, posix, gstreamer-1.0, gdk-3.0, gdk-x11-3.0, gtk+-3.0, gtk4, cầu chì, libxml-2.0
    • gdk-pixbuf-2.0: Sửa Pixbuf.save_to_streamv_async()
    • gio-2.0: Sửa lỗi liên kết PollableOutputStream.write*_nonblocking()
    • gio-2.0,gtk+-3.0,gtk4: Loại bỏ thuộc tính loại c rõ ràng của tham số va_list
    • gio-2.0: Lựa chọn trình kích hoạt bị thiếu cho một số phương thức AppInfo/File.*()
    • glib-2.0: Đã thêm các phương thức tiện lợi GLib.[S]List.is_empty() cho giá trị không null
    • glib-2.0: Liên kết hàm khẳng định_cmp* [#395]
    • glib-2.0: Loại trường OptionEntry.flags được cải tiến
    • glib-2.0: PtrArray hiện là lớp con của GenericArray
    • gstreamer-1.0: CCode.type_id của MiniObject được đặt thành G_TYPE_BOXED [#1133]
    • gtk+-2.0,javascriptcoregtk-4.0: Sửa lỗi sử dụng thuộc tính CCode.type_cname
    • gtk+-3.0,gtk4: Đã sửa một số giá trị và tham số trả về của đại biểu
    • gtk4: Đã cập nhật lên phiên bản 4.0.2.

Nguồn: opennet.ru

Mua dịch vụ lưu trữ đáng tin cậy cho các trang web có bảo vệ DDoS, máy chủ VPS VDS 🔥 Mua dịch vụ hosting website đáng tin cậy với bảo vệ DDoS, máy chủ VPS VDS | ProHoster