GCC 4.1.0

Címkék

Mark Mitchell bejelentette a GCC 4.1.0-s verzióját. A 4.1.0 egy nagyobb kiadás, a korábbi kiadásokhoz képest relatíve sok új funkciót tartalmaz. A változások, új funkciók és javítások közt optimalizálót érintő újítások, nyelv specifikus frissítések, új target-ek és target-ekkel kapcsolatos újítások/javítások találhatók.

A változások listája itt. A bejelentés itt.

Hozzászólások

Optimalizálót érintő újítások? Megelégednék azzal is, ha "újításként" generálna olyan gyors kódot, mint a 3.3-3.4-es sorozat.

Elég nagy változás történt a 3.x és a 4.0 között (bevezették a "Tree SSA infrastructure"-t).
Első cél nyilván, hogy működjön.
De nem azért dolgoztak vele annyit, mert unatkoztak, hanem mert később olyan optimalizációkat lehet bevezetni, amit eddig nem.
Be kell érnie a technológiának. Addig meg ott a 3.4...

Imho egy nagyon fontos változást tartalmaz (végre):

"GCC can now emit code for protecting applications from stack-smashing attacks. The protection is realized by buffer overflow detection and reordering of stack variables to avoid pointer corruption."

Alapvetően tök tetszik a gcc fejlesztése, nagyjából ez az egyetlen alap (tehát nem grafikus) GNU cucc, ahol látom, hogy tudatos a fejlesztés, van tartható ütemterv, van normális koordináció, tudják hogy merre tartanak, van használható bugtracker, és tényleg rendes tempóban haladnak. Szóval le a kalappal.

Amit viszont nem igazán értek, és nem nagyon örülök neki (főleg disztribkészítői szemszögből): a C++ fordító és library újra és újra szívat mindenkit. Két dologra gondolok:

- Minden egyes major release tovább szigorít a C++ (és néha sima C) szintaktikán, minden egyes váltáskor akad egy rakás szar progi, ami a régivel lefordult, az újjal meg nem. És minden egyes alkalommal lehet patchelni programok tömkelegét, vagy várni, amíg mainstream megpatchelik őket. Most a 4.1 is behozott ilyen megszorításokat, és már írják, hogy mi az a szintaxis, ami most vált deprecated-dé, és a 4.2 már el fogja utasítani. Vajon nem lehetne mindezeket a szigorításokat hirtelen egyszerre megtenni, hogy csak egyszer szívjunk (még ha jóval nagyobbat is)? (Az UHU-ban szerettünk volna gcc 4.0-ra átállni, de oly sok program nem fordult le, hogy nem lett volna kapacitásunk mindet megpatchelni, már a 3.3 -> 3.4 átállás is nagyon sok munkát igényelt. Most folyik a 4.1-es gcc-vel a kísérleti teljes újrafordítás, kíváncsi leszek, hány csomag hasal el ezzel, ami a 4.0-val lefordult. Kb. 100-ra saccolom. Előbb-utóbb muszáj lesz átállnunk 4.x-es gcc-re, de már látszik, hogy nem kis meló lesz.)

- A c++ library (libstdc++.so) egyfolytában ABI-inkompatibilis, egyfolytában nő a verziószáma. A 3-as sorozat első igazán stabilnak kikiáltott darabja, nevezetesen a 3.2, és az azt követő 3.3 szépen egyaránt 5-ös verziót hozott. A 3.4-ben átálltak 6-osra. Ez a 4.0-ra és 4.1-re kitartott, de a 4.2 már 7-est fog szállítani. Ennek ellenére a kereskedelmi (binárisban elérhető) programok terén még nem láttam olyat, amelyik előre lépett volna a 6-os verzióra, azok még leragadtak az 5-ösnél (jobb esetben). A gcc meg már lép előre újabb inkompatibilis változtatással a 7-esre. Engem meg valahogy rossz érzéssel tölt el, ha belegondolok, hogy ez az egyetlen olyan library a rendszerben, amelynek 3-4 verzióját is kénytelen vagyok egymás mellett látni a rendszeremen.

Szóval sajnálom hogy ezt a két dolgot nem tudják ügyesebben csinálni, de valószínűleg megvan rá a jó okuk amit én nem látok, és ezzel együtt is le a kalappal a munkájuk előtt!

(Ja, és a 4.0 sokkal gyorsabban fordít, mint a 3.4! Bízom benne, hogy a 4.1 is.)

Van valakinek 4-el forgatott gentoo-ja? Tapasztalatok?

---------------------
Ригидус а бетегадьбол