Sẽ ra sao nếu file thực thi binary của bạn lại chính là một database SQLite?

Sẽ ra sao nếu bạn có thể chmod +x một database SQLite và chạy trực tiếp nó như một file thực thi hệ thống?

Lập trình viên Farhaan Zakaria vừa dựng nên SELF (Structured Executable & Linkable Format), một bản prototype thay thế các file binary ELF tiêu chuẩn bằng database SQLite. Thay vì cần công cụ đọc file riêng, các lệnh như ./hello vẫn chạy bình thường, còn muốn soi symbol table hay load segment thì cứ dùng query sqlite3 chuẩn là xong. Dự án phát triển tiếp từ sqlelf, công cụ trước đó của anh từng dùng bảng ảo SQL để query các file ELF hiện có.

Vì sao lại quan trọng: Các file ELF truyền thống vốn hoạt động chẳng khác nào một database tự chế, phải tự cài đặt thủ công string interning, B-tree và bloom filter. Chuyển sang SQLite giúp file thực thi có một schema tự mô tả ổn định và tự động bảo trì index. Sửa file binary giờ chỉ là viết vài dòng SQL; muốn cắt bỏ các phần phụ thì đơn giản là chạy câu query DELETE rồi VACUUM.

Tóm lại là: Một file binary SELF chỉ cần hai bảng cốt lõi để chạy: self_meta cho các cặp key-value ở header và segments cho dữ liệu byte của chương trình. Kiểm tra các thư viện liên kết giờ gói gọn trong một câu query đơn giản: SELECT soname FROM ldd.

Việc soi file binary có thể sắp chuyển từ ngồi loay hoay với readelfgrep sang mở một shell database.