Portál AbcLinuxu, 2. května 2025 05:52
Clang dost možná ve FreeBSD nahradí GCC. Clang z projektu LLVM v současnosti dokáže zkompilovat 99 % věcí ze světa FreeBSD, ačkoliv nadále obsahuje chyby a má nedostatky v podpoře C++.
Tiskni
Sdílej:
Zajímavé jak se svět v "první fázi" nejdřív pomocí GPL licence (GCC) osvobozoval od proprietárního softwaru, a nyní se svět v "druhé fázi" osvobozuje pomocí BSD licence (LLVM, Clang) od GPL softwaru. Jen aby někoho nenapadlo, že od BSD licence se musí osvobodit pomocí public domain
vim ~/.emacs
Zajimave. Niceho takoveho jsem si nevsiml.
Nevim, jestli jde zmena kompilatoru jednoho systemu, ktery je dokonce jeste minoritnejsi nez Linux usoudit, ze se svet osvobozuje.
Pravda, měl jsem místo "svět" napsat něco ve smyslu "lidi, které to zajímá"
vim ~/.emacs
Bohuzel FreeBSD se stejne jako Linux chce stat majoritnejsi,coz prinasi katastrofalni vysledky.Nastesti maji nekteri rozum a vcas se to snazi napravovat (DragonFlyBSD).
DragonflyBSD a FreeBSD spolupracuji na nahrade gcc clangem...
Ja jsem ale v reakci nemel na mysli clang.DragonFlyBSD vychazi z FreeBSD,takze maji spoustu spolecneho a diky velikosti tymu DragonFly se holt v nekterych situacich budou muset podridit.
tak jsem si přečetl, že Red Flag Linux kompiluje celé své distro, i kernel, pomocí icc. Clang má gcc kompatibilitu jako důležitý cíl, takže jako kandidát do budoucna je.
nemáte nějaký odkaz ohledně toho, o jakém kompilátoru ti někteří lidé uvažují?
vim ~/.emacs
[...]jak velká část BSD komunity tento zájem má[...]Myslím, že BSD komunita v první řadě chce mít funkční systém. Tudíž jsou některé minoritní části GPL licencované (Z duvodů neexistence náhrady.) Už jenom z předchozích odkazů lze vyvodit, že zájem, a to nemalý, existuje.
[...], kdo to kde říká a tak.Jak jsem říkal minule, tak se o tom nějak moc „nemluví“, prostě se to ví. Tohle je můj výklad, jednoduše cítím tenhle postoj na 100%. Můžete to samožřejmě nějak zpochybňovat.
Sakryš tohle mi nějak uniklo. Můžu poprosit nějaké linky, abych si o tom boji proti GPL přečetl více? Já osobně GPL pokládám za nástupce BSD . Altruismus mi připadá jako cesta, kterou může jít jen nepatrný zlomek populace. GPL a její "virovost" považuji za nějakou dohodu typu "ten dělá to a ten zas tohle a dohromady udělají moc". U BSD mi to připadá jako "ten dělá to a ten zas tohle a ten třetí na nich bohatne".
Můžu poprosit nějaké linky, abych si o tom boji proti GPL přečetl více?O tom boji? Nerozumím.
Já osobně GPL pokládám za nástupce BSD . Altruismus mi připadá jako cesta, kterou může jít jen nepatrný zlomek populace. GPL a její "virovost" považuji za nějakou dohodu typu "ten dělá to a ten zas tohle a dohromady udělají moc". U BSD mi to připadá jako "ten dělá to a ten zas tohle a ten třetí na nich bohatne".Ja osobně to třeba vidím naopak. Ovšem prohlášení „za nástupce“ mi přijde úplně zcestné. Ja osobně jsem velmi rád, že svět je různorodý. Ze všemi důsledky.
Spojení „za nástupce“ jsem použil jako protiváhu pro první přispěvek v diskusi. Je to samozřejmě trochu nadsázka. Nerad bych se vracel k nekonečným diskusím GPL vs. BSD. Svůj názor v téhle pětiletce stéjně měnit nechci .
Boj? Když spolu dvě licence nemohou být a tiše se respektovat, tak minimálně o vývojáře a jejich čas bojovat budou.
Jasně různorodost je supr a základ evoluce. Každý, ale musí vědět kde jsou hranice jednotlivých skupin. Např. zloději vs. altruisti vs. realisti. Doba, kdy budou všichni jen krást (nebo kdy zde budou všichni altruisti a žádný zloděj) asi nikdy nepřijde.
Ze slidů nadcházejícího FreeBSD Developer Summitu, str.5: "Why do we want this?" 1. bod: "GCC in base seems to be a dead end, mainly because of GPLv3."
Mimochodem z jakého textu Vy víte, že to tak "není"? Btw. nejsem anti-GPL, a už vůbec ne ideolog
vim ~/.emacs
Kdyz jsem se naposledy koukal na LLVM, tak podporovalo jen velmi malo architektur. Napriklad nemelo podporu ARMu a MIPSu, a to jsou pomerne popularni architektury.
To by pak měli Volnoběžci s freebsd útlum :D :D
ARM i MIPS podporovane jsou, celkove jsou podporovane tyto architektury:
llvm/lib/Target/PIC16
llvm/lib/Target/X86
llvm/lib/Target/CBackend
llvm/lib/Target/IA64
llvm/lib/Target/CellSPU
llvm/lib/Target/ARM
llvm/lib/Target/PowerPC
llvm/lib/Target/Alpha
llvm/lib/Target/CppBackend
llvm/lib/Target/MSIL
llvm/lib/Target/Mips
llvm/lib/Target/Sparc
llvm/lib/Target/MSP430
llvm/lib/Target/XCore
Zvlastni, na llvm.org pisi toto:
Takze minimalne MIPS tam nevidim.
Proc mi to jen pripomina ty vtipy o tom,ze FreeBSD je Linux BSD sveta . Nekdo by jim mel rict,ze ostatni BSD se soustredi (a davaji i ziskavaji na to dotace) na PCC.
http://pcc.ludd.ltu.se/
http://www.undeadly.org/cgi?action=search&mode=&thres=&query=pcc
llvm/clang je modern prekladac, zalozeny na SSA atp. pcc je upravena verze prekladace ze 70. let. neni zalozena na SSA a nema podporu C++. za pcc stoji v podstate 1 clovek (resp. 2 posledni dobou), za llvm/clang stoji nekolik velmi silnych firem (hlavne apple).
dalsi zajimavy prekladac je libfirm/cparser, ten je ale ciste akademicky
Ze je neco moderni a pouziva se to na spouste mist automaticky neznamena,ze to je dobre.GCC je taky prakticky vsude,pritom je to krap,moloch a zabugovany kus software.PCC jde primarne jinou cestou a to nepodporovat sice kdejakou blbinku,ale za to byt spolehlive,male,jednoduche,stabilni a prenositelne.Pokud se dodrzi standardy,tak tady muze byt klidne GCC,PCC,Clang,....proste kazdemu dle chuti a potreb.Napr. Minix pouziva ACK http://en.wikipedia.org/wiki/Amsterdam_Compiler_Kit kvuli nekterym problemum spojenym s GCC atd.
double add(double a, double b) { return a+b; } clanq -O3: 00000000004004b0 <add>: 4004b0: 55 push %rbp 4004b1: 48 89 e5 mov %rsp,%rbp 4004b4: f2 0f 58 c1 addsd %xmm1,%xmm0 4004b8: 5d pop %rbp 4004b9: c3 retq gcc -O3: 00000000004004b0 <add>: 4004b0: f2 0f 58 c1 addsd %xmm1,%xmm0 4004b4: c3 retqJeště do toho zkusím zapojit llvm, až zjistím jak
mov $0x1,%al
a s gcc je tam mov $0x1,%ax
...
nevim jakou pouzivas verzi ale mne to generuje identicky kod (svn clang/llvm a gcc 4.2.1)
witten /tmp# gcc -mno-sse -O3 -c double.c && objdump -d double.o
double.o: file format elf32-i386-freebsd
Disassembly of section .text:
00000000 <add>:
0: 55 push %ebp
1: 89 e5 mov %esp,%ebp
3: dd 45 10 fldl 0x10(%ebp)
6: dc 45 08 faddl 0x8(%ebp)
9: 5d pop %ebp
a: c3 ret
witten /tmp# clang -mno-sse -O3 -c double.c && objdump -d double.o
double.o: file format elf32-i386-freebsd
Disassembly of section .text:
00000000 <add>:
0: 55 push %ebp
1: 89 e5 mov %esp,%ebp
3: dd 45 08 fldl 0x8(%ebp)
6: dc 45 10 faddl 0x10(%ebp)
9: 5d pop %ebp
a: c3 ret
bez toho -mno-sse clang pouzije sse aritmetiku (protoze je typicky rychlejsi a vzdycky presnejsi)
tu poznamku o llvm jsem nepochopil. clang je language fronted ktery produkuje llvm bytecode, ktery ten llvm potom skompiluje/zoptimalizuje do assembleru
tu poznamku o llvm jsem nepochopil. clang je language fronted ktery produkuje llvm bytecode, ktery ten llvm potom skompiluje/zoptimalizuje do assembleruMožná. Poprvé jsem to zkompiloval
clang -O3 -o test test.c
a pak disassemberoval s objdumpem, podruhé jsem provedl clang-cc file.c -emit-llvm -o - | llvm-as | opt -std-compile-opts | llc > file.s
. V prvním případě tam zbytečně byly "pushy a popy", v druhém tam nebyly.
elf32-i386-freebsdCo to je? Nějaký zastaralý systém/procesor. Mně to ukazuje elf64-x86-64
ty dva prikazy jsou v podstate identicke jen pouzivaji ruzne urovne optimalizace... nechapu v cem je pointa... pri ruznych optimalizacich to vyrabi ruzny kod, ale to se dalo ocekavat ne?
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.