SOML đề xuất định dạng cấu hình dễ viết nhưng vẫn chặt chẽ

Công nghệ03 tháng 11, 2026·4 phút đọc

SOML là định dạng cấu hình mới, kết hợp cú pháp gọn nhẹ với quy tắc kiểu dữ liệu rõ ràng, nhằm tránh những cách diễn giải khác nhau giữa các bộ phân tích. Đặc tả hiện ở trạng thái bản nháp, đi kèm bộ kiểm thử tương thích gần 1.000 trường hợp và các bản triển khai cho nhiều ngôn ngữ lập trình.

SOML đề xuất định dạng cấu hình dễ viết nhưng vẫn chặt chẽ

SOML là định dạng cấu hình mới hướng đến việc dễ đọc, dễ soạn thảo mà không đánh đổi tính nhất quán. Dự án giữ mô hình dữ liệu và sự nghiêm ngặt của JSON, đồng thời bổ sung chú thích, chuỗi nhiều dòng và các kiểu ngày giờ, khoảng thời gian riêng biệt.

Đặc tả SOML hiện vẫn là bản nháp và đang tiếp nhận phản hồi. Mục tiêu của dự án là để cùng một tệp luôn được hiểu giống nhau, bất kể công cụ nào đọc nó.

Cú pháp gọn, kiểu dữ liệu rõ ràng

Trong SOML, đối tượng ở cấp cao nhất không cần dấu ngoặc nhọn, tên khóa thường không cần đặt trong dấu nháy và xuống dòng có thể thay dấu phẩy để phân tách giá trị. Chú thích được phép xuất hiện ở nhiều vị trí; chuỗi nguyên văn giúp ghi đường dẫn hoặc biểu thức chính quy mà không phải xử lý ký tự thoát.

Nguyên tắc cốt lõi là kiểu dữ liệu được xác định bằng cú pháp, không suy đoán từ nội dung. Vì vậy, '123' là chuỗi còn 123 là số nguyên; 3 và 3.0 cũng là hai kiểu khác nhau. Nếu một giá trị không có dấu nháy nhưng không khớp cú pháp của số, ngày, thời điểm, khoảng thời gian hay từ khóa được hỗ trợ, tệp sẽ báo lỗi thay vì tự đổi kiểu.

SOML định nghĩa các kiểu riêng cho ngày lịch, thời điểm và khoảng thời gian. Chẳng hạn, 2026-09-19 là ngày, 2026-09-19T14:00:00Z là thời điểm, còn 30s biểu thị khoảng thời gian 30 giây. Cách viết này giúp người đọc không phải tự đoán đơn vị của một giá trị như thời hạn chờ.

Định dạng còn hỗ trợ chuỗi nhiều dòng được căn lề theo dấu đóng, mảng và đối tượng lồng nhau. Cấu trúc được xác định bằng dấu ngoặc và xuống dòng, không phụ thuộc vào thụt lề; ngoại lệ là bên trong chuỗi nhiều dòng, nơi khoảng trắng thuộc về nội dung.

Hướng đến tính nhất quán giữa các công cụ

SOML quy định rõ một số trường hợp có thể gây khác biệt giữa các bộ phân tích: khóa trùng lặp, số vượt phạm vi và ký tự thay thế không hợp lệ đều là lỗi. Số nguyên được giới hạn chính xác trong 64 bit; số lớn hơn sẽ bị từ chối.

Định dạng cũng có biểu diễn chuẩn hóa: các giá trị tương đương tạo ra cùng một chuỗi byte, hữu ích khi băm, ký hoặc so sánh dữ liệu. Bộ định dạng được quy định trong đặc tả và giữ lại chú thích, thứ tự khóa cùng cách viết giá trị trong tệp.

Theo dự án, ngữ pháp được thiết kế để xử lý một lượt, không cần nhìn trước. Các bản triển khai dùng chung bộ kiểm thử tương thích trung lập với ngôn ngữ, gồm gần 1.000 trường hợp. Danh sách triển khai được nêu trong dự án có JavaScript, Swift, Rust, Python, Go, Ruby, C++, C, C#, Java, Kotlin, Dart, PHP và Zsh.

Khác biệt với JSON, YAML và TOML

JSON có cấu trúc rõ ràng nhưng yêu cầu dấu ngoặc nhọn, dấu phẩy và dấu nháy quanh khóa, đồng thời không hỗ trợ chú thích. SOML hướng đến cách viết ít ký tự hơn trong khi vẫn giữ quy tắc kiểu dữ liệu tường minh.

YAML cho phép viết gọn và có chú thích, nhưng một số giá trị không đặt trong dấu nháy có thể được diễn giải thành kiểu khác tùy quy tắc hoặc bộ phân tích. SOML tránh việc đó bằng cách yêu cầu cú pháp xác định kiểu; chẳng hạn, một từ không phải từ khóa hợp lệ sẽ không tự biến thành giá trị đúng hoặc sai.

TOML cũng có quy tắc kiểu dữ liệu tường minh, nhưng tổ chức bảng dựa trên các tiêu đề và khóa phân cấp. SOML chọn cấu trúc đối tượng bằng dấu ngoặc, hỗ trợ mảng ở cấp cao nhất và cho phép xuống dòng thay dấu phẩy trong mảng nhiều dòng.

Góc nhìn

Với nhóm phát triển thường xuyên chỉnh sửa tệp cấu hình bằng tay, SOML đặt trọng tâm vào việc giảm lỗi do kiểu dữ liệu bị suy đoán hoặc do các công cụ diễn giải khác nhau. Các kiểu ngày giờ và khoảng thời gian riêng cũng giúp cấu hình thể hiện ý nghĩa rõ hơn thay vì lưu mọi thứ thành chuỗi hoặc số không kèm đơn vị.

Dù vậy, đây vẫn là một định dạng ở giai đoạn bản nháp, với hệ sinh thái thư viện mới hình thành. Các nhóm cân nhắc sử dụng cần theo dõi mức độ hoàn thiện của đặc tả và khả năng hỗ trợ trong những công cụ họ đang dùng.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗