2010-12-12 25 views
5

Apple đang đẩy LLVM và Clang rất nhiều. Tin đồn nói rằng đó là bởi vì Apple muốn thả GCC (do vấn đề với giấy phép GPLv3), và chuyển sang Clang.Tôi có nên bắt đầu nhắm mục tiêu Clang/LLVM với dự án C++ iPhone của mình không?

Bất kỳ ai có bất kỳ ý tưởng nào về thời điểm điều đó sẽ xảy ra?

Tôi đang bắt đầu dự án C++ mà tôi dự định cổng trên iPhone và không biết tôi có nên sử dụng tính năng C++ 0x hay không (hoặc ít nhất là hỗ trợ bởi Clang) hoặc nếu tôi nên viết mã tương thích với GCC 4.1 ...

+0

Cho đến nay, Clang chỉ hỗ trợ một vài tính năng C++ 0x, tôi không nghĩ rằng nó hỗ trợ mọi thứ không hỗ trợ GCC. – delnan

+0

Vâng, Apple sử dụng GCC 4.1 và Clang trưởng thành hơn (ít nhất là đối với các tính năng được hỗ trợ) so với GCC 4.1. – peoro

+0

Ngoại trừ Apple sử dụng GCC 4.2.1 không 4.1. – jer

Trả lời

13

Tin đồn nói đó là vì Apple muốn thả GCC (do vấn đề với GPLv3 giấy phép ), và chuyển sang Clang.

Đây không phải là tin đồn, đây là vị trí được Apple công bố. Giấy phép GPL trên GCC ngăn Apple tích hợp triệt để trình biên dịch/phân tích cú pháp trong các công cụ phát triển của họ. Với Clang/LLVM, họ không có hạn chế như vậy và do đó có thể làm nhiều hơn với các công cụ của họ (bắt đầu với tích hợp phân tích tĩnh tĩnh trong Xcode 3.2 và đi xa hơn với Xcode 4). Ngoài các vấn đề cấp phép, Clang/LLVM xây dựng nhanh hơn nhiều so với GCC và trong các tiêu chuẩn của Apple (và kinh nghiệm của riêng tôi) tạo ra các tệp thực thi có hiệu suất tốt hơn so với GCC. Nó tạo ra các thông báo lỗi hữu ích hơn rất nhiều. Nó được xây dựng theo kiểu mô-đun, điều này cũng giúp dễ dàng duy trì và mở rộng hơn GCC trong tương lai.

Apple đã tuyên bố rằng tất cả các tính năng C++ ngoại trừ mẫu được xuất đều được hỗ trợ trong LLVM Compiler 2.0 sắp tới trong Xcode 4 và trình biên dịch đã tự lưu trữ trong một thời gian ngắn. Nếu bạn không thể chờ đợi, hoặc không muốn thử xem trước nhà phát triển Xcode 4, bạn có thể kiểm tra trình biên dịch ngay bây giờ bằng cách lấy mã nguồn từ main LLVM site.

Tôi khuyên bạn nên xem tự do có sẵn WWDC 2010 videos cho phiên 300 - "Công cụ nhà phát triển của Liên minh" và phiên 312 - "Có gì mới trong trình biên dịch LLVM" nơi họ trình bày những gì họ đang làm việc với trình biên dịch LLVM .

Thời gian khôn ngoan, chỉ có Apple mới có thể cho bạn biết khi nào họ sẽ làm điều gì đó và thậm chí họ không thể biết chính xác thời điểm nào đó sẽ sẵn sàng cho giờ vàng. Bạn có thể thực hiện các dự đoán được giáo dục dựa trên quỹ đạo cải tiến của bản xem trước nhà phát triển Xcode, nhưng đó là tất cả. Tuy nhiên, Clang/LLVM là cách mà Apple đi, vậy tại sao không lên kế hoạch cho điều đó?

+0

Câu trả lời hay. Ngoài ra, Xcode 3.2.5 sử dụng LLVM 1.6 (tăng từ 1.5 trong các phiên bản 3.2.x trước đó). – rjstelling

+0

thực sự, từ điểm chuẩn Phoronix, có vẻ như các tệp nhị phân được tạo bởi gcc 4.6 hoạt động tốt hơn Clang với biên độ tốt. Nhưng tôi có hy vọng :) –

+0

@Matthieu - Tôi đã thấy những điểm chuẩn tương tự, khó mà hòa giải với các tiêu chuẩn OpenSSL của Apple trên Mac (cho thấy hiệu suất tăng 5% -25% khi so sánh với GCC) và trên iPhone (hiển thị Tăng hiệu suất 12% -60%). Apple sử dụng một bản dựng GCC tùy chỉnh, vì vậy có lẽ không theo kịp với các phiên bản trình biên dịch mới nhất, hoặc có thể có sự khác biệt về thiết lập của Phoronix. Nó cũng xuất hiện rằng Phoronix mình đã bị chỉ trích: http://www.osnews.com/thread?449249, mặc dù tôi không thấy bất cứ điều gì rõ ràng là sai với các bài kiểm tra. –

Các vấn đề liên quan