Protobuf sẽ bỏ hỗ trợ Objective-C từ phiên bản 38

Nhánh 37.x tiếp tục hỗ trợ Objective-C tới quý I/2028, trong khi CocoaPods chuẩn bị chuyển sang chỉ đọc; đội iOS cần rà soát cả mã sinh lẫn runtime.

Protobuf sẽ bỏ hỗ trợ Objective-C từ phiên bản 38

Protocol Buffers ngày 21/10/2026 thông báo sẽ ngừng hỗ trợ Objective-C từ phiên bản 38. Nhánh hỗ trợ dài hạn 37.x vẫn duy trì Objective-C tới quý I/2028. Đây là thay đổi lộ trình của một thư viện truyền và lưu dữ liệu, có thể ảnh hưởng đến những ứng dụng iOS còn dùng mã Objective-C được sinh từ tệp .proto.

Thông báo không nói ứng dụng hiện tại sẽ lập tức ngừng chạy. Nó đặt ra một mốc để đội phát triển xác định phần mềm đang phụ thuộc ở đâu và còn bao lâu để chọn phương án duy trì hoặc chuyển đổi.

Điều gì thay đổi trong thông báo mới?

Nhóm Protobuf liên hệ quyết định với việc CocoaPods chuyển sang chỉ đọc ngày 2/12/2026. Dự án cũng cho biết chưa có kế hoạch phát hành phần hỗ trợ Objective-C qua Swift Package Manager, viện dẫn nhu cầu thấp và vấn đề hỗ trợ mã không dùng ARC.

Cần đọc riêng hai mốc: tháng 12 là thay đổi của hạ tầng phân phối CocoaPods; quý I/2028 là giới hạn hỗ trợ Objective-C được Protobuf công bố cho nhánh 37.x. Hai sự kiện liên quan nhưng không đồng nghĩa tất cả bản dựng CocoaPods bị vô hiệu trong tháng 12.

Thông tin mới cũng không phải quyết định chấm dứt ngôn ngữ Objective-C trên nền tảng Apple. Phạm vi của nó là hỗ trợ Objective-C trong Protocol Buffers, không bao trùm mọi thư viện hoặc ứng dụng viết bằng ngôn ngữ này.

Vì sao một thư viện dữ liệu chạm tới quy trình phát hành?

Tài liệu tổng quan Protobuf mô tả hệ thống gồm định nghĩa dữ liệu, trình biên dịch sinh mã và thư viện runtime cho từng ngôn ngữ. Nhóm phát triển khai báo cấu trúc trong tệp .proto, sau đó sinh những lớp cho phép đọc và ghi dữ liệu có cấu trúc.

Một ứng dụng vì vậy không chỉ có một gói mang tên Protobuf. Nó có thể chứa mã đã sinh nằm trong repository, công cụ sinh mã tại CI và runtime được kéo về lúc dựng. Thay đổi một phần mà bỏ sót các phần còn lại dễ tạo ra phiên bản không đồng bộ.

Đây là lý do nên rà soát đến từng sản phẩm phát hành. Một SDK bên ngoài có thể mang theo mã sinh Objective-C dù phần giao diện chính của ứng dụng đã viết bằng Swift. Nhìn riêng tỷ lệ ngôn ngữ trong mã nội bộ có thể bỏ sót phụ thuộc gián tiếp.

CocoaPods đã ở chế độ bảo trì từ trước

Kế hoạch bảo trì CocoaPods công bố năm 2024 cho thấy tiến trình này không bắt đầu đột ngột trong tuần này. Nhóm duy trì nói rõ dự án tập trung giữ hệ thống hoạt động và xử lý các vấn đề thiết yếu, thay vì phát triển thêm những khả năng lớn.

Với người dùng, cần phân biệt dịch vụ đăng ký và phân phối phiên bản với mã thư viện đã được đưa vào một bản dựng. Chuyển hạ tầng sang chỉ đọc không tự viết lại ứng dụng đã cài trên điện thoại. Rủi ro nằm nhiều hơn ở khả năng nhận phiên bản mới và duy trì chuỗi công cụ trong tương lai.

Do đó, chuyển tên trình quản lý gói chưa chắc giải quyết xong vấn đề. Riêng trong thông báo này, Protobuf nói chưa định đưa hỗ trợ Objective-C lên SwiftPM. Không nên lập kế hoạch dựa trên giả định sẽ có một gói thay thế tương đương do dự án cung cấp.

Rà soát mã sinh và runtime trước khi chọn phương án

Tài liệu tương thích runtime cảnh báo rằng mã sinh bằng công cụ mới không được ghép với runtime cũ hơn nó. Những cách ghép ngoài cam kết hỗ trợ có thể tạo lỗi khó tái hiện, kể cả khi một bản dựng ban đầu có vẻ chạy bình thường.

Đội phát triển nên lập danh mục tệp .proto, phiên bản công cụ sinh mã, runtime và SDK sử dụng chúng. Với từng đường dữ liệu quan trọng, cần có kiểm thử đọc lại dữ liệu đã lưu và giao tiếp với các phiên bản dịch vụ còn hoạt động. Đây là khuyến nghị kỹ thuật từ cấu trúc phụ thuộc, không phải yêu cầu di chuyển tức thời của thông báo.

Giữ nhánh 37.x có thể là bước chuyển tiếp theo lịch hỗ trợ đã công bố. Lựa chọn dài hạn cần dựa trên khả năng thay thư viện, giao diện SDK và chi phí kiểm thử của từng ứng dụng; bài viết không xác nhận có một đường chuyển đổi tự động phù hợp cho mọi dự án.

Mốc quý I/2028 tạo thời gian chuẩn bị, nhưng kế hoạch đáng tin phải chỉ rõ thành phần nào cần thay và cách xác nhận dữ liệu vẫn tương thích. Chờ đến khi một bản dựng không còn nhận được cập nhật mới bắt đầu kiểm kê sẽ khiến lựa chọn bị thu hẹp.

Nguồn và sơ đồ minh họa

Nguồn: thông báo 21/10, tổng quan Protobuf, cam kết tương thích và kế hoạch bảo trì CocoaPods. Các tài liệu nền được dùng giải thích cơ chế, không được coi là tin mới ngày 21/10.

Ảnh là sơ đồ quy trình Protobuf từ tài liệu chính thức, không phải hình lộ trình Objective-C. Bản quyền 2021 Google Inc.; sử dụng theo giấy phép BSD và đầy đủ thông báo bản quyền của kho tài liệu, không chỉnh sửa sơ đồ.

Chia sẻ