Việc phát hành Glibc 2.36 đã tạo ra sự gián đoạn đáng kể trong cộng đồng gaming Linux, khiến nhiều game không thể chơi được và làm bùng phát lại các cuộc tranh luận về tính ổn định của giao diện nhị phân ứng dụng (ABI) trên nền tảng này. Vấn đề xuất phát từ sự thay đổi trong cách GNU C Library xử lý bảng hash ký hiệu, ảnh hưởng đến các game sử dụng Easy Anti-Cheat ( EAC ) và Epic Online Services ( EOS ), cũng như các phần mềm khác.
Nguyên nhân kỹ thuật cốt lõi
Vấn đề tập trung xung quanh hai phương pháp cung cấp bảng hash ký hiệu trong định dạng ELF : DT_HASH và DT_GNU_HASH . Trong khi DT_HASH là một phần của SYSV generic ABI tiêu chuẩn và được tài liệu hóa tốt, thì DT_GNU_HASH là một phiên bản thay thế mới hơn, nhanh hơn nhưng thiếu tài liệu phù hợp. Trong nhiều năm, Glibc duy trì khả năng tương thích bằng cách bao gồm cả hai định dạng bảng hash, nhưng phiên bản 2.36 đã bỏ yêu cầu này, thay vào đó dựa vào các cài đặt mặc định có thể chỉ bao gồm biến thể GNU .
Thay đổi này đã làm hỏng một số game nổi tiếng bao gồm những game sử dụng bảo vệ EAC EOS , tựa game indie Shovel Knight , và các dự án mã nguồn mở như bộ giới hạn tốc độ khung hình libstrangle . Tác động dự kiến sẽ tăng lên khi nhiều bản phân phối chính thống hơn áp dụng Glibc 2.36 .
Lưu ý: ELF (Executable and Linkable Format) là định dạng tệp tiêu chuẩn cho các tệp thực thi và thư viện trên hệ thống Linux .
So sánh Hash Table
- DT_HASH: Thuộc về SYSV generic ABI, được tài liệu hóa tốt, là tiêu chuẩn bắt buộc
- DT_GNU_HASH: Phiên bản thay thế mới hơn, nhỏ hơn và nhanh hơn, tài liệu hóa kém
- Tiết kiệm không gian: Loại bỏ DT_HASH tiết kiệm ~16KB cho mỗi tệp nhị phân (ít hơn 1% tổng kích thước)
- Tương thích: GNU linker mặc định là "both", mold linker mặc định là "sysv"
Phản ứng cộng đồng và các giải pháp tạm thời
Cộng đồng gaming Linux đã phản ứng với những phản hồi trái chiều đối với sự phát triển này. Một số nhà phát triển cho rằng trọng tâm nên chuyển hoàn toàn sang việc đảm bảo các game hoạt động hoàn hảo thông qua Proton (lớp tương thích Windows của Valve ) thay vì duy trì các phiên bản Linux gốc. Quan điểm này phản ánh sự thất vọng ngày càng tăng với những thách thức của việc phát triển game Linux gốc.
Các nhà phát triển game nên tập trung 100% vào việc đảm bảo game của họ chạy hoàn hảo trên Proton thay vì phát hành một phiên bản Linux làm qua loa.
Những người khác ủng hộ các thực hành phát triển đa nền tảng tốt hơn ngay từ đầu, gợi ý rằng các nhà phát triển nên tránh các công nghệ đặc thù cho nền tảng như DirectX để ủng hộ các lựa chọn thay thế đa nền tảng như Vulkan . Tuy nhiên, thực tế là nhiều game hiện tại không thể dễ dàng được sửa đổi hoặc biên dịch lại để phù hợp với những thay đổi này.
Phần mềm bị ảnh hưởng
- Các game sử dụng Easy Anti-Cheat (EAC) và Epic Online Services (EOS)
- Shovel Knight (game indie)
- libstrangle (công cụ giới hạn tốc độ khung hình mã nguồn mở)
- Dự kiến sẽ có thêm nhiều phần mềm khác bị ảnh hưởng khi Glibc 2.36 được triển khai rộng rãi trên các bản phân phối chính
Những tác động rộng lớn hơn
Sự cố này làm nổi bật một căng thẳng cơ bản trong việc phát triển Linux giữa tiến bộ kỹ thuật và khả năng tương thích ngược. Mặc dù về mặt kỹ thuật, thay đổi này tiết kiệm không gian (khoảng 16KB mỗi tệp nhị phân) và không được coi là một sự phá vỡ ABI chính thức, nhưng nó có hậu quả thực tế đối với người dùng và nhà phát triển. Tình huống trở nên phức tạp bởi thực tế là các bản phân phối khác nhau có thể xử lý thay đổi này theo cách khác nhau, có khả năng làm tăng sự phân mảnh.
Cuộc tranh cãi này cũng nhấn mạnh lý do tại sao một số nhà phát triển thấy việc phát triển Windows dễ dự đoán hơn, bất chấp những ưu thế kỹ thuật của Linux . Thú vị là, một số thành viên cộng đồng lưu ý rằng Proton đôi khi cung cấp hiệu suất game tốt hơn so với Windows gốc, trích dẫn các ví dụ như Elden Ring nơi các bản sửa lỗi dịch DirectX 12 được triển khai nhanh hơn trong VKD3D của Wine so với trong chính Windows .
Kết luận
Tình huống Glibc 2.36 đóng vai trò như một lời nhắc nhở về những thách thức đang diễn ra mà Linux phải đối mặt với tư cách là một nền tảng gaming. Mặc dù những ưu điểm kỹ thuật của thay đổi này có thể tranh luận được, tác động của nó đối với phần mềm hiện có cho thấy sự cân bằng tinh tế giữa đổi mới và ổn định trong các hệ sinh thái mã nguồn mở. Khi bối cảnh gaming Linux tiếp tục phát triển, sự cố này có thể đẩy nhanh xu hướng hướng tới các lớp tương thích như Proton thay vì phát triển gốc, thay đổi cơ bản cách các game tiếp cận người dùng Linux .
Tham khảo: Win32 Is The Only Stable ABI on Linux
