Người bảo trì Git Patrick Steinhardt đã công bố kế hoạch đưa Rust vào codebase cốt lõi của Git , với Git 3.0 sẽ biến Rust thành yêu cầu bắt buộc cho việc build. Đề xuất này đã gây ra cuộc thảo luận sôi nổi trong cộng đồng về khả năng tương thích nền tảng và hướng phát triển tương lai của một trong những công cụ phát triển thiết yếu nhất thế giới.
Thông báo này được đưa ra như một quả bóng thử nghiệm - một cách để đánh giá phản ứng của cộng đồng trước khi cam kết hoàn toàn với thay đổi này. Steinhardt , người làm việc với tư cách là quản lý kỹ thuật tại GitLab và là một contributor thường xuyên của Git , đã bắt đầu với việc chuyển đổi đơn giản hệ thống con varint của Git sang Rust như một bằng chứng khái niệm.
Các thay đổi dự kiến trong Git 3.0:
- Rust trở thành bắt buộc để xây dựng Git
- SHA-256 trở thành thuật toán hash mặc định
- Dự kiến sẽ có những thay đổi phá vỡ tính tương thích
- Lịch trình chưa được hoàn thiện
Mối Quan Ngại Về Khả Năng Tương Thích Nền Tảng Thúc Đẩy Cuộc Tranh Luận Lớn
Các cuộc thảo luận sôi nổi nhất tập trung xung quanh các nền tảng không thể hỗ trợ biên dịch Rust . Một số hệ thống độc quyền, đặc biệt là nền tảng NonStop của IBM được sử dụng trong dịch vụ tài chính, dựa vào các trình biên dịch C đặc thù của nhà cung cấp mà không có hỗ trợ LLVM hoặc GCC . Điều này tạo ra thách thức đáng kể vì Rust phụ thuộc vào các backend trình biên dịch hiện đại này.
Các thành viên cộng đồng chia rẽ về cách xử lý hạn chế này. Một số cho rằng các nền tảng cũ nên thích ứng hoặc chấp nhận bị bỏ lại phía sau, trong khi những người khác lo ngại về những tác động rộng hơn đối với khả năng tiếp cận phổ quát của Git . Sự phụ thuộc của ngành tài chính vào các hệ thống này làm tăng thêm sự phức tạp cho cuộc tranh luận, vì cơ sở hạ tầng xử lý thẻ tín dụng và ngân hàng thường chạy trên các nền tảng như vậy.
Thật tệ cho nền tảng đó? Nghiêm túc mà nói, tôi đoán họ chỉ phải sống mà không có git nếu họ không sẵn sàng đảm nhận việc hỗ trợ cho chuỗi công cụ của nó.
Các giải pháp kỹ thuật đang được khám phá, bao gồm các backend Rust thử nghiệm biên dịch thành mã C và các công cụ dịch WebAssembly sang C . Tuy nhiên, các giải pháp thay thế này vẫn chưa được kiểm tra nhiều cho việc sử dụng trong sản xuất.
Các Tầng Hỗ Trợ Nền Tảng của Rust:
- Tầng 1: Đảm bảo hoạt động (x86-64, ARM64 trên các hệ điều hành chính)
- Tầng 2: Đảm bảo build được (nhiều nền tảng bổ sung)
- Tầng 3: Hỗ trợ tối đa có thể (bao gồm các target thử nghiệm như PlayStation, N64)
- Không được hỗ trợ: Các nền tảng compiler độc quyền ( NonStop , một số hệ thống nhúng)
Tác Động Đến Trải Nghiệm Phát Triển và Đường Cong Học Tập
Thay đổi này đặt ra câu hỏi về khả năng tiếp cận của Git đối với các contributor. Hiện tại, Git sử dụng nhiều ngôn ngữ bao gồm C , Shell , Perl và Python , nhưng C vẫn là ngôn ngữ chính cho chức năng cốt lõi. Việc thêm Rust như một thành phần bắt buộc có nghĩa là các contributor tương lai sẽ cần quen thuộc với cả hai ngôn ngữ.
Một số nhà phát triển bày tỏ lo ngại về sự phức tạp tăng lên và thời gian build dài hơn. Những người khác cho rằng các tính năng an toàn và công cụ hiện đại của Rust cuối cùng sẽ có lợi cho khả năng bảo trì và bảo mật lâu dài của dự án.
Quá trình chuyển đổi có vẻ được thiết kế để diễn ra từ từ, với đề xuất hiện tại chỉ ảnh hưởng đến cơ sở hạ tầng build thay vì yêu cầu tất cả mã mới phải được viết bằng Rust ngay lập tức.
Thành phần ngôn ngữ hiện tại của Git:
- C: 50%
- Shell: 38%
- Perl: 4%
- TCL: 4%
- Python: 1%
- Khác: 3%
Thời Điểm Chiến Lược và Bối Cảnh Ngành
Động thái này diễn ra khi Git chuẩn bị cho phiên bản 3.0, cũng sẽ biến SHA-256 thành thuật toán hash mặc định. Thời điểm này cho thấy các người bảo trì Git coi đây là cơ hội để hiện đại hóa toàn bộ chuỗi công cụ trong khi việc phá vỡ tương thích đã được mong đợi.
Quyết định này phản ánh xu hướng rộng hơn của ngành hướng tới các ngôn ngữ an toàn bộ nhớ, tương tự như các sáng kiến trong nhân Linux và các dự án cơ sở hạ tầng quan trọng khác. Tuy nhiên, vai trò của Git như công cụ phát triển thiết yếu làm cho khả năng tương thích nền tảng đặc biệt quan trọng so với phần mềm chuyên biệt hơn.
Phản ứng của cộng đồng có thể sẽ ảnh hưởng đến việc liệu đề xuất này có tiến hành theo kế hoạch hay cần sửa đổi để giải quyết các mối quan ngại về tương thích. Là một trong những công cụ phát triển được sử dụng rộng rãi nhất toàn cầu, các lựa chọn ngôn ngữ của Git có tác động sâu rộng đối với toàn bộ hệ sinh thái phát triển phần mềm.
Tham khảo: [PATCH RFC 0/3] Introduce Rust and announce that it will become mandatorty