Các nhà quản lý gói Linux sẽ xử lý các mô-đun C ++ 20 như thế nào?


12

Chúng tôi đang ở vào năm 2020 và C ++ 20 sắp ra mắt, cùng với tính năng mô-đun C ++ được chờ đợi từ lâu. Nhưng sau khi xem một vài cuộc nói chuyện về CppCon, tôi thấy các mô-đun C ++ đang ở một nơi kỳ lạ, đặc biệt là đối với các nhà quản lý gói Linux (pacman, apt, emerge, v.v ...)

Từ những gì tôi đã học được, các mô-đun C ++ là

  1. Trình biên dịch phụ thuộc
    • Bạn không thể sử dụng một mô-đun được xây dựng bởi GCC ở Clang
    • Các mô-đun GCC 9.1 sẽ không hoạt động trên GCC 9.2
  2. Bạn có thể có nhiều phiên bản khác nhau của cùng một mô-đun
    • Miễn là chúng không được xuất vào cùng một phạm vi
  3. Bạn cần xây dựng lại một mô-đun nếu phụ thuộc của nó cập nhật

Vấn đề của tôi là, trong tất cả các trình biên dịch distro phát hành được cập nhật mọi lúc và người dùng có thể có bản dựng trình biên dịch riêng. Hiện tại người ta chỉ có thể cập nhật trình biên dịch hoặc cập nhật libstdc++. Nhưng với các mô-đun, dường như đề xuất libstdc++phải được cập nhật khi trình biên dịch cập nhật.

Trình quản lý gói sẽ xử lý cập nhật như thế nào, ví dụ, STL khi trình biên dịch cập nhật? Tôi không nghĩ việc xây dựng mọi phiên bản của mô-đun STL cho mọi phiên bản của trình biên dịch là khả thi. Người dùng cũng không phải xây dựng mô-đun STL của riêng họ là một ý tưởng tốt.


1
" Bạn không thể sử dụng một mô-đun được xây dựng bởi GCC ở Clang " Bạn không thể sử dụng các kết quả được biên dịch của một mô-đun được xây dựng bởi GCC ở Clang.
Nicol Bolas

1
Tôi không thể nắm bắt được vấn đề. Có thể phân phối các tệp mô-đun được biên dịch trước, nhưng nó không phải là bắt buộc. Mỗi người dùng có thể biên dịch chúng một lần cho mọi trình biên dịch / phiên bản và tất cả đều ổn. Nếu gói distro cung cấp các tệp được biên dịch trước đó, nó chỉ lưu một biên dịch duy nhất mà chúng ta hiện đang thực hiện trên mỗi biên dịch. Đâu là lợi ích để cung cấp các mô-đun được biên dịch trước? Tải xuống / Cài đặt có thể mất nhiều thời gian hơn khi biên dịch một lần.
Klaus

Những loại anawer nào bạn hình dung sẽ không phải là đầu cơ thuần túy?
n. 'đại từ' m.

@Klaus Chính xác, không có lợi ích. Nhưng hầu hết các ứng dụng được chia thành 2 phần. Một giao diện và lib cốt lõi. Vì vậy, mọi người có thể tương tác với các chức năng cốt lõi trực tiếp. Lấy yosys làm ví dụ. Nó được nhổ vào libyosys và yosys. Nếu libyosys quyết định sử dụng các mô-đun để xây dựng nhanh hơn, libyosys phải được xây dựng bởi mỗi người dùng. Hiệu quả biến mọi người quản lý gói thành AUR hoặc xuất hiện.
Mary Chang

@ n.'pronouns'm. Tôi đã hy vọng một nhà phát triển quản lý gói sẽ thấy câu hỏi và giải thích cách họ giải quyết vấn đề.
Mary Chang

Câu trả lời:


1

Cho đến nay (ngày 10 tháng 1 năm 2020), hệ thống mô-đun được coi là nhiều tính năng bên trong dự án hơn là thay thế phân phối tiêu đề / lib. Như những người trong cộng đồng Clang đề xuất, mặc dù có một đề xuất tạo ra một dạng AST độc lập của trình biên dịch, cả Clang và Gcc và Microsoft đều không có kế hoạch thực hiện điều này. Vì vậy, bạn đoán về

Bạn có thể có nhiều phiên bản khác nhau của cùng một mô-đun

là đúng và sẽ giữ yên trong một thời gian.

Là khía cạnh của nền tảng quản lý gói, độ phân giải vẫn chưa được biết, nhưng vì hệ thống mô-đun là một tính năng bên trong dự án, trường hợp xấu nhất là cách "tiêu đề / lib" vẫn sẽ diễn ra.

PS Tôi nghĩ stackoverflow không phải là nơi thích hợp cho những câu hỏi như thế này, nếu bạn thực sự muốn có câu trả lời, hãy hỏi danh sách thư này .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.