Ra mắt ngôn ngữ lập trình Haxe 4.1

Có sẵn phát hành bộ công cụ Haxe 4.1, bao gồm ngôn ngữ lập trình cấp cao đa mô hình cùng tên với khả năng gõ mạnh, trình biên dịch chéo và thư viện hàm tiêu chuẩn. Dự án hỗ trợ dịch sang C++, HashLink/C, JavaScript, C#, Java, PHP, Python và Lua, cũng như biên dịch sang mã byte JVM, HashLink/JIT, Flash và Neko, với quyền truy cập vào các khả năng riêng của từng nền tảng mục tiêu. Mã trình biên dịch phân phối bởi theo giấy phép GPLv2, thư viện tiêu chuẩn và máy ảo được phát triển cho Haxe HashLink и Neko theo giấy phép MIT.

Ngôn ngữ là định hướng biểu hiện với khả năng gõ mạnh mẽ. Các kỹ thuật lập trình hướng đối tượng, chung và chức năng được hỗ trợ. Cú pháp Haxe gần với ECMAScript và mở rộng các tính năng của nó như gõ tĩnh, suy luận tự động, khớp mẫu, tổng quát, vòng lặp dựa trên trình vòng lặp, macro AST, GADT (Các kiểu dữ liệu đại số tổng quát), kiểu trừu tượng, cấu trúc ẩn danh, định nghĩa mảng đơn giản, biểu thức biên dịch có điều kiện, đính kèm siêu dữ liệu vào các trường , các lớp và biểu thức, nội suy chuỗi (“'Tên tôi là $name'"), tham số kiểu ("Main mới ("foo")') và nhiều hơn nữa.

Kiểm tra lớp học {
hàm tĩnh chính() {
người cuối cùng = [
"Elizabeth" => "Lập trình",
"Joel" => "Thiết kế"
];

cho (tên => công việc ở người) {
trace('$name làm công việc $ để kiếm sống!');
}
}
}

Các tính năng mới trong phiên bản 4.1:

  • Đã thêm tối ưu hóa đệ quy đuôi.
  • Đã thêm API hợp nhất mới để xử lý ngoại lệ.
  • Cấu trúc "try {} Catch(e) {}" được phép viết tắt cho "try {} Catch(e: haxe.Exception) {}".
  • Đã thêm hỗ trợ SSL cho trình thông dịch đánh giá.
  • JVM mục tiêu không còn được coi là thử nghiệm nữa.
  • Đối với Giao thức máy chủ ngôn ngữ, hỗ trợ cho các chức năng “Triển khai Goto” và “Tìm tài liệu tham khảo” đã được thêm vào.
  • Cải thiện việc đặt tên các biến cục bộ tạm thời trong mã được tạo. Đã xóa "return;" dư thừa trong các hàm mũi tên không có giá trị trả về.
  • Các kết hợp truy cập (get, mặc định) được phép trên các trường (chỉ getter, hành vi gán mặc định).
  • Cho phép toán tử tăng và giảm cho các trường các loại trừu tượng.
  • Cải thiện nội tuyến của vòng lặp for bằng cách sử dụng các trình vòng lặp ẩn danh.
  • js: Cải thiện việc triển khai StringMap cho ES5.
  • js: Việc tạo các biến let đã được thêm vào tùy chọn trình biên dịch “-D js-es=6”, việc tạo các lớp ES6 đã được cải thiện.
  • lua: "StringIterator" được tối ưu hóa, cải thiện khả năng xử lý lỗi.
  • php: "Std.isOfType" được tối ưu hóa cho các loại cơ sở.
  • php: Các mảng được tạo hiện triển khai các giao diện gốc “Iterator”, “IteratorAggregate”, “Countable”.
  • cs: Đã thêm siêu dữ liệu "@:assemblyMeta" và "@:assemblyStrict".
  • python: đã thêm triển khai "__contains__" vào các đối tượng ẩn danh
    và "__getitem__", cho phép sử dụng chúng làm từ điển trong mã được tạo.

  • jvm: Hiệu suất được cải thiện đáng kể nhờ một cách mới để truy cập các hàm đã nhập và tạo giao diện bổ sung trong trường hợp các đối tượng được sử dụng làm cấu trúc ẩn danh (ngăn chặn việc tra cứu thuộc tính động):
    Ra mắt ngôn ngữ lập trình Haxe 4.1

Những cải tiến trong thư viện tiêu chuẩn:

  • Đã thêm chức năng "Array.contains".
  • Đã thêm "Array.keyValueIterator", triển khai phép lặp khóa-giá trị cho mảng ("cho (khóa => giá trị trong mảng)").
  • Đã thêm loại ràng buộc "haxe.Constraints.NotVoid".
  • Các hàm “findIndex” và “foldi” đã được thêm vào lớp “Lambda”.
  • Đã triển khai "truy cập mảng" (truy cập thông qua "arr[i]") và lặp lại khóa-giá trị cho "haxe.ds.HashMap".
  • jvm: Đã triển khai các phiên bản dành riêng cho JVM của "StringMap", "sys.thread.Lock", "sys.thread.Thread".
  • java/jvm: Đã sử dụng các triển khai gốc của "MD5", "SHA-1" và "SHA-256" cho mô-đun "haxe.crypto".
  • macro: Đã thêm "haxe.macro.Context.containsDisplayPosition(pos)".
  • nullsafety: Chế độ "Strict" hiện được coi là luồng đơn; đã thêm chế độ "StrictThreaded".
  • "Std.is" không còn được dùng nữa để thay thế bằng "Std.isOfType".
  • Đã thêm cảnh báo khi sử dụng biến cục bộ không có giá trị trong phần đóng.
  • js: "untyped __js__(code, args)" không được dùng nữa, được thay thế bằng "js.Syntax.code(code, args)".
  • php/neko: "neko.Web" và "php.Web" không được dùng nữa và sẽ được chuyển sang thư viện "hx4compat" sau.

Trong phiên bản tiếp theo đã lên kế hoạch:

  • Cải tiến trình quản lý gói haxelib.
  • Dựa trên API hệ thống không đồng bộ libuv.
  • Coroutine.
  • Khai báo các hàm và biến tĩnh mô-đun mà không cần tạo lớp (đã có sẵn trong các bản dựng hàng đêm).

Nguồn: opennet.ru

Thêm một lời nhận xét