Lư 5.4

Sau hai năm phát triển, ngày 29/5.4, phiên bản mới của ngôn ngữ lập trình Lua XNUMX đã được ra mắt một cách âm thầm và lặng lẽ.

Lua là một ngôn ngữ lập trình đơn giản, dễ hiểu, có thể dễ dàng tích hợp vào các ứng dụng. Do những đặc tính này, Lua được sử dụng rộng rãi như một ngôn ngữ để mở rộng hoặc mô tả cấu hình của các chương trình (đặc biệt là trò chơi máy tính). Lua được phân phối theo giấy phép MIT.

Phiên bản trước (5.3.5) được phát hành vào ngày 10 tháng 2018 năm XNUMX.

Những thay đổi chính trong phiên bản mới

  • máy thu gom rác thế hệ mới. Trong hàm thu gom rác, các tham số setpause và setstepmul không còn được dùng nữa và thay vào đó, nên sử dụng tham số tăng dần;

  • một chức năng mới để đưa ra cảnh báo với khả năng vô hiệu hóa màn hình của chúng;

  • việc triển khai math.random mới sử dụng thuật toán xoshiro256** thay vì libc được cung cấp và khởi tạo trình tạo bằng một số ngẫu nhiên;

  • không biến đổi;

  • Các biến “được đóng” là các hằng cục bộ mà phương thức __close được thực thi khi rời khỏi phạm vi;

  • hàm mới lua_resetthread - xóa ngăn xếp và đóng tất cả các biến “đã đóng”;

  • hàm mới coroutine.close - đóng coroutine đã chỉ định và tất cả các biến "đã đóng" của nó;

  • dữ liệu người dùng có thể chứa một tập hợp các giá trị được truy cập theo chỉ mục. Các hàm mới đã được giới thiệu để hoạt động với chúng: lua_newuserdatauv, lua_setiuservalue và lua_getiuservalue;

  • Có sẵn thông tin gỡ lỗi về tham số và giá trị trả về của hàm;

  • nếu một chỉ mục số nguyên được sử dụng trong vòng lặp for và xảy ra tràn, vòng lặp sẽ kết thúc;

  • một đối số tùy chọn đã được thêm vào hàm string.gmatch, chỉ định phần bù từ đầu chuỗi để tìm kiếm kết quả khớp;

  • các hàm chuyển đổi hoàn toàn chuỗi thành số đã được chuyển sang thư viện chuỗi và hành vi của chúng đã thay đổi. Ví dụ: kết quả của phép tính "1" + "2" bây giờ là số nguyên chứ không phải số dấu phẩy động;

  • trong chức năng cấp phát bộ nhớ, có thể xảy ra lỗi khi giảm khối bộ nhớ;

  • ký hiệu định dạng mới trong hàm string.format - %p (đối với con trỏ);

  • thư viện utf8 chấp nhận mã ký tự lên tới 2³¹ (nếu một cờ đặc biệt được chỉ định, nếu không có nó thì chỉ cho phép các mã tối đa 0x10FFFF và không được phép thay thế);

  • các hằng số nguyên nằm ngoài phạm vi giá trị được chuyển đổi thành số thực (đã xảy ra việc cắt bit trước đó);

  • siêu phương thức __lt không còn được sử dụng để mô phỏng siêu phương thức __le; nếu cần, siêu phương thức __le phải được chỉ định rõ ràng;

  • không thể tạo nhãn cho câu lệnh goto nếu nhãn có cùng tên đã tồn tại trong phạm vi hiện tại (ngay cả khi nó được xác định ở phạm vi bên ngoài);

  • Siêu phương thức __gc có thể không chỉ là một hàm. Nếu cố gắng gọi một phương thức không thành công, một cảnh báo sẽ được in ra;

  • hàm in không gọi tostring cho mỗi đối số mà sử dụng các chuyển đổi nội bộ của chính nó;

  • hàm io.lines trả về một tập hợp gồm bốn giá trị thay vì một giá trị; để mô phỏng hành vi cũ, hãy đặt lệnh gọi trong dấu ngoặc đơn nếu bạn chuyển nó dưới dạng tham số cho lệnh gọi hàm khác.

Nguồn: linux.org.ru

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