LLVM / Clang. U Mad GCC?

logo llvm

Musiałem napisać post o tej kontrowersji opublikowane w LWN. I to właśnie zaczyna kompilator LLVM / Clang martwić się na listach dyskusyjnych GNU.

Kiedyś istniał kompilator o nazwie GCC, który przez ponad 25 lat istnienia nadal cieszy się wielkim szacunkiem dla swojej wolnej licencji i licencji typu copyleft, a także jest kompilatorem używanym przez jądro linuksa, a do niedawna przez FreeBSD. Każdy, kto chciał nauczyć się programować w C lub C ++, z pewnością używał GCC niezależnie od architektury swojej maszyny. Jednak GCC cierpiał na pewien hermetyzm, częściowo z powodu filozofii tych, którzy go stworzyli, a częściowo z powodu jego rozwoju w stylu katedralnym, gdzie sprawowano silną kontrolę nad tym, co działo się w GCC, a co nie było (teraz nie tak dużo, ale nadal istnieje), co otworzyło sposób na budowę front-endów i innych funkcji, które ostatecznie przyjęło GCC. Aby dowiedzieć się więcej o krótkiej historii EGCS, Zostawiam ten link.

Tymczasem na Uniwersytecie Illinois w Urbana-Champaign około 2002 roku projekt badawczy doprowadził do stworzenia kompilatora zbudowanego w sposób modułowy, tak aby jego poszczególne elementy, takie jak front-endy, generatory kodu i optymalizatory. Nazywają go LLVM ponieważ na początku była to maszyna wirtualna niskiego poziomu, ale ostatecznie okazała się czymś więcej. I wydali mu licencję na podstawie jego własnej licencji podobny do BSD (darmowe, nie objęte copyleft, zgodne z GPL). Wiele lat później Apple zainteresowało się LLVM i zaadaptowało go do swoich systemów operacyjnych iOS i OS X, a także do tworzenia (i wydać na tej samej wolnej licencji co LLVM) zadzwonił twój własny front-end Szczęk, dla celu C i C. Wadą jest możliwość włączenia LLVM / Clang w programach autorskichTak jest w przypadku kompilatora CUDA firmy NVIDIA i IDE XCode firmy Apple.

Ale pewnego dnia kilka tygodni temu na liście mailingowej emacsa, w środku dyskusji o trybie autouzupełniania zaprojektowanym dla Clanga, Dimitrij Gutow Mówi: „Dawno temu powiedziano mi, że Richard Stallman tak bardzo nienawidził Clanga który był przeciwny włączaniu kodu, który go używa, do emacsa ”. Doprowadziło to później do kolejnej dyskusji na temat clang i wolnego oprogramowania, gdzie Sam Richard wyjaśnia: «Naszą polityką jest nie akceptowanie zmian w żadnym pakiecie GNU, który może współpracować z Clang, ale nie z GCC. Emacs nie będzie zachęcał ludzi do odejścia od GCC. Gdy nadarzy się taka okazja, będziemy zachęcać do używania GCC zamiast Clang ”.

Niedługo potem pojawia się Eric Raymond (znany z tworzenia The Cathedral and the Bazaar, wraz z definicją Open Source), który, w połowie śpiewając pół trolling, idzie i mówi że LLVM / Clang było odpowiedzią na opór projektu GCC przed byciem bardziej interoperacyjnym, a ponadto Clang przewyższa GCC pod względem kilku środków technicznych. Według niego (i pokazuje video z wykładu Chandlera Carrutha), programiści Clanga zapytali Stallmana, czy jest jakikolwiek powód, dla którego interfejsów GCC nie można przekształcić w dynamiczne biblioteki, które mogą być połączone przez dowolny program, który chce przeanalizować kod źródłowy. Stallman odpowiedział, że jednym z celów GCC był evitar zastrzeżone programy do używania którejkolwiek z jego części, więc celowo unikali różnych rzeczy posiblemente ułatwiłyby takie użycie …… ..które rozważali nieprzydatna odpowiedź. Chcieli stworzyć IDE i inne narzędzia, które współdzielą kod kompilatora, a GCC im na to nie pozwoli, więc aby stworzyć Clang i wysłać GCC do / dev / null. Programiści GCC skoczyli na niego z jękiem za brak pełnej informacji (z faktem, że Clang przewyższa GCC w kilku środkach technicznych). W środku dziwki pojawia się Stallman, który to mówi LLVM to straszna historia, nie z przyczyn technicznych, ale tylko ze względu na licencję inną niż copyleft, z korzyścią dla Apple.

Następnie artykuł LWN poświęca długie akapity na temat modułowości GCC i środków, które celowo uwzględnili, aby utrudnić używanie jego wewnętrznej reprezentacji przez programy zastrzeżone, na Wyjątek biblioteki wykonawczej GCC co rozwiązuje kwestię, czy GCC powinno kompilować zastrzeżony kod. Chciałbym również dodać przypadek FreeBSD (niedawno wydana wersja 10, zastępuje GCC LLVM / Clang jako głównym kompilatorem). Najnowsza wersja GCC, której używali była 4.2.1 (najnowsze z licencją GPLv2) i ani szalony zamierzali zaktualizować go do wersji z GPLv3 (po prostu chcą BSD bez licencji GPL), więc LLVM / Clang przychodzi do nich jak rękawiczka.

Krótko mówiąc, kolejna bitwa w odwiecznej wojnie GPL vs BSD.


38 komentarzy, zostaw swoje

Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   pandev92 powiedział

    Nie interesujące, pozwólmy programistom się pozabijać.

    1.    Eliotime3000 powiedział

      Mamy więc jeszcze jednego niezadowolonego pracownika do pracy w Microsoft i Apple.

    2.    Marcos powiedział

      Masz rację, popieram to, że oprogramowanie jest zawsze bezpłatne, aby KAŻDY CZŁOWIEK mógł je przeczytać (jest to jedyny powód, dla którego obsługuję i używam Linuksa), ale ostatecznie to programiści mają ostatnie słowo.

  2.   f3niX powiedział

    Dobry artykuł, zawsze lubię artykuły diazepanowe, są niezwykłe.

  3.   Germán powiedział

    Prawda jest taka, że ​​jest to bardzo głupia myśl ze strony gcc, bardziej w czasie, gdy twórca LLVM oferował kod tym z gcc, a oni go odrzucili, CLang jest zaprojektowany tak, aby IDE mogły zweryfikować kod w czasie rzeczywistym, który przynosi korzyści nie tylko prywatnym aplikacjom, ale także aplikacjom open source, takim jak KDevelop lub QtCreator, oprócz zaawansowanych edytorów, takich jak Vim, Kate, emacs itp. Przypuszczam, że coś podobnego stanie się z egcs i zostanie zaabsorbowane na licencji gpl jak tylko linux będzie mógł zostać skompilowany z tym, tak jak stało się z egcs

    1.    Eliotime3000 powiedział

      Jeśli nie mogą ulepszyć EGCS i / lub uczynić go najlepszym zamiennikiem CLang, przejdę do CLang i LLVM.

    2.    xlash powiedział

      Głupi? Nie sądzę. Fakt, że GCC nie może być użyty do tworzenia oprogramowania prawnie zastrzeżonego, jest sposobem na nadanie priorytetu rozwojowi wolnego oprogramowania i nie wykorzystywanie go do tworzenia oprogramowania własnościowego. Jest to sposób na obronę wolnego oprogramowania, dlatego powinno być wspierane. Pan Stallman ma całkowitą rację, to krok wstecz. Ponadto firmy takie jak Apple, jak wspomniano w artykule, będą korzystać z LLVM / Clang bez absolutnego wkładu w społeczność i bez przyznawania jakiegokolwiek uznania dla projektu.

      Pozdrawiam ludzi!

      1.    Germán powiedział

        Zarówno GCC, jak i LLVM / CLANG mogą kompilować oprogramowanie własnościowe, czego nie można modyfikować, to GCC i nie ujawniać tych modyfikacji. LLVM / CLANG można ponownie licencjonować jako gpl, największa różnica między nimi polega na tym, że w przypadku LLVM / CLANG muszą używać C ++, a te z GCC nie chciały go widzieć ani malować do niedawna. Z mojego punktu widzenia zamiast przepisać GCC do C ++, tak jak to robią teraz, powinni byli przeportować architektury, które obsługuje GCC, a LLVM / CLANG nie, oraz języki na to drugie i mieć czystszy kod i utrzymywać ich własna gałąź rozwoju

    3.    artus powiedział

      Myślę, że twoja opinia jest bezpodstawna, ponad kwestiami technicznymi jest wolne oprogramowanie. To właśnie najbardziej dotyczy pana Stallmana. Z tego, co uważam za najlepsze dla Ciebie, to część techniczna i masz rację, ale kiedy nie masz wyboru, ponieważ firma przejęła Twoją technologię, pomyślisz dwa razy.
      Z drugiej strony dzięki GCC możesz zweryfikować kod w czasie rzeczywistym, co powtarzam, Twoja opinia jest bezpodstawna.

      1.    Germán powiedział

        1-Jeśli GCC utworzy fork LLVM / CLANG i firmy i ponownie licencjonuje je jako GPL, cały kod zawarty we wspomnianym forku będzie objęty licencją GPL, a kody LLVM będą musiały poprosić o pozwolenie na ponowną licencję i dołączyć to w ich repozytorium. Informuję, że licencje typu MIT (XORG, WAYLAND, ...) lub BSD (FreeBSD, ...) są tak samo liberalne jak LLVM
        2 - Z GCC nie można zaimplementować automatycznego uzupełniania kodu lub weryfikatora kodu w czasie rzeczywistym za pośrednictwem biblioteki, którą zapewnia w przeciwieństwie do CLANG
        3 - LLVM jest lepszym rozwiązaniem niż GCC nie tylko technicznym, ale także pod względem wydajności, kompilacja dwumianu LLVM / CLANG zajmuje połowę

  4.   andekuera powiedział

    Niech żyje GNU i GPL!

    1.    Eliotime3000 powiedział

      Zobacz, czy potrafią stworzyć własny CLang z alkoholem, hazardem i dziwkami.

      1.    andekuera powiedział

        co?

    2.    Eliotime3000 powiedział

      Nie, Richard. Fakt, że SELinux jest dziełem NSA, nie oznacza, że ​​jakiekolwiek inne narzędzie nieobjęte licencją GPL (takie jak LLVM / CLang) pochodzi z tej samej macierzy.

      Poważnie, myślałem, że był to całkowicie racjonalny motyw, ale widzę, że FSF są bardziej konserwatywne niż Satoru Iwata czy jakikolwiek członek MAFIAA.

      1.    Personel powiedział

        Widać, że nie przeczytałeś listy mailingowej i trzymałeś się tego, co artykuł mówi między wierszami.
        Podano racjonalne argumenty, nawet opcje techniczne, ale tak czy inaczej, bardzo często czyta się tytuł i przeskakuje od razu do komentarzy.

  5.   biedny taku powiedział

    Ñuhhhh GCC + Emacs. Jeśli chcesz przeżyć, weź mnie za rękę (stallman)

  6.   pełen życia powiedział

    Purytanie mi wybaczą, ale muszę to powiedzieć: nigdy nie lubiłem Stallmana i wydaje mi się, że tak jest do końca moich dni.

    Nie możesz być tak ograniczony. Wydaje się, że jest fanatykiem, szaleńcem i tak, bez względu na to, na jaki szacunek zasługuje za swoje osiągnięcia i za czym się opowiada, nie lubię go.

    1.    Cyronid powiedział

      Zgadzam się. Na początku bardzo go lubiłem, ale teraz wydaje się zbyt ekstremalny ...

      1.    Kanały powiedział

        Ekstremista ... szalony ... fanatyk ... tak, to zależy od tego, jak na to spojrzysz. Dla mnie pan Richard Stallman to osoba z ogromnym sumieniem społecznym. Sensem jego życia było i jest ulepszanie społeczeństwa, a nie oprogramowania. Istnieje różnica między wolnym oprogramowaniem / oprogramowaniem open source, ponieważ pierwsze szuka problemów społecznych, a drugie problemów technicznych.

    2.    xlash powiedział

      Elav mate, to nie jest kwestia bycia purytaninem czy nie. Wolne oprogramowanie narodziło się jako ruch społeczny i tego broni pan Stallman, podobnie jak wielu.

      Nie możesz być tak ograniczony. Wydaje się, że jest fanatykiem, szaleńcem i tak, nieważne, na jaki szacunek zasługuje za swoje osiągnięcia i za czym się opowiada, nie lubię go. "

      Właściwie jest odwrotnie. Celem jest, aby każdy miał swobodny dostęp do oprogramowania, nie ograniczając jego użytkowania poprzez zastrzeżone modyfikacje i, jak powiedziałem w moim poprzednim komentarzu, priorytetowo traktują i kładą nacisk na rozwój wolnego oprogramowania.

      Myślę, że mylisz fanatyzm z innym terminem. Fanatyzm zabija, co dobrze pokazała historia. Termin, którego szukasz, może być radykalny, ale bez tego radykalizmu nie byłoby wolnego oprogramowania i ruchu GNU / linux, przynajmniej w takiej postaci, jaką znamy dzisiaj. Jeśli chodzi o szalone rzeczy, nie będę się z tobą sprzeczać, ale widząc to, co widziałem przez te kilka lat, szaleni ludzie nie są tacy szaleni.

      W tym akapicie chcę powiedzieć, że ruch wolnego oprogramowania to nie tylko ruch komputerowy, ale także ruch społeczny i należy go bronić. A jeśli Elav, musisz być radykalny w kwestii społecznej. Firmy takie jak Apple czy Microsoft nie zawahają się wykorzystać okoliczności. Musimy zwiększyć świadomość dotyczącą praw użytkowników i ludzi w ogóle.

      PS Nazywam Elav, ponieważ mu odpowiadam, ale komentarz jest skierowany do wszystkich GNU / linuxerów.

      Pozdrawiam ludzi!

      1.    Pan_E powiedział

        @Xlash: SIR!… Dziękuję! To właśnie musiałem przeczytać. +1

        Kopiuję cię, drukuję i odkładam na bok Biblii. (Dla przypomnienia: nie w nim ani na nim).
        W końcu dzięki temu posunięciu i wysiłkowi Linusa i społeczności dokonuje się coś, co zmieniło świat:
        „Jest przed Linuksem i TERAZ z LINUX”.

      2.    andekuera powiedział

        + 10

    3.    Pan_E powiedział

      @Elav:
      Nie przepraszam ale musiałem powiedzieć:
      Niektóre z twoich poprzednich postów polubiły mnie, ale nie ten ... i jeśli będą dalej w ten sposób: może tak będzie do końca moich dni.
      Nie bądź zamknięty. Wydajesz się fanatyczny, szalony i szanujesz tyle samo, ile twoje osiągnięcia (to forum) i to, na co zasługujesz… Nie podoba mi się (twój komentarz).
      😀 - hehe! teraz możesz doświadczyć (trochę) tego samego co RMS. po prostu musisz mieć tę samą trajektorię dyfuzji co on i cóż, czuć prawie dokładnie to samo.
      Pozdrowienia cuñao!

  7.   Cyronid powiedział

    Nie rozumiem, dlaczego Stallman jest tak zamknięty. Ryzykuję stwierdzenie, że myślę, że LLVM jest nawet bardziej swobodny niż GCC, ponieważ daje swobodę używania go nawet w programach własnościowych. Tak, wiem, że ograniczenie w GCC może pomóc wolnemu oprogramowaniu, ale uważam za absurd, że sprzeciwia się LLVM w ten sposób.

    pozdrowienia

    1.    Wilson powiedział

      Stallman nie jest zamknięty. Artykuł jest bardzo nastawiony na osobiste opinie autora.
      W rzeczywistości decyzje GCC mają głównie charakter techniczny. W GCC chcą modularności i robią to, ale w inny sposób (unikając problemów, które istnieją w CLANG).
      Aby uzyskać więcej informacji https://gcc.gnu.org/ml/gcc/2014-01/msg00176.html
      Tak napisał Raymond i są odpowiedzi twórców.

  8.   świętokrzyski powiedział

    Wydaje mi się, że widzę, kto ma większe ... ego, oczywiście.
    Oba kompilatory są doskonałe. Ale jak w przypadku każdego narzędzia, zależy to od tego, jak go używasz.
    Można napisać wolny kod w C # i zrobić rakietę z Linuksem.

  9.   gallux powiedział

    Myślę, że tutaj powinieneś być bardziej pragmatyczny. Stallman powinien mieć wizję i nie przestawać się gubić. Martwi się, że obecna społeczność nie jest podzielona, ​​co się właśnie dzieje. Najbardziej sensowne jest to, że chociaż licencja bsd pozwala na używanie go w zastrzeżonych środowiskach, o ile autorzy są rozpoznawani (a nawet ich pochodne) używają tej samej logiki, ale z gpl v2 lub nowszym.

  10.   pandev92 powiedział

    Na szczęście od jakiegoś czasu prawie nie słychać stallmana. Drugi, program komputerowy lub kompilator, nigdy nie będzie kwestią społeczną, poza tym zawsze istniały alternatywy, które nie są darmowe! ale jeśli za darmo.
    Jeśli chodzi o llvm clang, kontrowersje nie mają sensu, ponieważ źródło zawsze tam będzie, zostało wydane na licencji bsd, dlatego jest to wolne oprogramowanie, które firma może używać do swoich mrocznych celów, nie oznacza to, że nie możesz już uzyskać dostępu do oryginalnego kodu, ale widzę, nikt tutaj nie ma pojęcia, z wyjątkiem 2 lub 3.

    1.    xlash powiedział

      „Program komputerowy lub kompilator nigdy nie będzie kwestią społeczną”
      Co masz na myśli? Szanuję, że nie bronisz ruchu wolnego oprogramowania, jak wielu innych, ale zaprzeczanie temu, co reprezentuje wolne oprogramowanie, wydaje się z Twojej strony brakiem szacunku wobec ludzi, którzy inwestują dużo czasu, pieniędzy i wysiłku w jego obronę i tworzenie.

      Oczywiście llvm jest wolnym oprogramowaniem, ale to nie znaczy, że jego modyfikacje i pochodne nim są. Chodzi o to, aby nie tylko mieć swobodny dostęp do oryginalnego oprogramowania, ale także jego modyfikacje. Jeśli opracuję program i podzielę się nim z Tobą, chciałbym, abyś zrobił to samo dla osób, którym dałbyś kopię swojej zmodyfikowanej wersji. Tego właśnie bronią wolne oprogramowanie i copyleft, a zatem jest to kwestia społeczna.

      „Ale widzę, nikt tutaj nie ma pojęcia, z wyjątkiem 2 lub 3”.
      Nie wiem już, jak doszedłeś do takiego wniosku, skoro zamieszczone tutaj komentarze odnoszą się do filozofii i wolności oprogramowania, porównując różnice między dwoma typami licencji, nawet jeśli są one ze sobą kompatybilne.

      1.    diazepam powiedział

        Jak codzienne życie księgowego, który nic nie wie o programowaniu, wpływa na program księgowy, który został skompilowany za pomocą takiego kompilatora?

        1.    xlash powiedział

          Wcale nie, o ile jestem wolny. Ale temat, który poruszam w komentarzach, to inny, Diazepan. Mówię o używaniu kompilatora X do kompilowania oprogramowania własnościowego, o licencjach używanych w każdym kompilatorze i ich różnicach, wspominam też o przewadze GLP nad BSD, oczywiście zawsze z punktu widzenia wolności.

    2.    Personel powiedział

      LOL, twierdzenie, że nikt nie ma pomysłu, to bardzo mocne słowa dla kogoś, kto mówi, że oprogramowanie nie jest problemem społecznym.
      Trzeba być ślepym lub przynajmniej trochę krótkowzrocznym, żeby tego nie dostrzec, kiedy są nawet kraje, które migrują (w większym lub mniejszym procencie) do wolnego oprogramowania, kiedy przez wszystkie międzynarodowe media powtarza się, że oprogramowanie własnościowe jest narzędziem dla szpiegostwo na dużą skalę, kiedy najbogatszy człowiek świata jest właśnie poświęcony systemowi operacyjnemu.
      Co tu jest do przeczytania.

    3.    andekuera powiedział

      ... Chciałbym, żeby było więcej stallmanów i mniej pandevów ...

  11.   Personel powiedział

    Artykuł jest nieco tendencyjny, zaczynając od tytułu, ponieważ ci, których należy zapytać, czy „trochę zwariowali”, to LLVM, ponieważ to oni gorzko narzekają.

    A jeśli chodzi o ten temat, widać hipokryzję tych, którzy jako pierwsi wypowiadają się przeciwko temu, co nazywają „fragmentacją”, i jak „straszne” jest to wolne oprogramowanie.
    Ale jeśli ktoś zgodny z tym, co mówi i robi, podąża za jego linią i nie zgadza się, że darmowy kompilator staje się platformą dla nieskończonej liczby prawnie zastrzeżonych kompilatorów, to tak, niech żyje, wszyscy tworzą forki!

  12.   Kanały powiedział

    Wolne oprogramowanie jest z definicji ruchem społecznym od samego początku.

    Odnośnie GPL vs BSD:
    „Freedom 3 obejmuje swobodę publikowania zmodyfikowanych wersji jako wolnego oprogramowania. Wolna licencja może również autoryzować inne formy publikacji; innymi słowy, nie musi to być licencja typu copyleft. Jednak licencja, która wymaga, aby zmodyfikowane wersje były niewolne, nie może być uznana za bezpłatną. ”
    „Copyleft (bardzo krótko zdefiniowany) to reguła, która zakłada, że ​​podczas redystrybucji programu nie można dodawać ograniczeń, aby odmówić innym głównych swobód. Zasada ta nie jest sprzeczna z głównymi swobodami, a raczej je chroni ”.

    Jak widać, copyleft, choć na krótką metę odbiera trochę wolności, w dłuższej perspektywie ją chroni. Dlatego pan Stallman broni GPL: „Moja praca nad wolnym oprogramowaniem jest motywowana idealistycznym celem: szerzeniem wolności i współpracy”.

  13.   Kanały powiedział

    http://www.gnu.org/philosophy/open-source-misses-the-point.html

    «Open source to metodologia programowania, wolne oprogramowanie to ruch społeczny. Dla ruchu wolnego oprogramowania wolne oprogramowanie jest imperatywem etycznym, podstawowym poszanowaniem wolności użytkowników. W przeciwieństwie do tego, filozofia open source stawia pytania o to, jak „ulepszyć” oprogramowanie w czysto praktycznym sensie. Utrzymuje, że oprogramowanie własnościowe nie jest optymalnym rozwiązaniem praktycznych problemów do rozwiązania. W większości przypadków, gdy mówimy o „otwartym źródle”, nie bierze się pod uwagę dobra i zła, a jedynie popularność i sukces ”.

  14.   Daniela Noriegi powiedział

    Komentowałem to już kilka razy i ciągle to powtarzam, ogólnie linux bardzo mi się podoba, ale jeśli jest coś, czego w linuksie nienawidzę, to jest to społeczność. Kiedy jesteś w stanie zeskoczyć z klifu, aby kontynuować ideologię tak „zamkniętą” jak „wolne oprogramowanie”, zdajesz sobie sprawę, że świat stoi do góry nogami. Myślę, że w swoich początkach wolne oprogramowanie było jasne, dziś sprawa jest inna.

  15.   rzadki przypadek powiedział

    Myślę, że wielu nie było jasnych co do warunków i celów licencji GPL. Licencja GPL jest bardzo liberalna, ale z ograniczeniem uniemożliwiającym czerpanie zysków z programów, na które jest ona licencjonowana. Zgadzam się ze Stallmanem, ale nie na skraju używania wyłącznie wolnego oprogramowania. Użytkownik chcący korzystać z LLvm / Clang jest ich prawem, ale dla SLF zamiana GCC na LLVM / Clang byłaby sprzecznością z zasadami wolnego oprogramowania.