LLVM 3.3

Címkék

Az LLVM fejlesztők nevében az Apple alkalmazásában álló Chris Lattner bejelentette a Low Level Virtual Machine (LLVM) nevű fordítóprogram-infrastruktúra 3.3-as kiadását. A 3.3-as verzió nagy kiadás több szempontból is. Megjelentek benne újdonságként az AArch64 és AMD R600 GPU target-ek, támogatás érkezett vele a IBM z/Architecture S390-hez, valamint nagyobb fejlesztések történtek a PowerPC backend-en és a MIPS target-eken. Az LLVM 3.3 által generált kód teljesítménye nagymértékben nőtt.

Részletek a kiadási megjegyzésekben és a bejelentésben.

Hozzászólások

A 3.3 vajon benne lesz a kovetkezo Ubuntu release-ben?

LLVM 3.3 Release!

At this point, Clang is the only compiler to support the full C++'11 standard, including important C++'11 library features like std::regex.

--
trey @ gépház

Es mennyire igaza van a clang-nak. Pl. en nagyon utalom, hogy pl. az stdlibc++ std::set-ben nincs emplace() fuggveny implementalva (as of gcc 4.7.3). Pedig a szabvany szerint kellene.

Mi szinte az osszes c++11 feature-t hasznaljuk. A szemelyes velemenyem az, hogy nagyon hatekony eszkozoket ad, de azt el kell ismernem, hogy az amugy is komplex c++ meg egy fokozatnyit bonyolodott. Szerintem a c++ teamek technikai vezetesenek alaposan meg kell valogatni, hogy a csapat felkeszultsege alapjan mennyire alkalmazzak az uj dolgokat.

Pl. siman el tudom kepzelni, hogy library kodban hasznaljak az rvalue referenciakat, de alkalmazaskodban mar nem.... Lemondanak a teljesitmenytobblet egy reszerol, de legalabb nem szabadulnak el doglott referenciak a kodbazisban.

Ellenben a lambdak egeszen biztosan nagyon hasznosak lesznek, sok design egyszerubbe valik, ugyanigy a variadic template-ek hasznalata is sok helyen elegansabb/olvashatobb kodot eredmenyez. Ugyanez igaz a range-based for ciklusokra.

A mi projektunkben sajat smart pointer osztalyok vannak, de a unique_ptr es shared_ptr atgondolt hasznalata helyenkent sokat segithet. Plane ugy, hogy a shared_ptr-re a szabvany eloirja a szalbiztossagot.

std::chrono: szerintem kicsit over-engineered megoldas, de barmi jobb a unix-os idokezelo fuggvenyek tulburjanzasanal
std::regex: nem hasznaljuk
std::thread&std:atomic&co: mar 10 eve is kellett volna. atlathato, hordozhato, korrekt
std::future/std::promise: nagyon jovobe mutato, szerintem jo library-ket lehet epiteni erre a koncepciora (pl. a szalhataron atdobott kivetel eleg utos gondolat), a c++14y-ra valszeg a hianyzo reszek is meglesznek

Ha a jovore nezve valamit kivanni lehetne, akkor en azt kernem a Telapotol, hogy a boost::asio-t minel hamarabb emeljek be a szabvanyba, de szerintem ez csak a 2017 kornyeki verzioban esedekes....

"all the major language features" vs "full standard"

Jav: értsd: ha a szabványban szerepel(ne) az, hogy a ":" "-" ")" sztringeket egymás után írva a a végeredményben a megfelelő Unicode karakternek (*) kell a kódban szerepelni, ellenben ezt a GCC csapat nem tekinti fontosnak és ezért nem implementálja, akkor igazuk van. Ha pedig az LLVM csapat implementálja, mert leszarják, hogy lényegtelen, akkor meg nekik van igazuk. (Szerencsére fentebb valaki már írt egy technikailag korrektebb magyarázatot - igaz, abban semmi poén nincs.)

(*) valaki akinek van kedve, kiguglizhatná ":-)"