3 điểm bởi GN⁺ 2024-07-31 | 1 bình luận | Chia sẻ qua WhatsApp
  • Dịch C sang Rust (TRACTOR)

    • Dr. Dan Wallach
    • Sau hơn 20 năm nỗ lực giải quyết các vấn đề an toàn bộ nhớ của C và C++, cộng đồng kỹ nghệ phần mềm đã đi đến một kết luận
    • Chỉ dựa vào các công cụ tìm lỗi là không đủ
    • Ưu tiên sử dụng các ngôn ngữ lập trình “an toàn” có thể từ chối các chương trình không an toàn tại thời điểm biên dịch
    • Chương trình TRACTOR nhằm mục tiêu tự động dịch mã C hiện có sang Rust
    • Mục tiêu là đạt được chất lượng và phong cách tương đương với mã do một lập trình viên Rust lành nghề viết ra, qua đó loại bỏ các lỗ hổng bảo mật về an toàn bộ nhớ phát sinh từ chương trình C
    • Chương trình này có thể bao gồm một tổ hợp mới giữa phân tích tĩnh, phân tích động và các kỹ thuật học máy như mô hình ngôn ngữ lớn
    • Có thể xem thêm thông tin trong thông báo đặc biệt về TRACTOR trên SAM.Gov
  • Những thành tựu nổi bật của DARPA

    • Cuộc cách mạng tàng hình

      • Trong giai đoạn đầu nghiên cứu công nghệ tàng hình của DARPA, Have Blue, nguyên mẫu của F-117A, đã lần đầu bay thành công vào năm 1977
      • Thành công của chương trình F-117A đã đánh dấu sự khởi đầu của cuộc cách mạng tàng hình, mang lại lợi ích to lớn cho an ninh quốc gia
    • Điều hướng trong lòng bàn tay

      • Các máy thu GPS ban đầu là những thiết bị lớn và nặng
      • Năm 1983, DARPA đã nỗ lực thu nhỏ chúng, qua đó thúc đẩy việc áp dụng GPS trên quy mô rộng lớn hơn nhiều
    • Mở đường cho Internet hiện đại

      • Nghiên cứu của ARPA đã đóng vai trò quan trọng trong việc khởi đầu cuộc cách mạng thông tin
      • Tổ chức này đã phát triển nền tảng khái niệm của ARPANET và phát minh ra các giao thức số, dẫn tới sự ra đời của Internet
  • Tóm tắt của GN⁺

    • Chương trình TRACTOR là một nỗ lực quan trọng nhằm giải quyết vấn đề an toàn bộ nhớ bằng cách tự động dịch mã C hiện có sang Rust
    • Nghiên cứu của DARPA đã đóng góp lớn cho sự phát triển của công nghệ hiện đại, bao gồm công nghệ tàng hình, thu nhỏ GPS và sự ra đời của Internet
    • Bài viết này có thể hữu ích với các kỹ sư phần mềm và những người quan tâm đến lịch sử công nghệ
    • Các dự án có chức năng tương tự bao gồm Checked C của Microsoft và ngôn ngữ Carbon của Google

1 bình luận

 
GN⁺ 2024-07-31
Ý kiến trên Hacker News
  • Rust do lập trình viên lành nghề viết ra rất khác với C, và phần lớn mã thú vị lại được viết bằng C++

    • Việc xác định tĩnh toàn bộ vòng đời cấp phát của một chương trình C là một bài toán rất khó
    • Chương trình C/C++ có thể gắn vòng đời cấp phát với các sự kiện như thao tác nhấp chuột của người dùng
    • Nếu chương trình được phân tích có lỗi, thì khái niệm vòng đời có thể không còn ý nghĩa
    • Các nghiên cứu hiện có giả định mã được phân tích là đúng
  • Việc đề xuất này được công khai là điều khá thú vị

    • Tôi đang cố điều chỉnh kỳ vọng về tính khả thi của dịch tự động
    • Mã nguồn C chứa ít thông tin hơn mã nguồn Rust
    • Không thể tạo ra thông tin đang bị thiếu
    • Để suy luận chính xác cần có phán đoán, và điều đó có thể phát sinh lỗi
    • Dự án có thể thành công ở một mức độ nào đó, nhưng cần tiếp cận thận trọng
    • Mong rằng dự án của chính phủ này sẽ không bị diễn giải thành sự chỉ trích toàn diện với C hoặc lời ca ngợi toàn diện dành cho Rust
  • Tôi không thích tư duy kiểu "hãy viết lại cả thế giới bằng Rust"

    • Khi port một dự án sang ngôn ngữ hay nền tảng mới, dịch máy móc không phải là cách hay
    • Cần dành thời gian để lên kế hoạch cho kiến trúc tốt hơn và thiết kế hệ thống phần mềm
    • Nếu đã quyết định dùng Rust thì nên viết bằng Rust
    • Tốt hơn là cập nhật C lên C hiện đại và dùng model checker để xác minh độ an toàn của bộ nhớ, tài nguyên và phép toán số nguyên
  • Nhiều người đang hiểu dự án này như một lời kêu gọi dịch mã C và C++ sang Rust

    • C và C++ về bản chất là không an toàn
    • Nên dịch hoặc viết càng nhiều mã càng tốt bằng ngôn ngữ an toàn
    • Tôi ủng hộ phần mềm dịch mã C hiện có sang Rust
    • Mục tiêu không phải là sự đồng thuận rằng phải viết lại cả thế giới bằng Rust, mà là hướng tới việc di chuyển sang các ngôn ngữ an toàn
  • Có vấn đề trong việc duy trì codebase đã được dịch

    • Cần một codebase viết bằng C và một đội ngũ kỹ sư C có thể bảo trì nó
    • Codebase Rust được dịch tự động có thể khó đọc và khó hiểu hơn bản gốc
    • Cần một đội ngũ kỹ sư Rust
    • Nếu đã có kỹ sư Rust rồi thì viết lại mã thủ công sẽ tốt hơn
  • Một chương trình port tự động phải bao gồm mọi khả năng có thể làm cho mã C trở nên an toàn

    • Nếu Rust không có lỗi bộ nhớ và có thể tự động dịch từ C, thì có nghĩa là mọi lỗi bộ nhớ đều có thể được tự động sửa
    • Điều này nhìn chung là bất khả thi
  • Tốt hơn hết là trước tiên nên tuyển dụng các kỹ sư giỏi đã bị Mozilla sa thải để họ tiếp tục làm việc với chính ngôn ngữ này

    • Xử lý bất đồng bộ vẫn chưa thực sự hoàn thiện
    • Vẫn còn nhiều vấn đề khác nhau
  • DARPA thúc đẩy bài toán này là điều đáng mừng

    • Việc dịch sang Rust an toàn là rất khó
    • Hiện đã có các công cụ dịch từ C sang Rust, nhưng kết quả khó bảo trì
    • Để làm đúng thì cần giải quyết các vấn đề về kích thước mảng và cách dùng con trỏ phi tuyến tính