Một Số Thay Đổi Trong Lua 5.2.1
Một sự thay đổi nhỏ trong Lua 5.2.1
Phiên bản chính thức của Lua 5.2.1 đã ra mắt được một thời gian. Mặc dù chỉ là bản cập nhật nhỏ so với 5.2.0, nhưng vẫn có vài điểm đáng chú ý.
Cụ thể, trong lần cập nhật này, kiểu dữ liệu chuỗi đã được phân thành hai loại: chuỗi dài và chuỗi ngắn. Các chuỗi dài (có độ dài vượt quá 40 byte) sẽ không còn bị “intern” nữa. Ban đầu tôi nghĩ đây là cải tiến nhỏ nhằm tối ưu hiệu năng, giúp giảm tính toán hash và chèn vào bảng băm trong các ứng dụng xử lý nhiều chuỗi. Tuy nhiên khi tìm hiểu kỹ hơn trên danh sách email của nhóm phát triển, tôi được biết đây thực chất là biện pháp tăng cường bảo mật, ngăn chặn kiểu tấn công gây tràn bộ nhớ thông qua việc tạo ra chuỗi gây va chạm hash (hash DoS). Cùng với đó, quá trình tính toán hash cho chuỗi cũng được thay đổi để sử dụng một giá trị khởi tạo ngẫu nhiên (random seed), giá trị này mặc định phụ thuộc vào thời gian hệ thống.
Điểm thay đổi này có thể gây ra hiện tượng trạng thái bộ nhớ của ứng dụng nhúng Lua thay đổi mỗi lần chạy, điều này tuy không ảnh hưởng đến đa số người dùng nhưng có thể gây khó khăn cho việc gỡ lỗi chương trình.
Tôi đã ghi lại những phát hiện thú vị này vào cuốn sách đang trong quá trình hoàn thiện mang tên “Ngắm Nghía Mã Nguồn Lua”. Trước đây đã viết được hai chương nhưng đành gián đoạn do bận việc. Hai chương mới hoàn thành trong vài ngày qua cũng đã được bổ sung vào sách. Vì muốn dành thời gian tổng hợp và chỉnh sửa toàn diện ở giai đoạn cuối, tôi quyết định xuất bản lẻ từng phần dưới dạng file PDF để bạn đọc
Bạn đọc quan tâm có thể tải bản PDF mới nhất tại đây [liên kết sẽ được chèn vào]. Những góp ý, phản hồi từ độc giả sẽ là động lực lớn để tôi tiếp tục hoàn thiện quyển sách này.