Ringkasan: Alasan utama untuk beralih dari GCC ke Dentang adalah ketidakcocokan lisensi GPL v3 GCC dengan tujuan proyek FreeBSD . Ada juga masalah politik yang berkaitan dengan investasi perusahaan, serta persyaratan basis pengguna. Akhirnya, ada keuntungan teknis yang diharapkan berkaitan dengan kepatuhan standar dan kemudahan debugging. Peningkatan kinerja dunia nyata dalam kompilasi dan eksekusi bersifat spesifik kode dan dapat diperdebatkan; case dapat dibuat untuk kedua kompiler.
FreeBSD dan GPL: FreeBSD memiliki hubungan yang tidak mudah dengan GPL. Pendukung lisensi BSD percaya bahwa perangkat lunak yang benar-benar gratis tidak memiliki batasan penggunaan . Pendukung GPL percaya bahwa pembatasan diperlukan untuk melindungi kebebasan perangkat lunak, dan khususnya bahwa kemampuan untuk membuat perangkat lunak tidak bebas dari perangkat lunak bebas adalah bentuk kekuatan yang tidak adil daripada kebebasan. Proyek FreeBSD, jika memungkinkan, mencoba menghindari penggunaan GPL :
Karena kompleksitas tambahan yang dapat berkembang dalam penggunaan komersial perangkat lunak GPL, kami berupaya untuk mengganti perangkat lunak tersebut dengan pengiriman di bawah lisensi FreeBSD yang lebih santai bila memungkinkan.
FreeBSD dan GPL v3: The GPL v3 secara eksplisit melarang apa yang disebut Tivoisation kode, celah di v2 GPL yang memungkinkan pembatasan hardware untuk melarang modifikasi software dinyatakan legal oleh pengguna. Menutup celah ini adalah langkah yang tidak dapat diterima bagi banyak orang di komunitas FreeBSD:
Vendor peralatan khususnya memiliki kerugian terbesar jika sejumlah besar perangkat lunak yang saat ini dilisensikan di bawah GPLv2 hari ini bermigrasi ke lisensi baru. Mereka tidak lagi memiliki kebebasan untuk menggunakan perangkat lunak GPLv3 dan membatasi modifikasi perangkat lunak yang diinstal pada perangkat keras mereka ... Singkatnya, ada basis besar konsumen OpenSource yang tiba-tiba sangat tertarik untuk memahami alternatif untuk perangkat lunak berlisensi GPL.
Karena kepindahan GCC ke GPL v3, FreeBSD terpaksa tetap menggunakan GCC 4.2.1 (GPL v2), yang dirilis pada 2007 , dan sekarang sudah ketinggalan zaman. Fakta bahwa FreeBSD tidak bergerak untuk menggunakan versi GCC yang lebih modern, bahkan dengan sakit kepala pemeliharaan tambahan untuk menjalankan kompiler lama dan perbaikan backporting, memberikan beberapa gagasan tentang kekuatan persyaratan untuk menghindari GPL v3. Kompiler C adalah komponen utama basis FreeBSD, dan " salah satu tujuan (sementara) untuk FreeBSD 10 adalah sistem basis bebas GPL ".
Investasi perusahaan: Seperti banyak proyek open source besar lainnya, FreeBSD menerima pendanaan dan pekerjaan pengembangan dari perusahaan. Meskipun sejauh mana FreeBSD didanai atau diberikan pengembangan oleh Apple tidak mudah ditemukan, ada banyak tumpang tindih karena OS Darwin dari Apple menggunakan kode kernel yang berasal dari BSD . Selain itu, Clang sendiri awalnya merupakan proyek Apple in-house, sebelum menjadi open-source pada tahun 2007 . Karena sumber daya perusahaan adalah pendukung utama proyek FreeBSD, memenuhi kebutuhan sponsor mungkin merupakan pendorong dunia nyata yang signifikan .
Userbase: FreeBSD adalah pilihan open source yang menarik bagi banyak perusahaan, karena perizinannya sederhana, tidak membatasi dan tidak mungkin mengarah pada tuntutan hukum. Dengan kedatangan GPL v3 dan ketentuan anti-Tivoisation baru , telah disarankan bahwa ada tren percepatan, didorong oleh vendor menuju lisensi yang lebih permisif . Karena keuntungan yang dirasakan FreeBSD untuk entitas komersial terletak pada lisensi permisifnya, ada tekanan yang meningkat dari basis pengguna korporat untuk menjauh dari GCC, dan GPL pada umumnya.
Masalah dengan GCC: Selain dari lisensi, menggunakan GCC memiliki beberapa masalah yang dirasakan . GCC tidak sesuai sepenuhnya-standar, dan memiliki banyak ekstensi tidak ditemukan dalam ISO standar C . Dengan lebih dari 3 juta baris kode, ini juga merupakan " salah satu proyek perangkat lunak sumber paling bebas dan terbuka ". Kompleksitas ini membuat modifikasi kode tingkat distro menjadi tugas yang menantang.
Keunggulan teknis: Dentang memang memiliki beberapa keunggulan teknis dibandingkan dengan GCC . Yang paling menonjol adalah pesan kesalahan yang jauh lebih informatif dan API yang dirancang secara eksplisit untuk IDE, refactoring, dan alat analisis kode sumber. Meskipun situs web Clang menyajikan plot yang menunjukkan kompilasi dan penggunaan memori yang jauh lebih efisien, hasil dunia nyata sangat bervariasi , dan secara luas sejalan dengan kinerja GCC. Secara umum, binari Clang yang diproduksi berjalan lebih lambat dari binari GCC yang setara:
Saat menggunakan LLVM lebih cepat dalam membangun kode daripada GCC ... dalam banyak kasus, biner yang dibangun GCC 4,5 memiliki kinerja yang lebih baik daripada LLVM-GCC atau Dentang ... dalam tes lainnya kinerjanya dekat dengan GCC atau dengan baik dibelakang. Dalam beberapa tes, kinerja biner Dentang dihasilkan sangat mengerikan.
Kesimpulan: Sangat tidak mungkin bahwa efisiensi kompilasi akan menjadi motivator yang signifikan untuk mengambil risiko besar memindahkan proyek besar seperti FreeBSD ke toolchain kompilator yang sama sekali baru, terutama ketika kinerja biner kurang. Namun, situasinya tidak dapat dipertahankan. Diberikan pilihan antara 1) menjalankan GCC yang kedaluwarsa, 2) Pindah ke GCC modern dan dipaksa untuk menggunakan lisensi yang tidak sesuai dengan tujuan proyek atau 3) pindah ke kompiler BSD yang stabil, keputusan mungkin tak terhindarkan. Ingatlah bahwa ini hanya berlaku untuk sistem basis, dan dukungan dari distribusi; tidak ada yang mencegah pengguna menginstal dan menggunakan GCC modern pada kotak FreeBSD mereka sendiri.
Satu hal yang patut dipertimbangkan adalah bahwa FreeBSD saat ini menggunakan GCC 4.2.1 sebagaimana tercantum dalam jawaban ire_and_curses sehingga perbandingan kinerja bukan 4,5 atau bahkan 4,6 tidak benar-benar relevan dengan proyek. Karena itu, pertanyaan yang harus Anda tanyakan adalah:
Apa keuntungan kinerja Dentang baru vs GCC lama yang digunakan proyek?
Bagaimana binari yang sama dikompilasi dalam GCC 4.2.1 dibandingkan dengan Dentang baru?
Jika Dentang tertinggal di belakang GCC saat ini tetapi masih beberapa tahun ke depan dari GCC yang diterapkan dalam proyek maka keputusan mereka untuk berkembang dijamin dan benar-benar terinspirasi.
sumber
Meskipun GCC adalah GPLv3, binari yang dihasilkan oleh GCC tidak pernah memiliki batasan lisensi. Secara jelas Anda dapat menggunakan GCC untuk membangun perangkat lunak yang berada di bawah lisensi yang Anda inginkan. Bahkan pustaka C yang disertai dengan GCC dan yang termasuk dalam biner adalah bebas lisensi. http://www.gnu.org/licenses/gcc-exception-faq.html
Bagian 2 dari GNU GPLv3:
"Layak" berarti bahwa kompilasi tidak melibatkan perangkat lunak yang tidak kompatibel dengan GCC dan GPL. Itu bukan batasan: perangkat lunak berlisensi BSD dapat digunakan dalam proses pembuatan yang melibatkan GNU GCC.
Seperti yang Anda lihat, bertentangan dengan apa yang telah dikatakan di atas, tidak ada alasan terkait lisensi NYATA untuk menjauh dari GCC karena tidak ada ketidakcocokan dengan menggunakan GCC di dalam FreeBSD.
Alasan sebenarnya di balik perubahan ini adalah politis dan oportunistik:
Fakta-fakta ini menciptakan peluang bagi FreeBSD untuk menjauh dari GCC dan menyingkirkannya: mereka sebenarnya tidak dipaksa secara hukum, karena mereka masih bisa menggunakan GCC untuk membangun perangkat lunak bebas atau berlisensi BSD, tetapi mereka ingin tetap berpegang pada filosofi "semua perangkat lunak berlisensi BSD".
sumber
license of compiler != license of end product
. Keluhan tentang lisensi kompiler tidak mungkin relevan kecuali pengguna tidak memahami lisensi.Saya bukan ahli, tetapi pemahaman saya adalah Dentang / LLVM menggunakan sumber daya lebih sedikit daripada GCC dan lebih cepat.
http://clang.llvm.org/features.html#performance
Jika Anda menjalankan lingkungan di mana Anda perlu membangun banyak hal, sering kali, kinerja itu dapat berubah menjadi penghematan nyata dalam biaya dan waktu energi. Jika itu nyata.
sumber