abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

dnes 06:22 | Pozvánky

V úterý 28. listopadu se v Brně koná již 4. přednáškový večer Ruby Stories. Těšit se můžete na témata jako TDD, hybridní mobilní aplikace či programování v Elixiru. Více informací na Facebooku nebo se rovnou registruj na Eventbrite. Na místě bude zdarma drink a lehké občerstvení, tak dorazte.

ondrej-zadnik | Komentářů: 0
dnes 06:11 | Pozvánky

V úterý 28. 11. 2017 bude další Prague Containers Meetup. DC/OS a Mesos vás provede Mesosphere's Developer Advocate Matt Jarvis.

little-drunk-jesus | Komentářů: 0
včera 14:44 | Komunita

Mozilla.cz informuje, že Firefox bude možná upozorňovat na úniky vašich hesel. V Mozille prototypují upozorňování na únik informací o vašem účtu, pokud se na seznamu Have I been pwned? objeví služba, ke které máte ve Firefoxu uložené přihlašovací údaje. Informace se objevila v pravidelném newsletteru o vývoji Firefoxu.

Ladislav Hagara | Komentářů: 5
včera 00:22 | Bezpečnostní upozornění

Společnost ZONER informuje o bezpečnostním incidentu, při kterém došlo ke zcizení a zveřejnění části přihlašovacích údajů zákazníků k elektronické poště a webhostingu CZECHIA.COM.

Ladislav Hagara | Komentářů: 0
22.11. 23:44 | Nová verze

Byla vydána nová stabilní verze 1.13 (1.13.1008.32) webového prohlížeče Vivaldi (Wikipedie). Z novinek vývojáři zdůrazňují možnost zobrazení otevřených i uzavřených listů pomocí ikonky Okno na postranní liště a vylepšené stahování (YouTube). Nejnovější Vivaldi je postaveno na Chromiu 62.0.3202.97.

Ladislav Hagara | Komentářů: 9
22.11. 20:55 | Nová verze

Byla vydána verze 2017.3 dnes již průběžně aktualizované linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux. Aktualizovat systém lze pomocí příkazů "apt update; apt dist-upgrade; reboot". Z novinek lze zmínit 4 nové nástroje: InSpy, CherryTree, Sublist3r a OSRFramework.

Ladislav Hagara | Komentářů: 1
22.11. 01:55 | Bezpečnostní upozornění

Společnost Uber potvrdila bezpečnostní incident a únik dat v roce 2016. Unikly údaje o 57 milionech cestujících (jména, emailové adresy a čísla mobilních telefonů) a 600 tisících řidičích (navíc čísla řidičských průkazů).

Ladislav Hagara | Komentářů: 1
21.11. 23:44 | Humor

Co vypíše příkaz man půl hodiny po půlnoci? Text "gimme gimme gimme". Jedná se o virtuální velikonoční vajíčko připomínající skupinu ABBA a její hit Gimme! Gimme! Gimme! (A Man After Midnight). Problém nastane, pokud gimme gimme gimme nabourá automatizované testování softwaru. To se pak příkaz man musí opravit [Bug 1515352] [reddit].

Ladislav Hagara | Komentářů: 10
21.11. 18:11 | Zajímavý článek

Mozilla.cz informuje, že Firefox na Fedoře podporuje Client Side Decorations. Firefox na Linuxu se vykresluje včetně standardního záhlaví okna, které je v případě webového prohlížeče většinou nadbytečné a ubírá drahocenné vertikální místo na obrazovce. Verze distribuovaná uživatelům Fedory však nyní obsahuje experimentální podporu pro takzvané Client Side Decorations, které umožňují vykreslování „oušek“ panelů do záhlaví okna.

Ladislav Hagara | Komentářů: 12
21.11. 05:00 | Bezpečnostní upozornění

Maxim Goryachy a Mark Ermolov ze společnosti Positive Technologies budou mít v prosinci na konferenci Black Hat Europe 2017 přednášku s názvem "Jak se nabourat do vypnutého počítače, a nebo jak v Intel Management Engine spustit vlastní nepodepsaný kód". O nalezeném bezpečnostním problému informovali společnost Intel. Ta bezpečnostní problém INTEL-SA-00086 v Intel Management Engine (ME), Intel Server Platform Services (SPS) a Intel

… více »
Ladislav Hagara | Komentářů: 47
Jak se vás potenciálně dotkne trend odstraňování analogového audio konektoru typu 3,5mm jack z „chytrých telefonů“?
 (9%)
 (1%)
 (1%)
 (1%)
 (75%)
 (14%)
Celkem 756 hlasů
 Komentářů: 37, poslední 21.11. 15:21
    Rozcestník

    LLVM a Clang – více než dobrá náhrada za GCC

    18. 9. 2013 | Luboš Doležel | Programování | 9933×

    GCC po dlouhou dobu bylo prakticky jedinou věcí, která by člověka napadla při spojení Linux a kompilátor jazyka C. V posledních letech se ale klidné vody začínají čeřit. Co je to LLVM a co s tím má společného Clang?

    LLVM, dříve zkratka názvu Low Level Virtual Machine, je původně univerzitní projekt, který vznikl už v roce 2003. Navzdory názvu nejde primárně o další nástroj pro virtualizaci, nýbrž o kompilátor, respektive o univerzální backend, jenž dodává potřebnou infrastrukturu pro vývoj kompilátorů pro různé programovací jazyky.

    LLVM jako takové zpracovává mezikód (intermediate form code) vytvořený z původního kódu od programátora, dokáže jej zoptimalizovat a na jeho základě emitovat kód v podobě instrukcí pro vybranou hardwarovou platformu, a to i za běhu programu (JIT). LLVM původně žilo ve stínu GCC, tudíž nepřekvapí, že původně bylo LLVM používáno jako náhrada backendu v GCC: překladače různých jazyků z nabídky GCC byly portovány tak, aby s nimi mohlo být používáno LLVM pro generování kódu. Na Linuxu jste se s tímto hybridem asi moc nesetkali, na OS X se ale LLVM-GCC od roku 2008 běžně používá.

    Obsah

    Clang?

    link

    V první řadě je nutné podotknout, že označení GCC je lehce matoucí. GCC totiž označuje jak sadu kompilátorů (GNU Compiler Collection) pro různé jazyky (C++, Java, Fortran, ...), tak i název kompilátoru pro jazyk C a příbuzné ze sady GCC. Snad i proto nejsou lidé, co používají GCC jen pro jazyk C, zvyklí rozlišovat mezi backendem kompilátoru a frontendem pro určitý jazyk. A není divu, protože historicky byla zkratka GCC znamenala pouze GNU C Compiler, podpora dalších jazyků přišla až později.

    Clang je tedy frontendem pro LLVM, který si poradí s jazyky C, C++ a Objective-C(++). Jako uživatel se nemusíte nějakými frontendy-backendy zabývat, zajímá vás především to, jak se kompilátor používá. Clang se spouští pomocí clang a clang++, což je obdoba gcc a g++. Samotné parametry pro kompiltátor jsou při běžném použití mezi Clangem a GCC identické, nemusíte se tedy učit nic nového.

    Řada voleb dostupných v GCC je u Clangu s varovným hlášením ignorována – to se týká jak parametrů na příkazové řádce, tak například různých __attribute__((něco)), co všemožně najdete. Občas můžete při používání Clangu narazit na větší přísnost – taková ukázka:

    int funkce()
    {
            return;
    }
    

    Tento evidentně zvrácený kód bude pod GCC zkompilován s pouhým varováním, kdežto pod Clangem dostanete chybu. (Nevylučuji, že Clang nějak přinutíte to akceptovat.)

    $ gcc -c test.c -Wall
    test.c: In function ‘funkce’:
    test.c:3:2: warning: ‘return’ with no value, in function returning non-void [-Wreturn-type]
    
    $ clang -c test.c -Wall
    test.c:3:2: error: non-void function 'funkce' should return a value [-Wreturn-type]
            return;
            ^
    1 error generated.
    

    Pokud se dostanete k podobně zběsilému kódu, odhadem napsanému kdysi v devadesátých létech programátorem, co už je teď asi v důchodu, nesnažte se to ohýbat přes koleno. Je to asi jako rozčilovat se, že jakási zprasená HTML stránka napsaná v roce 1997 nefunguje v poslední verzi Firefoxu.

    Pro programátory ale Clang nabízí zajímavé funkce. Pravdou je, že se vývojáři GCC snaží v tomto Clang dohnat, ale už jen to je ukázkou přínosnosti Clangu. Jde o srozumitelnost chybových hlášek. Už v ukázce nahoře můžete vidět, že Clang ukazuje řádek, na kterém se chyba nachází. Další drobností je to, že Clang používá ve výstupu na terminál barvy, takže chyby a varování vidíte na první pohled.

    Clang

    Na stránkách Clangu najdete celý přehled situací, kdy jsou jeho hlášky srozumitelnější než při použití GCC, my si tady ukážeme jen jednu jednoduchou situaci:

    Clang

    Podotýkám, že Clang při linkování programu používá systémový linker (ld). Pracuje se ale na LLVM linkeru LLD.

    libc++

    link

    Knihovna libstdc++ je implementací standardní knihovny C++ a je součástí GCC. Není tedy divu, že vznkl projekt libc++, který mimo jiné pomáhá Clangu k nezávislosti na GCC.

    Vznik libc++ má ale i další důvody. Tím prvním je licence – libstdc++ 4.2 je poslední verze, která vyšla pod licencí GNU GPLv2, další verze jsou už pod GPLv3, která ale nemusí být pro všechny přijatelná. libc++ je pod volnějšími licencemi MIT a UIUC (BSD-like). Ostatní alternativní implementace standardní knihovny C++ jsou navíc mrtvé – jak STLport, tak STDCXX – takže jich určitě není přehršel. Autoři k tomuto uvádějí, že doplnění podpory pro C++11 do těchto již nevyvíjených knihoven by se stejně rovnalo přepisu.

    libc++ se už teď dostává do linuxových distribucí, na Gentoo ji například najdete pod názvem sys-libs/libcxx.

    API je grunt

    link

    LLVM i Clang byly psány s ohledem na znovupoužitelnost, a to nejen jako kompilátor. Clang například poskytuje céčkovou knihovnu libclang obalující vnitřní API Clangu a najde nejčastěji využití při parsování zdrojového kódu a jeho analýzu. To představuje obrovský přínos například pro vývojářská IDE, a to pro možnost okamžité kontroly zdrojového kódu před kompilací. Tuto funkci najdete v linuxových IDE i bez použití Clangu (napadá mě třeba Eclipse), kvalita těchto analyzérů je ale dosti bídná; typicky si stěžují více, než je potřeba. API Clangu dokáže rovnou doporučovat opravy kódu (třeba při překlepu v názvu volané funkce) a překvapivě není nijak komplikované.

    Jednoduchý analyzér, co vypíše všechny chyby a varování na chybový výstup, může vypadat takto:

    int main(int argc, char *argv[]) {
    	CXIndex Index = clang_createIndex(0, 0);
    	CXTranslationUnit TU = clang_parseTranslationUnit(Index, 0,
    		argv, argc, 0, 0, CXTranslationUnit_None);
    		
    	for(unsigned I = 0, N = clang_getNumDiagnostics(TU); I != N; ++I) {
    		CXDiagnostic Diag = clang_getDiagnostic (TU, I);
    		CXString String = clang_formatDiagnostic (Diag,
    			clang_defaultDiagnosticDisplayOptions());
    		
    		fprintf(stderr, "%s\n", clang_getCString(String));
    		
    		clang_disposeString(String);
    	}
    	
    	clang_disposeTranslationUnit(TU);
    	clang_disposeIndex(Index);
    	
    	return 0;
    }
    

    Nebudu tu ale dále vykrádat tuto prezentaci, ze které tento příklad pochází. Jinak na takovéto použití libclang můžete narazit například v Qt Creatoru.

    Využití možná najdete i přímo pro API LLVM, se kterým si za běhu můžete nechat do paměti zkompilovat nějakou funkci a tu pak předat dál jako callback. Více najdete v tutoriálu pro JIT.

    LLDB není databáze

    link

    LLDB je debugger, tedy nástroj pro ladění chyb v programech. O jeho vznik se zasadil Apple, a to aby mohl nahradit zastarávající verzi GDB na svých systémech něčím novým, schopným. A buďme za to rádi, konkurence je prospěšná i v open source.

    Já osobně jsem totiž s GDB krajně nespokojený. Pro takovéto obyčejné použití celkem postačí, po letech používání ale začnete narážet na podivné chování (GDB pošle samo sobě SIGSTOP), pády GDB (laděný program často „sejme“ i debugger) a další podivnosti (GDB mi při auto-completion nabídne funkci pro breakpoint, pak ale řekne, že je nedefinovaná). Nepochybuji o tom, že řadě z vás GDB plně vyhovuje, nicméně i takové Valve se už zajímá o možnosti vylepšení LLDB, protože GDB je moc neuspokojuje.

    Na LLDB zatím na Linuxu moc nenarazíte. To je mimo jiné způsobeno tím, že LLDB je určené primárně pro OS X a na ostatní platformy je teprve portováno. Balíček s LLDB ale najdete například na Debianu, a to v sekci experimental. Řada příkazů je podobná GDB, ostatní se snadno naučíte. Vývojáři LLDB se snažili do příkazů zavést větší logiku a jednoznačnost.

    Pokud poohlédneme od příkazového rozhraní k vývojovým prostředím, zjistíte, že s GDB to není žádná legrace. Různá IDE, ať už KDevelop, Eclipse nebo Qt Creator, používají gdb spuštěné v podprocesu, kterému předávají příkazy úplně stejným způsobem, jako by uživatel GDB používal přímo. To je krajně nepraktické a často dosti nestabilní. GDB bohužel nebylo nikdy navrženo tak, aby sloužilo jako API pro jiné programy (stav je v globálních proměnných apod.), takže to ani jinak nejde. Právě v tom se LLDB liší – stejně jako ostatní projekty okolo LLVM je vnitřní API určeno k používání ostatními programy.

    Podobně jako GDB je LLDB možné řídit nebo rozšiřovat pomocí skriptů v Pythonu.

    Další využití LLVM a Clangu

    link

    Pokud vás alespoň trochu zajímá 3D grafika a akcelerace, tak jste pravděpodobně slyšeli o LLVMpipe. Jde o softwarový rasterizér, tedy o řešení pro systémy, kde 3D akcelerace není z nějakého důvodu dostupná. Z principu jde o velmi pomalou věc (hry si s tím moc nezahrajete), LLVM zde však díky dynamickému překladu kódu pomáhá tomu, aby toto nouzové řešení posloužilo alespoň v méně náročných situacích (například při používání OpenGL pro skládání obsahu obrazovky v GNOME).

    Crosscompilátorům, neboli kompilátorům, co na stroji s jednou architekturou dokáží vytvořit binárku pro jinou architekturu, díky Clangu/LLVM tak trochu zvoní hrana. Zatím jsem ještě neměl čest takto LLVM používat (takže neumím posoudit, jak moc snadno použitelné to je), ale jediná verze LLVM dokáže už z principu generovat kód pro různé platformy. Na Gentoo se tato možnost aktivuje USE flagem multitarget, kompilátor pak můžete použít třeba takto:

    clang -target armv7--eabi -mcpu=cortex-a9 -c soubor.c
    

    Pořád sice potřebujete knihovny pro cílovou architekturu pro linker, nemusíte ale pro každou architekturu mít oddělenou kopii kompilátoru.

    Cling je interaktivní interpreter jazyka C++, který využívá schopnost JIT kompilace v LLVM. Programátoři v C++ s ním získávají schopnosti, kterých si běžně mohou užívat jen programátoři ve skriptovacích jazycích. Cling není prvním projektem tohoto typu, který v Cernu vznikl – CINT je jakýmsi předchůdcem Clingu, avšak s tím rozdílem, že zatímco Cling může využívat bohatých schopností Clangu a LLVM, CINT musí věci řešit po svém. To vysvětluje těch necelých 400 000 řádek kódu, které CINT obsahuje...

    Zmíním zde ještě projekt libcpu. Jde o velice zajímavý nápad, kdy je zdrojem dat pro LLVM již zkompilovaný kód a smyslem je překompilovat jej pro jinou platformu. Tento projekt sice moc nežije, při googlení ale narazíte na zajímavé informace o tom, jakým překážkám musí člověk při řešení této úlohy čelit. Jde například o to, že instrukce procesorů jsou příliš nízkoúrovňové, aby je šlo lehce přeložit do nějaké vyšší myšlenky, kterou by šlo dále zoptimalizovat. Na výstupu je tedy vždy znatelně více přeložených instrukcí, než kolik bylo původních.

    Zapojení Apple

    link

    Apple je na vývoji Clangu/LLVM silně zainteresován a důvodem je už výše zmiňovaný přechod GCC na GNU GPLv3. Apple na GCC silně závisí (závisel) a od tohoto přechodu zůstal zaseknutý na posledních verzích, co vyšly pod starou licencí. Přechod open source projektů ke GPLv3 je údajně i jedním z důvodů zvýšeného výskytu děravých knihoven na systémech od Apple. Nedrží totiž krok s bezpečnostními opravami, jež se v nových vydáních knihoven vyskytují.

    Proto Apple logicky podporuje projekt pod jemu příjemnější (volnější) licencí. Znamená to sice, že může pracovat na funkcích, které pak komunitě v podobě zdrojového kódu neuvolní, na druhou stranu je Apple určitou zárukou rozvoje LLVM/Clangu do budoucna. Navíc proprietární vylepšení v kompilátoru nejsou v roce 2013 při výkonu dostupných procesorů zázračným obchodním artiklem – spíše by šlo o komplikaci pro samotný Apple.

    Třebaže se Apple netěší mezi uživateli Linuxu velké popularitě, svobodný kód zkrátka nesmrdí.

           

    Hodnocení: 100 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    18.9.2013 00:57 mpel
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    gcc -fdiagnostics-color=auto
    Jardík avatar 18.9.2013 02:46 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Jup, GCC už dávno umí barvičky a taky chybové hlášky se zlepšily.
    Věřím v jednoho Boha.
    Marián Kyral avatar 18.9.2013 09:26 Marián Kyral | skóre: 29 | blog: Sem_Tam | Frýdek-Místek
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    No dávno. Na Gentoo mám stále 4.7.3 a ta barvičky neumí. No a 4.8 je zatím stále hard masked.
    Jardík avatar 18.9.2013 13:30 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    4.8.1 mám už v Archu nějaký pátek :-) Nechápu, proč se vývojáři některých distribucích (ehm většiny) drží zuby nechty zastaralého softwaru, přestože nová verze přináší opravy chyb a pak je backportují jak opice.
    Věřím v jednoho Boha.
    Jakub Lucký avatar 18.9.2013 13:41 Jakub Lucký | skóre: 40 | Praha
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    protože když na takovém systému provozuješ nějakou vlastní (nebo někým jiným) naprogramovanou ***, tak se ti to s upgradem dost může rozbít. A nic není horší, než rozlícení zákazníci, kterým jsi něco rozbil...
    If you understand, things are just as they are; if you do not understand, things are just as they are. (Zen P.) Blogísek
    Jardík avatar 19.9.2013 01:37 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    No já se nechcu hádat, ale jak může nové gcc rozbít nějaký program mi nejde do hlavy. Nebo proč by jím neměl jít zkompilovat? Snad pokud dodržuji standard jazyka, tak mi to nová verze kompilátoru nemůže rozbít, ba naopak bych řekl, že ten standard bude zvládat lépe. (ehm).
    Věřím v jednoho Boha.
    19.9.2013 06:36 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC

    Upgrade toolchainu bývá jeden z nejrizikovějších. Kromě obvyklých problémů, které jsou u jakéhokoli balíku, v tomto případě musíte počítat i s tím, že nezanedbatelné procento balíčků v distribuci s novou verzí najednou z různých důvodů nepůjde přeložit. U gcc nejčastěji bývá důvodem větší přísnost na syntaxi, kdy konstrukce, které dříve prošly s warningem, najednou způsobí tvrdou chybu. No a podle očekávání jsou to nejčastěji právě ty balíčky, které nejsou zrovna nejaktivněji maintainované.

    pokud dodržuji standard jazyka

    Standard, který většina programátorů nikdy neviděla, protože oficiálně ho ani nemohou získat jinak než že si ho koupí za ne zrovna zanedbatelnou částku (nebo si pokoutně stáhnout odněkud draft). A to nemluvím o jeho rozsahu.

    Jakub Lucký avatar 19.9.2013 08:16 Jakub Lucký | skóre: 40 | Praha
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    kromě všeho, co napsal pan Kubeček jsou to taky bugy. Nový kód v kompileru jsou nové bugy a nové bugy ve vygenerované binárce jsou spousta nových problémů (někde níže se píše o nekonečné smyčce v Postgresu)

    Tenhle bleeding-edge SW je super na svůj domácí vývoj, ale když ty buildy jdou do celého světa, tak bych se držel osvědčených verzí...
    If you understand, things are just as they are; if you do not understand, things are just as they are. (Zen P.) Blogísek
    pavlix avatar 19.9.2013 10:49 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    No já se nechcu hádat, ale jak může nové gcc rozbít nějaký program
    Čekej reakce lidí, kterým se to děje dnes a denně. Například u NetworkManageru běžně selhává kompilace na Gentoo kvůli warningům proměněným v errory. Dokonce mám pocit, že to ani není upstream verzí GCC ale nějakými úpravami výchozí konfigurace, ale to je čirá spekulace.
    Snad pokud dodržuji standard jazyka
    Teoretik idealista? Zrovna ty warningy eskalované na errory jsou jeden příklad za všechny. Úpravy bývají triviální, ale pokud jde o celou distribuci, je toho dost.
    19.9.2013 11:06 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    U malého one-man-show projektu se dá s dostatečně pevnou vůlí dodržovat "no warning" politika. U většího projektu, kam přispívá spousta různých lidí, je to téměř nadlidský úkol a obdivuji ty, komu se to přesto daří.
    Josef Kufner avatar 19.9.2013 13:30 Josef Kufner | skóre: 67
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Nestačí nepřijímat patche s warningem? Na to jde udělat jednoduše automatický test a prostě před merge vyžadovat, aby procházel.
    Hello world ! Segmentation fault (core dumped)
    19.9.2013 13:43 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Teoreticky ano. V praxi ale narazíte na to, že se někdy warning objeví jen v určitých verzích překladače, při určitých CFLAGS nebo jen při určitých kombinacích konfiguračních voleb. Třeba tady jsem si sice dal pozor, aby i při !CONFIG_SYSCTL (což je hodně neobvyklé) nevznikl dead code, ale už jsem přehlédl, že se tam pak objeví nepoužitý label.
    pavlix avatar 19.9.2013 14:02 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    To je pravda. Dotyční pak mají na výběr jestli změní konfiguraci tak, aby jim build prošel nebo nahlásí chybu (a změní si případně konfiguraci dočasně).

    Ale zrovna o tom jsem psal v 72.
    pavlix avatar 19.9.2013 14:00 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Je to triviální. Stačí by default nastavit build tak, aby warningy, na kterých záleží, byly interpretovány jako chyby. A nikdo přece nezačlení patch, který ani nebuilduje.
    stativ avatar 19.9.2013 11:05 stativ | skóre: 54 | blog: SlaNé roury
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Zapomínáš na bugy v kompilátoru.
    Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
    Marián Kyral avatar 18.9.2013 15:43 Marián Kyral | skóre: 29 | blog: Sem_Tam | Frýdek-Místek
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    No na Gentoo předchází každému upgrade gcc rozsáhlé testování. Přece jen je to u distribuce kompilované ze zdrojáků jedna z nejpodstatnějších částí instalace. Ty máš možná nejaktuálnější gcc. ale určitě jím nemáš překompilovány všechny programy.
    18.9.2013 21:23 mpel
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    $ cc -v 2>&1 |tail -n1

    gcc version 4.9.0-pre9999 20130917 (experimental) commit 6b99cb5e6af1b911414c1b34d3a163b4b52a1ad7 (Gentoo 4.9.0_pre9999)

    Mám tím překompilovány všechny programy (některé starším buildem pochopitelně). Gentoo konkrétně umožnuje používat víc verzí GCC zároveň a přepínat mezi němi pomocí programu gcc-config (Ví někdo, proč to není modul do eselect?), takže i když se něco rozbije, máte po ruce záložní řešení.
    pavlix avatar 18.9.2013 21:42 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    některé starším buildem pochopitelně
    ?
    gcc version 4.9.0-pre9999
    A tušíš, proč je 4.8 na Gentoo stále hardmasked?
    18.9.2013 22:14 mpel
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Starším buildem == 4.9.0-pre9999 se starším datem. Overlay "toolchain" nějak magicky zajistí, že při "emerge sys-devel/gcc" se z gitu stáhne bleeding edge verze. Když náhodou něco nejde zkompilovat, zkusím nejdřív poslední gitové a teprve potom (už si nepamatuju, kdy a s čím naposledy) nějaké starší.

    Proč je právě teď oficiální 4.8 hardmasked opravdu netuším, proces odmaskovávání neznám. Bleeding edge (tehdy 4.8.0-pre9999) jsem začal používat v době, kdy bylo 4.7 oficiálně čerstvě stabilní a 4.6 pořád hard-masked. S verzemi označenými na gcc.gnu.org jako stabilní jsem problém snad nikdy neměl.

    Jednou mi tehdy nestabilní 4.8 vygenerovala nekonečnou smyčku uprostřed PostgreSQL při CREATE TABLE :-) Ale na testovacím stroji mít bleeding edge překladače a knihovny mi už nějaký ten čas ušetřilo.
    18.9.2013 22:39 Ivorne | blog: Ivorne
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Jakým způsobem ti může nejnovější gcc ušetřit čas?
    18.9.2013 23:25 mpel
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Napíše varování na věc, kterou jsem před rokem nespravil a přehlídl. Spadlý program nemusím debugovat, ale prostě ho zkompiluju novým/jiným překladačem a spravím "nově vzniklé" problémy. Nové nástroje v testovacím prostředí pomáhají řešit problémy dřív, než stihnou nastat (při migraci nebo pádu ostré verze). Samozřejmě je pak třeba otestovat ještě proti starým/stabilním/používaným, což je ale jednodušší, protože všechno takto rozbité už někdo jiný spravil.

    Není to v žádném případě stoprocentní, ale pomáhá to.
    pavlix avatar 19.9.2013 14:04 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Proč je právě teď oficiální 4.8 hardmasked opravdu netuším, proces odmaskovávání neznám.
    Jedním z kroků je navrhnout ho v bugzille.
    18.9.2013 22:51 mimi.vx | skóre: 37 | blog: Mimi.VX | Praha
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC

    protože je ještě dost věcí v bugzile které se s GCC-4.8 nepřeloží,

     

    a další sranda je to že gcc-4.8 je dost oproti předchozím rozdílné viz http://gcc.gnu.org/gcc-4.8/porting_to.html

    USE="-gnome -kde";turris
    David Watzke avatar 19.9.2013 16:46 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Ví někdo, proč to není modul do eselect?
    Existuje (či existoval?) eselect compiler, ale sám používám gcc-config, protože je to úplně jedno.
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    coder avatar 19.9.2013 20:09 coder | skóre: 4 | blog: lINUKS
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Na archu je sice poslední gcc a poslední knihovny ale rozbíjí to možnost kompilace různých programů. To si na Gentoo nemůžou dovolit. Ale to ty určitě víš.
    Luboš Doležel (Doli) avatar 18.9.2013 06:58 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Až od 4.9.
    18.9.2013 07:34 Khardix
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Až od 4.9.
    Na gcc 4.8.1 -fdiagnostics-color=auto funguje. Funguje i detekce $GCC_COLORS, která danou volbu zapíná automaticky, je-li nastavena (http://gcc.gnu.org/onlinedocs/gcc/Language-Independent-Options.html).
    18.9.2013 07:36 Nemo
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Me to nefunguje a ani Google takovy prepinac nezna.
    pavlix avatar 18.9.2013 09:09 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    ...
    David Watzke avatar 18.9.2013 10:49 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Domnívám se, že to jen někdo neumí použít Google (neví, co pro něj znamená znak "-" na začátku slova) :-)
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    pavlix avatar 18.9.2013 09:25 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Tento evidentně zvrácený kód bude pod GCC zkompilován s pouhým varováním, kdežto pod Clangem dostanete chybu. (Nevylučuji, že Clang nějak přinutíte to akceptovat.)
    GCC umí být maximálně tolerantní, tedy dokáže zkompilovat snad vše, co zkompilovat jde. Tvrdé chyby hlásí snad jen když není zbytí. Nedá se říct, že by to bylo špatně, je to jedna z možností jak kompilaci řešit. Na druhou stranu libovolné warningy můžeš v tvrdé chyby proměnit vyladěním -Werror nebo můžeš zkusit -pedantic-errors.
    Apple je na vývoji Clangu/LLVM silně zainteresován a důvodem je už výše zmiňovaný přechod GCC na GNU GPLv3. Apple na GCC silně závisí (závisel) a od tohoto přechodu zůstal zaseknutý na posledních verzích, co vyšly pod starou licencí.
    Otázkou je, co tím Apple získal a co by ztratil použitím kompilátoru pod GPLv3. Popřípadě co by je stála analýza rizik a jejich zalepení (například patchováním GCC, pokud by to bylo nutné) a zda tu analýzu provedli.
    Proto Apple logicky podporuje projekt pod jemu příjemnější (volnější) licencí.
    Já chápu, že GPLv3 není zrovna pohodlná, ale konkrétně u kompilátoru si nejsem vědom toho, že by představovala až takový problém. Jestli třeba v Apple někdo nezdržoval GPLv3 GCC za jiným účelem (například odůvodněním LLVM). Ale rád se nechám poučit o jiných teoriích ;).
    18.9.2013 12:11 Ivan
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    GCC umí být maximálně tolerantní, tedy dokáže zkompilovat snad vše, co zkompilovat jde. Tvrdé chyby hlásí snad jen když není zbytí. Nedá se říct, že by to bylo špatně, je to jedna z možností jak kompilaci řešit. Na druhou stranu libovolné warningy můžeš v tvrdé chyby proměnit vyladěním -Werror nebo můžeš zkusit -pedantic-errors.
    Gcc dokaze zkompilovat i to co by se zkompilovat nemelo. V Ccku umoznuje definovat funkci uvnitr funkce, takze pokud na zacatku kodu zapomenete na jednu slozenou zavorku, tak gcc ohlasi chybu az na samem konci souboru. Proto je v uzitecne davat stredniky i tam kde syntakticky byt nemusi.

    Na druhou stranu ma GCC i neco striktenejsi semantickou kontrolu u sablon nez ma MSVC. MSVC dokaze preparsovat sablonu i kdyz nezna definice typu v ni pouzitych. Gcc provadi (asi jenom castecnou) semantickou kontrolu sablon i kdyz je zrovna nepouzijete (instantiate).
    18.9.2013 21:30 Sten
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    GCC (ve výchozím nastavení) zkompiluje to, co by podle libovolné verze C či C++ mělo jít zkompilovat, a odmítá jen to, co nikdy nebylo povoleno. Proto povoluje funkce ve funkcích nebo return bez hodnoty u funkce deklarované s návratovou hodnotou, zatímco brání definici šablon, které obsahují neznámé typy. (Existují ale i výjimky, třeba extern template GCC kvůli komplexnosti takové implementace nikdy neimplementovalo a po vypuštění extern template z C++11 to už ani neplánuje.)
    18.9.2013 21:25 Sten
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Otázkou je, co tím Apple získal a co by ztratil použitím kompilátoru pod GPLv3. Popřípadě co by je stála analýza rizik a jejich zalepení (například patchováním GCC, pokud by to bylo nutné) a zda tu analýzu provedli.
    Apple používá Objective-C a Objective-C++. Pro ladění těchto jazyků (a třeba nedávno zavedený automatický reference counting) se interně lépe strukturované LLVM hodilo. Stejně jako pro JIT kompilace, třeba implementace OpenGL v MacOS X se JIT kompiluje podle hardware, na kterém se spustí.
    Já chápu, že GPLv3 není zrovna pohodlná, ale konkrétně u kompilátoru si nejsem vědom toho, že by představovala až takový problém. Jestli třeba v Apple někdo nezdržoval GPLv3 GCC za jiným účelem (například odůvodněním LLVM). Ale rád se nechám poučit o jiných teoriích ;).
    Pro JIT kompilace může GPLv3 představovat problém.
    pavlix avatar 19.9.2013 14:07 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Pro JIT kompilace může GPLv3 představovat problém.
    Zajímavé.
    18.9.2013 09:50 jka | skóre: 10
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Článek je dobrý jako nástin.

    Pro spoustu mnohem zajímavějších "fíčur" doporučuji mrknout na loňskou a letošní prezentaci z Going Native. Z počátku jsem byl skeptický a zaujatý, když začal kritizovat GCC, ale rychle mě přesvědčil konkrétními technickými příklady místo nějakých náboženských sporů o licenci.

    A naprosto mě dostala ukázka detekce runtime chyb, race conditions a vůbec věcí, které běžně ladit je peklo.

    http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Clang-Defending-C-from-Murphy-s-Million-Monkeys

    http://channel9.msdn.com/Events/GoingNative/2013/The-Care-and-Feeding-of-C-s-Dragons
    18.9.2013 10:33 Ondra
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    18.9.2013 10:56 Karel
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Ano, ale to všechno je až od verze 4.8... je až s podivem, jak dlouho se vývojáři GCC stavěli k těmto věcem stylem "správnej programátor chyby nedělá, takže tohle implementovat je ztráta času". A hle, stačí pár let a klesající popularita jim ukázala co si o tom myslí ostatní :-P. Už jenom kvůli zdravému soupeření, zlatý Clang ;-).
    pavlix avatar 18.9.2013 11:21 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    +1

    Nebýt Clangu tak GCC žádné takové vlastnosti nemá.
    18.9.2013 15:01 chrono
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Skôr išlo o "správny programátor používa IDE".
    pavlix avatar 18.9.2013 16:05 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    s/IDE/GNU Emacs
    q66 avatar 18.9.2013 18:11 q66 | skóre: 32 | blog: Q's CZ devblog
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    s/GNU Emacs/vim/
    pavlix avatar 19.9.2013 14:07 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    To by tak trochu postrádalo ten vtip.
    18.9.2013 21:42 mpel
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Ale správnej programátor opravdu chyby nedělá; frustrováni ošklivými hláškami jsou programátoři opatrnější ;-)

    Větší problém (který zatím moc neřeší ani jedna strana) podle mě je, že některé knihovní třídy mají poměrně bohatou hierarchii (a to i STL, některé implementace k tomu přidávají ještě své úrovně abstrakce) a uživatel nedostane chybu na úrovni svého kódu, ale na všech úrovních po cestě. Sebesprávnější programátor má potom smůlu, protože se kvůli jednomu překlepu topí v hláškách cizího kódu.

    Třeba už to ale nějaké cool IDE vyřešilo a pro svoji ignoranci o tom nevím - představoval bych si takové hlášky rozklikávací s náhledy kódu při najetí myší nad danou třídu, což s clang[++]em/LLVM určitě nebude problém.
    19.9.2013 07:58 vitamin
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    To je skor problem c++ ktory bude snad vyrieseny v dalsom standarte c++1y pridanim Concepts Lite: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3580.pdf
    progdan avatar 18.9.2013 10:34 progdan | skóre: 34 | blog: Archař | Teplice/Brno
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC

    S pouzitim Clangu pro parsovani kodu v IDE si uz pohravali v QtCreatoru (ja na to i branch v gitu) - problem je, ze je to radove pomalejsi nez "naivni" implementace, kterou vetsina IDEcek pouziva, takze na obarveni klicoveho slova nebo doplneni nazvu metody za tecku/operator-> se musi cekat, coz urcite zadneho programatora nepotesi :-) Z toho duvodu se to zatim jeste nikde moc neujalo.

    Collecting data is only the first step toward wisdom, but sharing data is the first step toward the community.
    18.9.2013 13:43 extremni lama | skóre: 14 | blog: e_lama
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Nevim jestli tohle v tom clang API nejak neresi, ale dalsi problem bych videl v tom ze normalni parser asi bude na obarvovani/doplnovani moc prisnej. Na to se bude spis hodit neco co ten kod jen tak proleti a moc nekontroluje jestli je spravne.

    Vim jak otravny treba je defaultni c++ obarvovani ve vimu, kde po otevreni levy zavorky tam zacnou cervene svitit ruzny pravy zavorky, protoze "nepasujou" a sviti dokud nedokoncis psani.

    Uz vidim jak zacnu psat novy radek kodu a v tu chvili me vsechen nasledujici kod zacne cervene blikat dokud nedopisu radek a neukoncim strednikem :-)
    The enemy of my enemy is still my enemy.
    pavlix avatar 18.9.2013 16:16 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Vim jak otravny treba je defaultni c++ obarvovani ve vimu, kde po otevreni levy zavorky tam zacnou cervene svitit ruzny pravy zavorky, protoze "nepasujou" a sviti dokud nedokoncis psani.
    To mi víceméně vyhovuje. Aspoň se to nesnažím kompilovat, dokud to neopravím.
    Uz vidim jak zacnu psat novy radek kodu a v tu chvili me vsechen nasledujici kod zacne cervene blikat dokud nedopisu radek a neukoncim strednikem :-)
    Blikání je špatné obecně :). Ale bylo by zajímavé to zkusit neblikající a ne přespříliš výrazné.
    mirec avatar 18.9.2013 13:52 mirec | skóre: 31 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC

    Ja mám starú šunku notebook a zase až tak pomalé to dopĺňanie vo vime nie je (~0.5s, dopĺňanie sa spúšťa na pozadí). Backend musí byť ale celkom slušne nastavený, zapnuté cachovanie ... Samozrejme hovorím o dopĺňaní v komplexných projektoch používajúcich Qt 5 (malá konzolová aplikácia používajúca max tak fstream bude samozrejme rádovo rýchlejšia).

    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    xkucf03 avatar 21.9.2013 11:08 xkucf03 | skóre: 46 | blog: xkucf03
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC

    A pak že je Java pomalá :-) Tam jsou v IDE (např. Netbeans) tyhle věci běžné a nápověda se zobrazí hned.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-Výuka.cz, Nekuřák.net
    stativ avatar 21.9.2013 12:59 stativ | skóre: 54 | blog: SlaNé roury
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Akorát, že Java se parsuje mnohem snáz.
    Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
    18.9.2013 13:53 Tom
    Rozbalit Rozbalit vše LLVM a Clang nově používá Embarcadero
    Nově LLVM a Clang využívá Embarcadero pro překlad ObjectPascalu (Delphi) pro iOS a Android - blíže na delphi.cz - a zdá se, že se angažují i ve vývoji (např. debugger)
    18.9.2013 14:55 tom
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    IMO to s tim returnem je spatnej priklad. V C to je totiz v poradku a nedefinovane chovani ma nastat, az kdyz se ta vracena hodnota pouzije (neplati pro C++).
    Grunt avatar 18.9.2013 19:43 Grunt | skóre: 22 | blog: Expresivní zabručení | Lanžhot
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Autor má u mě malé bezvýznamné plusko za API. Kdyby se dalo zacinkat pár drobáky v mističce, už by cinkali.
    int funkce()
    {
            return;
    }
    Tento evidentně zvrácený kód
    Huh? A co je na něm zvráceného?
    Já osobně jsem totiž s GDB krajně nespokojený. Pro takovéto obyčejné použití celkem postačí, po letech používání ale začnete narážet na podivné chování (GDB pošle samo sobě SIGSTOP), pády GDB (laděný program často „sejme“ i debugger) a další podivnosti (GDB mi při auto-completion nabídne funkci pro breakpoint, pak ale řekne, že je nedefinovaná).
    Čoveče, jak to používáš? S tím jsem se nikdy v životě ještě nesetkal. A jinak debuggovat jde i gdb, pro ty případy kdy samo sobě pošle SIGSTOP (to by se asi dít nemělo).
    GDB bohužel nebylo nikdy navrženo tak, aby sloužilo jako API pro jiné programy (stav je v globálních proměnných apod.), takže to ani jinak nejde.
    To je omyl. Jen je k tomu potřeba nepoužívat TUI. To bylo skutečně navrženo jako UI, ne jako API (i když to tak na první pohled nemusí vypadat).
    Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!
    Luboš Doležel (Doli) avatar 18.9.2013 19:49 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Huh? A co je na něm zvráceného?
    Nedefinovaná návratová hodnota. Zakázali to sice tuším až v C99, ale autora takového kódu bych za to nakopal.
    Čoveče, jak to používáš? S tím jsem se nikdy v životě ještě nesetkal.
    Při vývoji Darlingu klidně několikrát za den. Těžko říct, to přesně to způsobuje, ale nemůžu se LLDB dočkat.
    To je omyl. Jen je k tomu potřeba nepoužívat TUI.
    I tak je to oproti klasickému API bída.
    Grunt avatar 18.9.2013 20:38 Grunt | skóre: 22 | blog: Expresivní zabručení | Lanžhot
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Nedefinovaná návratová hodnota. Zakázali to sice tuším až v C99, ale autora takového kódu bych za to nakopal.
    Tož nám co pamatujeme ještě BASIC (GOSUB, RETURN) a kované procedury (subroutine, proto SUB, jinak žádné call, ale postaru ještě pěkně GOTO) to až tak zvrácené/nepřirozené nepřijde. Ostatně jestli hned za callem nic z akumulátoru nevyzvedáváš, tak je i docela nesmysl do něj něco cpát, konvence, nekonvence. A furt platí že Céčko je programovací jazyk a ne nějaký strojový syntaktický popis programu. Jazyk se většinou píše na klávesnici, na tu obrazovku neskáče ten kód sám od sebe. Mně osobně by jako prasení nepřišlo i kdyby tam žádný return nebyl, protože funkce je většinou deklarovaná někde mimo hlavní funkce a také je jasně ohraničená složenými závorkami. Pro nás co píšeme ještě stále programy v textovém editoru to furt jeden ENTER a min. šest ušetřených písmenek. Je kravina pokračovat někde v prostoru mimo program, takže já bych od kompilátoru očekával (leda by to bylo nejednoznačné), že za „}“ ten leave a ret automaticky doplní a nebude otravovat jinak to není kompilátor ale otravný krám. A v C99 si můžou psát co chtějí.
    Při vývoji Darlingu klidně několikrát za den. Těžko říct, to přesně to způsobuje,
    Samozřejmě asi máš dost starostí s vývojem Darlingu, takže to po tobě nikdo nemůže chtít, ale GDB je stále ve aktivním vývoji. Takže pokud ti to fakt někde blbne a je to nějaká trivialita je dobré stáhnout si zdrojáky gdb a můžeš se pokusit to místo které vrací kraviny najít. Někdy je to lepší než se nad tím rozčilovat a doufat v nějakou alternativu. Jinak i když GDB nemá tolik možností jako jiné debuggery, mi přišel ze všech nejlogičtější (jako by půlku práce udělal za mě).
    I tak je to oproti klasickému API bída.
    Tak jestli chceš, GDB má i paketový protokol. Pointa je, že chceš-li implementovat API do GDB začínat se má tady, ne tady. To User Manual je všeříkající.
    Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!
    Grunt avatar 18.9.2013 20:41 Grunt | skóre: 22 | blog: Expresivní zabručení | Lanžhot
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    paketový protokol.
    No ale úplně nejlepší by bylo asi nevymýšlet nějaké kraviny a naučit se používat libgdb.
    Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!
    pavlix avatar 18.9.2013 21:19 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Ostatně jestli hned za callem nic z akumulátoru nevyzvedáváš, tak je i docela nesmysl do něj něco cpát, konvence, nekonvence. A furt platí že Céčko je programovací jazyk a ne nějaký strojový syntaktický popis programu. Jazyk se většinou píše na klávesnici, na tu obrazovku neskáče ten kód sám od sebe. Mně osobně by jako prasení nepřišlo i kdyby tam žádný return nebyl, protože funkce je většinou deklarovaná někde mimo hlavní funkce a také je jasně ohraničená složenými závorkami.
    Co je to za pseudofilosofické sračky? Když chci funkci bez návratové hodnoty, tak přece nebudu do hlavičky psát, že návratová hodnota je typu int, ne? Jaký je problém na té tvé klávesnici z doby BASICu místo int napsat v hlavičce void?
    Grunt avatar 18.9.2013 21:22 Grunt | skóre: 22 | blog: Expresivní zabručení | Lanžhot
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Problém je, že mi ten int unikl. Pak už to samozřejmě dává smysl. void nebo nic, pak mi přijde return zbytečný.
    Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!
    pavlix avatar 18.9.2013 21:29 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Problém je, že mi ten int unikl. Pak už to samozřejmě dává smysl.
    Tím je vyřešeno.
    void nebo nic, pak mi přijde return zbytečný.
    Vzhledem k tomu, že nic je ekvivalent int, tak bych viděl warning jako velmi relevantní (i když je to natolik bad style, že pak dávám přednost warningu v každém případě).
    Grunt avatar 18.9.2013 21:37 Grunt | skóre: 22 | blog: Expresivní zabručení | Lanžhot
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Vzhledem k tomu, že nic je ekvivalent int
    Jak jsem říkal. Staré dobré procedury. To se prostě zavolalo, vrátilo a takové kraviny jako návratové typy nebo hodnoty se vůbec neřešili. S ničím jiným než úspěchem se ani nepočítalo a když nastane chyba, nech si to vyřeší systém sám. Ono tou deklarací funkce bez zapsání typu na integer se automaticky počítá s funkcemi, ne s procedurami. Do šrotu s krámem jakýmsi (to je jako kdyby mě někdo chtěl vychovávat co mám psát).
    Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!
    pavlix avatar 19.9.2013 10:54 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Jak jsem říkal. Staré dobré procedury. To se prostě zavolalo, vrátilo a takové kraviny jako návratové typy nebo hodnoty se vůbec neřešili.
    Stačí před funkci napsat void. Výstup lze řešit prostřednictvím ukazatelových parametrů.
    S ničím jiným než úspěchem se ani nepočítalo a když nastane chyba, nech si to vyřeší systém sám.
    Vždy můžeš použít například funkci abort(). Remcáš nad věcmi, které vůbec nejsou zásadního významu.
    19.9.2013 11:41 Jindřich Makovička | skóre: 13
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Výstup lze řešit prostřednictvím ukazatelových parametrů.
    Proč tak složitě? Výstup stačí uložit do předem dané globální proměnné :)
    pavlix avatar 19.9.2013 12:54 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Cílem bylo ukázat, že to není až takový problém, nikoliv se dohadovat o používání či nepoužívání globálních proměnných.
    19.9.2013 06:40 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Pozor, v C je z historických důvodů "nic" totéž jako int, ne void.
    19.9.2013 15:45 j
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Trebas chces aby to vracelo int ... trebas kvuli rozsahu ... ale je ti jedno, co tam bude/nebude. Kompilator by te na to asi mel upozornit warningem, ale nevidim duvod, proc to neprelozit.
    19.9.2013 17:03 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Trebas chces aby to vracelo int ... trebas kvuli rozsahu ... ale je ti jedno, co tam bude/nebude.

    Tohle jsem nepochopil. Šlo by to trochu rozvést?

    20.9.2013 08:51 j
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    To je jednoduchy ... mam trebas 150 funkci, vsechny vracej int, kterej ma nejak definovanej rozsah (= nejaky mnoztvi Bytu)... a ja si vysledky (trebas) ukladam do pole intu. U nekterych je mi vysledek putna, ale nechci kvuli tomu vyrabet nejakou odbocku - to muze bejt drahy.

    A jednoduse pak vim, ze vysledek po zavolani tech 150ti funci bude nejak velkej kus dat v pameti, se kterym trebas neco dalsiho provedu.
    pavlix avatar 20.9.2013 09:27 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    nejak definovanej rozsah (= nejaky mnoztvi Bytu)
    Rozsah a množství bajtů jsou sice na sobě do jisté míry závislé, ale dát mezi to rovnítko je pitomost.
    a ja si vysledky (trebas) ukladam do pole intu. U nekterych je mi vysledek putna, ale nechci kvuli tomu vyrabet nejakou odbocku - to muze bejt drahy.

    A jednoduse pak vim, ze vysledek po zavolani tech 150ti funci bude nejak velkej kus dat v pameti, se kterym trebas neco dalsiho provedu.
    Můžeš popsat mechanismus ukládání a vyzvedávání těch hodnot, odpovídající konstrukce v C a souvislost s návratovou hodnotou typu int? Mám takové podezření, že vaříš z vody.
    20.9.2013 09:59 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC

    To, co píšete, moc smysl nedává - když voláte konkrétní funkci, tak prostě musíte (už při kompilaci) vědět, co je zač a co (jaký typ) vrací. Ne že vám vrátí "nějaký počet bytů".

    Ale aspoň mne to navedlo na skutečný use case. Řekněme, že jde o callback nebo mám v poli pointery na funkce, z nichž některé vracejí užitečnou hodnotu a od některých žádnou informaci neočekávám. Pak je potřeba, aby měly všechny stejný typ návratové hodnoty. Ale i v tom případě bych to neřešil a prostě tam napsal "return 0". Ta jedna instrukce xor až tak závratný vliv na výkon mít nebude.

    pavlix avatar 20.9.2013 11:38 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Ale i v tom případě bych to neřešil a prostě tam napsal "return 0".
    +1

    Nicméně to asi nebude platit pro pole funkcí, ale spíše pro pole struktur, ve kterých budou kromě funkcí i informace, ze kterých zjistím, zda mě návratová hodnota zajímá. Pak je ale otázkou, jeslti skutečně nebudu chtít vracet data ve formě „nějakého počtu bajtů“, ale na to se spíše hodí funkci předávat odkaz na buffer nějaké velikosti nebo dle vhodnosti použít některou z mnoha jiných technik.
    20.9.2013 12:12 j
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Ale o tom, ze by tam mohlo/melo neco byt jako navratova hodnota nebyla rec, to je samo sebou, byla rec o tom, ze neni zadny duvod, aby to prekladac s errorem neprelozil.

    Je to zhruba stejny, jako kdyz neinicializuju promennou a prectu si jeji obsah ... ocekaval bych nejaky warning, ale ne error.

    BTW: Ja prece vim ze ta funkce vraci int, stejne jako vsechny ostatni z tech 150ti ... a zaroven vim, ze int na dany architekture/kompilatoru/... ma rekneme 4 Byty.
    pavlix avatar 20.9.2013 12:30 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Debata o hovně. Prázdný return je prasárna a překladač netuší, jak převést void na int, tudíž hodí error. Teoreticky by mohl hodit warning a buď interpretovat void jako magickou konstantu (nulu), nebo by mohl return bez argumentu interpretovat jako návrat bez inicializace návratové hodnoty. Ale je to zbytečnost, když je stejně zřejmé, že je to špatně.

    Pokud bys chtěl něco zakódovat/konvertovat do návratového int, tak to buď musí být z datového typu, které překladač dokáže konvertovat automaticky, nebo musíš to konverzi provést explicitně.
    18.9.2013 20:51 tom
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Huh? A co je na něm zvráceného?
    Nedefinovaná návratová hodnota. Zakázali to sice tuším až v C99, ale autora takového kódu bych za to nakopal.
    Definovat vse muze byt drahe. Pracoval jsem s API, kde byla obdoba errno a navratova hodnota mela smysl jen kdyz nebyla "errno" definovana. V tom pripade je naprosto zbytecne z funkce neco vracet. Kdyz takovych pripadu mate v kodu stovky, tak to je na 8bitovem kontroleru uz poznat.
    Luboš Doležel (Doli) avatar 18.9.2013 20:55 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    To je poněkud špatný návrh API. Nebyl by přece problém to navrhnout tak, aby se nevracela hodnota zbytečně a funkčnost zůstala zachovaná.
    Grunt avatar 18.9.2013 21:06 Grunt | skóre: 22 | blog: Expresivní zabručení | Lanžhot
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Jak jsem říkal, pro ty co byli zvyknutí na GOTO a GOSUB, těm přišlo i nějaké vracení jako zbytečné a aspoň já měl z počátku problém ho pochopit.
    Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!
    Luboš Doležel (Doli) avatar 18.9.2013 21:12 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Ano. To je přesně ten typ kódu, ze kterého jsem vůbec přišel na to, že to GCC akceptuje. Teď jeden takový portuju na Android :-) Interrupty do toho cpu přes signály a další hrůzy :-)
    18.9.2013 21:20 tom
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    To je poněkud špatný návrh API. Nebyl by přece problém to navrhnout tak, aby se nevracela hodnota zbytečně a funkčnost zůstala zachovaná.
    Jo, ale za cenu prodlouzeni a zpomaleni kodu. Casto se totiz muze vyplatit z nedefinovane hodnoty vypocitat jinou nedefinovanou nez prodlouzit nejdelsi cestu programem pridanim dalsich podminek. To, ze neco pocitate zbytecne, je jedno, protoze stejne musite mit tolik casu, kolik ho je potreba v nejhorsim pripade.
    pavlix avatar 18.9.2013 21:42 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    To se dá (teoreticky) pochopit, ale otázkou je, zda jsou takové případy reálné nebo domnělé a to už asi bez konkrétního případu nepůjde. V jednu chvíli tu podmínku budeš muset vyhodnotit tak jako tak, takže je velkou otázkou, jestli je tento typ optimalizace zrovna tím nejlepší.

    Nastavení errno na chybovou hodnotu se typicky provádí při chybě, která je výsledkem vyhodnocení nějaké podmínky, která bude nejspíš sama o sobě podstatně dražší než (zbytečné) nastavení návratové hodnoty. Navíc mám takové podezření, že když prohodíš errno s návratovou hodnotou, celý problém odpadne.

    Docela se těším na vyvrácení mých představ a jsem v takovém případě ochotný platit oběd na některé z brzkých konferencí.
    Josef Kufner avatar 18.9.2013 22:49 Josef Kufner | skóre: 67
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Ono taky errno je velký problém pro vícevláknové aplikace. Ať už jde o pthread na Linuxu nebo interrupty na 8bitu.

    Styl, kdy funkce vrátí kód chyby a data předá na pointery v parametrech mi přijde asi nejlepší. V poslední době jsem však přišel na chuť vyjímkám, ty dokáží ještě víc zjednodušit život.
    Hello world ! Segmentation fault (core dumped)
    pavlix avatar 19.9.2013 10:56 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Ono taky errno je velký problém pro vícevláknové aplikace. Ať už jde o pthread na Linuxu nebo interrupty na 8bitu.
    To už je trochu jiné téma.
    Styl, kdy funkce vrátí kód chyby a data předá na pointery v parametrech mi přijde asi nejlepší. V poslední době jsem však přišel na chuť vyjímkám, ty dokáží ještě víc zjednodušit život.
    Tady se bavíme o tom, že tom chce optimalizovat do poslední instrukce ;).
    Luboš Doležel (Doli) avatar 19.9.2013 19:54 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Na Linuxu snad ne, je to thread specific.
    pavlix avatar 20.9.2013 09:29 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Bavíme se konkrétně o glibc, že. Máš pravdu, je rozdíl mezi klasickým errno patternem a thread-local errno v glibc.
    2.10.2013 17:14 pasky | skóre: 3 | blog: pasky
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Nevím, co je myšleno "klasickým errno patternem", ale že je errno specifická pro každý thread, je specifikováno v POSIXu.
    18.9.2013 22:57 tom
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Funkce v cyklu nastavuji pri chybe priznak errno (to same mohou delat funkce volane z nich). Pokud budete vracet rovnou chybu, kod se vzdy musi prodlouzit. Dulezita je worst-case doba behu funkce. Priklad je dost umelej, ale myslim, ze styl je jasnej.
    void cidla_ok(void) {
            int hodnota, rtn, i;
    
            for (i = 0; i < pocet_cidel; i++) {
                    hodnota = cti_z_i2c(cidla[i].i2c_adresa);
                    hodnota = skaluj(hodnota, cidla[i].typ_cidla);
                    rtn += hodnota_ok(hodnota, cidla[i].typ_hodnoty);
            }
    
            if (errno || rtn) {
                    reboot();
            }
    }
    
    19.9.2013 08:11 __dark__
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Sorry, ale nevim jestli toto je zrovna zdarny priklad. Ten kdo to napsal by se mel nad sebou zamyslet :-P
    19.9.2013 08:29 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC

    Tohle nemá šanci obecně fungovat. Na jedné straně totiž potřebujete, aby v případě, že k chybě nedojde, zachovala se hodnota errno (jinak vám úspěch druhého volání zamaskuje chybu prvního), ale pak nemáte nijak zaručeno, že pokud všechny uspějí, na konci bude errno nula. Mimochodem, standardní C knihovna vám v případě úspěchu negarantuje vůbec nic, takže nikdy nestačí kontrolovat errno, ale vždy musíte nejdřív zkontrolovat návratovou hodnotu.

    A efektivitou bych se neoháněl už vůbec, když pokaždé zbytečně projdete celý cyklus, i když bude výsledek jasný třeba hned po první iteraci.

    19.9.2013 09:22 tom
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Prectete si znovu cely thread ;-)

    Tohle nemá šanci obecně fungovat. Na jedné straně totiž potřebujete, aby v případě, že k chybě nedojde, zachovala se hodnota errno (jinak vám úspěch druhého volání zamaskuje chybu prvního), ale pak nemáte nijak zaručeno, že pokud všechny uspějí, na konci bude errno nula. Mimochodem, standardní C knihovna vám v případě úspěchu negarantuje vůbec nic, takže nikdy nestačí kontrolovat errno, ale vždy musíte nejdřív zkontrolovat návratovou hodnotu.

    libc se v projektu nepouzivala, proto jsem v komentarich psal "errno" a obdoba errno a ne errno

    A efektivitou bych se neoháněl už vůbec, když pokaždé zbytečně projdete celý cyklus, i když bude výsledek jasný třeba hned po první iteraci.

    Projit cely cyklus zbytecne me vubec nevadi, protoze na spracovani cyklu mam vyhrazeny dany cas. Je proto lepsi obcas delat zbytecne veci a snizit maximalni mozny cas behu. Prumerny cas je mi ukradeny.
    19.9.2013 09:27 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Prectete si znovu cely thread ;-)

    A vy si přečtěte příspěvek, na který odpovídáte.

    libc se v projektu nepouzivala, proto jsem v komentarich psal "errno" a obdoba errno a ne errno

    To je úplně jedno. To, co jsem napsal, je problém pro jakoukoli implementaci. Buď v případě úspěchu errno vynulujete nebo ho necháte - ale vaše ukázka nebude fungovat správně ani v jednom případě. Samozřejmě ještě může být chování nedefinované (jako ve standardní C knihovně), ale pak jste na tom ještě hůř.

    19.9.2013 09:59 tom
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    V pripade uspechu se "errno" nemenilo.
    19.9.2013 10:08 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    V tom případě pokud všechna volání uspějí, víte jen, že hodnota bude stejná jako na začátku, ne že bude nulová.
    pavlix avatar 19.9.2013 11:01 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    To bych chápal jak účel, podle mě chce zjistit zda v sérii akcí nastala nějaká chyba, nikoli zda v konkrétní akci nastala nějaká chyba, pričemž uvedená funkce je jen jednou z akcí.
    19.9.2013 11:11 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    chce zjistit zda v sérii akcí nastala nějaká chyba

    Jenže to právě nezjistí, pokud před tou sérií nenastaví errno na nulu. A to neudělal.

    Možná vypadám jako hnidopich, ale při své práci se setkávám s důsledky podobných "samozřejmých" předpokladů (které se tu a tam ukážou neoprávněnými) příliš často na to, abych to mohl ignorovat.

    pavlix avatar 19.9.2013 11:35 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Příklad je napsaný úplně špatně. Myšlenku jsem spíše odhadoval.
    pavlix avatar 19.9.2013 11:08 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Tak za tenhle příklad bych ti nedal ani kus chleba. Neodpovídá diskuzi (1) v tom, že návratový typ je void a (2) v tom, že se v něm return nevolá vůbec, natož podmínečně.
    pavlix avatar 19.9.2013 11:37 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Až teď mě napadlo, že ta funkce může být ta volající, pak ti ale skutečně chybí nastavení errno, jak píše michal a bez definice té volané funkce to stejně nemá smysl.
    stativ avatar 19.9.2013 11:20 stativ | skóre: 54 | blog: SlaNé roury
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Čoveče, jak to používáš? S tím jsem se nikdy v životě ještě nesetkal. A jinak debuggovat jde i gdb, pro ty případy kdy samo sobě pošle SIGSTOP (to by se asi dít nemělo).
    Mě už se taky GDB podařilo nejednou shodit, takže se té nespokojenosti ani moc nedivím. Ale není třeba čekat na LLDB, docela slušný je i idb (intelácký debugger, je součástí Intel Composer, pro nekomerční účely zdarma). Nevýhodou je, že jeho UI je postavené nad Eclipse a je tedy šíleně pomalé.
    Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
    Grunt avatar 19.9.2013 12:36 Grunt | skóre: 22 | blog: Expresivní zabručení | Lanžhot
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Mě už se taky GDB podařilo nejednou shodit, takže se té nespokojenosti ani moc nedivím.
    Ono je asi dobré, pokud nějaký bug vyběhne nečekaně si uložit stav a pak se k němu vracet. Mně se teda zatím podařilo ho jenom zacyklit, musím to zaklepat, mně drží jako skála.
    Ale není třeba čekat na LLDB, docela slušný je i idb
    Pochopil jsem to tak, že nevyhovující je spíš způsob ovládání jak debuger samotný, že?
    Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!
    stativ avatar 19.9.2013 21:04 stativ | skóre: 54 | blog: SlaNé roury
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Já proti způsobu ovládání gdb nic nemám (to je spíš problém autorů IDE a různých GUI pro GDB). Spíš mám problém s tím, když debugger nefunguje tak jak má. V tom případě přijde alternativa více než vhod.
    Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
    20.9.2013 15:49 Ivan
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Ono je asi dobré, pokud nějaký bug vyběhne nečekaně si uložit stav a pak se k němu vracet. Mně se teda zatím podařilo ho jenom zacyklit, musím to zaklepat, mně drží jako skála.
    Pises "jen" v Ccku anebo i v C++? U projektu (se sablonama), ktery ma velke mnozstvi symbolu staci zmacknout 2x po sobe TAB ve spatnem kontextu a GDB jde do kopru. Z nejakoho duvodu se snazi zkombinovat vsechny symboly a dela to tak dlouho dokud ho nezabije OOM. O kterej bug presne je jedne to nemuzu rict - bugu na "TAB completition" v gdb existuje nekolik.
    Grunt avatar 18.9.2013 19:49 Grunt | skóre: 22 | blog: Expresivní zabručení | Lanžhot
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    V první řadě je nutné podotknout, že označení GCC je lehce matoucí. GCC totiž označuje jak sadu kompilátorů (GNU Compiler Collection) pro různé jazyky (C++, Java, Fortran, ...)
    Jak je to s kompilátorem pro Javu v GCC? Vždycky jsem to kompiloval, ale nikdy jsem si nevšiml, že by to bylo nějak využilo. Je to vůbec k něčemu dobré?
    Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!
    Luboš Doležel (Doli) avatar 18.9.2013 19:51 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    No, člověk z toho má jakousi nativní binárku bez bloatwaru v podobě JRE. Používá se to například u pdftk.
    Grunt avatar 18.9.2013 19:55 Grunt | skóre: 22 | blog: Expresivní zabručení | Lanžhot
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    No, člověk z toho má jakousi nativní binárku bez bloatwaru v podobě JRE
    Vždyť to je pomalu na erekci. Ještě jsem teda ale žádné třídy překládané do binárek v nasazení neviděl, ale budu to muset zkontrolovat. Cokoliv lepší než Java.
    Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!
    18.9.2013 23:06 Miki
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    +1

    :-D
    18.9.2013 23:04 Boris Dušek | skóre: 22 | blog: everything
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    na OS X se ale LLVM-GCC od roku 2008 běžně používá
    používalo, teď už se v podstatě používá jen clang ;-) (default už to nějakou dobu je, a v dnes vydaném Xcode 5 už bylo llvm-gcc dokonce odstraněno takže clang ("Apple LLVM compiler 5.0") je už jedinou Applem dodávanou možností).
    vim ~/.emacs
    18.9.2013 23:50 mikro
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Vdaka za clanok, jeden z najzaujimavejsich, ake som poslednou dobou na cz/sk webe cital.
    19.9.2013 14:43 Peter Fodrek | skóre: 10
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Ja tak isto, ale

    mozno by bolo dobre zmienit, ze existuje C++ backend,

    teda, ze LLVM vie vygenerovat kod v c++. V 2.9 existoval funkcin CBackend, ktory generoval low level C.

    Ten momenytalne skompilujem, ale nemal som Cas ho sprevadzkovat. Viem, kde ma chybu (pocet parametrov)
    little.owl avatar 19.9.2013 00:05 little.owl | skóre: 22 | Brighton
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Mate tady vsichni stesti, ze ted nemam cas!
    You're damned if you do, and you're damned if you don't.
    19.9.2013 10:46 frr | skóre: 33
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    :-D :-D :-D Jako že je tahle debata na mě moc vysoká liga (nebo spíš to není hra mého srdce) tak tahle hláška mě dohnala k slzám. Sorry za offtopic, nemůžu si pomoct.
    [:wq]
    3.1. 15:29 Tuttle | skóre: 1 | blog: tuttlovo
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Chechtal jsem se dve minuty!!! Diky! :-)))
    Petr Tomášek avatar 19.9.2013 09:02 Petr Tomášek | skóre: 37 | blog: Vejšplechty
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Tento evidentně zvrácený kód...

    pitomost

    pavlix avatar 20.9.2013 09:30 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    Slyšeli jste slovo odborníka. Amen.
    20.9.2013 10:03 David Jaša | skóre: 44 | blog: Dejvův blog
    Rozbalit Rozbalit vše Re: LLVM a Clang – více než dobrá náhrada za GCC
    To je skoro lepší než "tak pravil astrolog". :-)

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.