GCC 4.9

 ( trey | 2014. április 22., kedd - 13:57 )

A The GNU project és a GCC fejlesztők ma bejelentették a GNU Compiler Collection - röviden: GCC - 4.9-es kiadását. A GCC 4.9 egy "major" kiadás, azaz benne nem csak hibajavítások, hanem új funkciók és fejlesztések is találhatók. A változásokról részletesen a changes dokumentumban lehet olvasni. Dokumentáció itt.

További részletek a bejelentésben.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

A legfőbb újdonságok:

  1. Igen nagy teljesítményjavulás: „Memory usage building Firefox with debug enabled was reduced from 15GB to 3.5GB; link time from 1700 seconds to 350 seconds.”
  2. Sokat fejlődött a C++14 támogatás;
  3. AArch64, ARM, x64, PowerPC fejlesztések.

--
The Elder Scrolls V: Skyrim

Mielőtt valaki pezsgőt bontana, a teljesítményjavulás LTO build-re vonatkozik...
Hasznosnak persze hasznos, de jóval kevesebb embert érint.

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee." -- Ted Ts'o

Van valami hátránya az LTO általános használatának (tehát az -flto -fuse-linker-plugin kapcsolók megadásának) átlagos programok esetében? Néztem a wiki oldalát, de azt akkor lezárták, amikor az LTO ágat beolvasztották (kb. négy és fél éve), és gondolom, azóta pár dolog változott.

--
The Elder Scrolls V: Skyrim

Szerintem az LTO még nem érett meg az általános használatra. Egyedi esetben van értelme, sőt használom egy projektemnél ahol számít minden százaléknyi teljesítmény. Viszont jelenleg nagyon erőforrás igényes a használata, a phoronix tesztjeit nézve sok a javulás, de van még mit faragni rajta. Hátránya - azon kívül hogy nagyobb valószínűséggel készül rossz kód -, hogy aránytalan a plusz erőforrás kontra kód gyorsulás. Nagyságrendi becslésem alapján egy disztrib újrafordításánál az egyes szoftverek fordítási ideje 2-4x, a RAM használatának 3-10x növekedésével a kód gyorsulása -10% és +30% között lehet.

További infó és néhány teszt:
http://www.phoronix.com/scan.php?page=news_item&px=MTY2MzA
http://www.phoronix.com/scan.php?page=search&q=LTO

Egyébként az LLVM (3.5) is sokat feljődik LTO támogatás terén:
http://llvm.org/docs/LinkTimeOptimization.html

Plussz még:
- libssl.so fordításakor automatikus backdoor generálás

Ja.
Azt szokták mondani, hogy úgy lehet megbizonyosodni arról, hogy a C fordító (esetünkben a GCC) nem tesz bele hibát a kódba, hogy lefordítjuk egy másik fordítóval is, és megnézzük, hogy a keletkezett bináris ugyanúgy működik-e. Na de pl. a Heartbeet hiba esetében ismernünk kell a hibát, hogy tesztelni tudjuk a különböző fordítók által generált kódokat. Azaz amíg nem tudjuk, hogy azt a hibát keressük, amelyik nem figyel oda a kért szöveg hosszára (ld. Heartbeet), addig nem fogjuk meg, hiába használunk másik fordítót.

Subscrible.

Hibás a bejelentés link (a docra irányít).