10 ms·
LLVM 7.0.0 released
- zmodem 8y agoRelease announcement: http://lists.llvm.org/pipermail/llvm-announce/2018-September/000080.html http://lists.llvm.org/pipermail/llvm-announce/2018-September... Sub-project release notes: https://llvm.org/releases/7.0.0/tools/clang/docs/ReleaseNotes.html https://llvm.org/releases/7.0.0/tools/clang/docs/ReleaseNote... https://llvm.org/releases/7.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html https://llvm.org/releases/7.0.0/tools/clang/tools/extra/docs... https://llvm.org/releases/7.0.0/tools/lld/docs/ReleaseNotes.html https://llvm.org/releases/7.0.0/tools/lld/docs/ReleaseNotes....
- aogl 8y agoIs there a reason that the libraries have been renamed from 7.0 to 7?
- acoye 8y agoBuilding MESA I had to change my script from "6.0" to "7" indeed.
- JDevlieghere 8y agoLLVM adopted a new version scheme which made the minor version redundant. IIRC someone suggested to remove it and nobody objected. http://blog.llvm.org/2016/12/llvms-new-versioning-scheme.html http://blog.llvm.org/2016/12/llvms-new-versioning-scheme.htm...
- sambe 8y agoDoes this page explain the parent's question? It specifically mentions keeping the minor version more than once.
- speps 8y agoUnder "External Open Source Projects Using LLVM 7": > Zig is an open-source programming language designed for robustness, optimality, and clarity. Zig is an alternative to C, providing high level features such as generics, compile time function execution, partial evaluation, and LLVM-based coroutines, while exposing low level LLVM IR features such as aliases and intrinsics. Zig uses Clang to provide automatic import of .h symbols - even inline functions and macros. Zig uses LLD combined with lazily building compiler-rt to provide out-of-the-box cross-compiling for all supported targets. Nice shout out :)
- azhenley 8y agoZig needs a Wikipedia page! It seems like a competitor for Go or Rust? I've been looking into these languages a lot lately, but Zig looks interesting... I wish the website was better at showing off examples and the big features for the language though.
- simias 8y agoI'm a C coder, a big fan of Rust and while I've heard of Zig before I still don't really get what it's going for. As far as I can tell it's Rust without the borrow checker and the mental overhead that goes with it. Maybe it's because I'm wearing my Rust glasses but some design choices seem a bit strange to me, for instance regarding Zig's unions (equivalent to Rust's enums or C's tagged unions): https://ziglang.org/documentation/master/#union https://ziglang.org/documentation/master/#union const Payload = union { Int: i64, Float: f64, Bool: bool, }; [...] var payload = Payload {.Int = 1234}; // payload.Float = 12.34; // ERROR! field not active assert(payload.Int == 1234); // You can activate another field by assigning the entire union. payload = Payload {.Float = 12.34}; assert(payload.Float == 12.34); [...] // Unions can be given an enum tag type: const ComplexTypeTag = enum { Ok, NotOk }; const ComplexType = union(ComplexTypeTag) { Ok: u8, NotOk: void, }; [...] const c = ComplexType { .Ok = 0 }; assert(ComplexTypeTag(c) == ComplexTypeTag.Ok); That's weird ergonomics IMO and quite a lot of typing. As far as I can tell there's no type inference? Also I'm not sure why const is used everywhere, even for things like type declarations, does Zig allow messing with types at runtime? That seems like a pretty high level language feature so it's quite interesting if it does. Anyway, from what I see it's basically somewhat halfway between C and Rust, with some of the syntactic sugar of Rust but not the borrow checker and everything that goes along with it. That being said the language is still very young and at this stage Rust was a bit of a mess as well, what with the numerous pointer types, green threads and the like... Maybe as they progress toward 1.0 they'll be able to expose a clearer picture of what they're doing.
- AndyKelley 8y agoI'd be interested in seeing a code comparison of equivalent Rust and Zig code with regards to tagged unions, to demonstrate your claim. I could help you with the Zig code if you provide the Rust code. Also to answer your questions: > As far as I can tell there's no type inference? You can see an example of type inference here: https://ziglang.org/documentation/master/#Hello-World https://ziglang.org/documentation/master/#Hello-World > does Zig allow messing with types at runtime? Yes. https://ziglang.org/documentation/master/#Generic-Data-Structures https://ziglang.org/documentation/master/#Generic-Data-Struc... Edit: my mistake, I misread or didn't see the "at runtime" part. It only allows messing with types at compile-time.
- ChrisSD 8y agoIs there anything of particular interest to Rust? I'm know Rust is built on LLVM (for both good and ill but mostly good).
- nikic 8y agoRust updates LLVM more commonly than LLVM does stable releases, so it has been using a version somewhere between LLVM 6 and LLVM 7 for a while already. I think one of the main areas that improved in LLVM 7 relative to LLVM 6 that Rust cares about is better support for WASM in LLD.
- steveklabnik 8y agoWe also had to turn off noalias for &mut T for a while, due to bugs, and that was fixed fairly recently, and we turned it back on. I think that was post LLVM 6, but I can't quite remember.
- lambda 8y agoLooks like it was as of LLVM 6: https://github.com/rust-lang/rust/pull/50744 https://github.com/rust-lang/rust/pull/50744
- CUViper 8y agoRust 1.30 (now in beta) has already moved to a newer snapshot of trunk, LLVM 8ish.
- lambda 8y agoAccording to the "Update to LLVM 7" ticket for Rust (https://github.com/rust-lang/rust/issues/50543 https://github.com/rust-lang/rust/issues/50543), many of the points of interest are in LLD, especially in WASM support: LLD has implemented --gc-sections for wasm LLD has implemented DWARF debugging information sections for wasm LLD has natively implemented concatenation of custom sections for wasm LLD has gained the ability to place the stack first in a wasm module's memory layout, reducing the corruption that happens on a stack overflow LLD option to not merge data segments Some SIMD generic float intrinsics have been fixed LLD optimizing further the size of release binaries LLD supports @-file syntax Other things which mention LLVM 7 in the Rust bug tracker: https://github.com/rust-lang/rust/issues/52457 https://github.com/rust-lang/rust/issues/52457 "use funnel shift intrinsic to implement rotates" https://github.com/rust-lang/rust/issues/52323 https://github.com/rust-lang/rust/issues/52323 "emscripten already supports the wasm backend in LLVM7, so we should move the current emscripten-llvm from version 4.0 to that, so that we can remove all the workarounds lying around for LLVM < 5.0 (LLVM 5 is the new minimum supported version)." https://github.com/rust-lang/rust/issues/49740 https://github.com/rust-lang/rust/issues/49740 "Use separate memcpy source/dest alignments in LLVM 7" https://github.com/rust-lang/rust/issues/51872 https://github.com/rust-lang/rust/issues/51872 "Simplify u128->f32 casts thanks to LLVM r334777" edit to add: rustc stable 1.29.0 already uses LLVM 7, and nightly is already using LLVM 8; rustc frequently switches to the new LLVM release when it is branched, it doesn't wait until it is released: $ rustc +stable --version --verbose rustc 1.29.0 (aa3ca1994 2018-09-11) binary: rustc commit-hash: aa3ca1994904f2e056679fce1f185db8c7ed2703 commit-date: 2018-09-11 host: x86_64-apple-darwin release: 1.29.0 LLVM version: 7.0 $ rustc +nightly --version --verbose rustc 1.30.0-nightly (79fcc58b2 2018-09-18) binary: rustc commit-hash: 79fcc58b24d85743d025fd880fca55748662ed3e commit-date: 2018-09-18 host: x86_64-apple-darwin release: 1.30.0-nightly LLVM version: 8.0
- p1esk 8y agoWhat are the main new features and why are they important? E.g. what's "function multiversioning"?
- procgreen 8y agoDoes anyone know where the re-licensing effort stands?
- favorited 8y agoThe last update I saw was from July: http://lists.llvm.org/pipermail/llvm-foundation/2018-July/000162.html http://lists.llvm.org/pipermail/llvm-foundation/2018-July/00...
- xvilka 8y agoToo bad RISC-V didn't manage to be included yet. Even GCC already supports it. A rare case when LLVM behind GCC on architecture support.
- RX14 8y agorare? GCC supports far more architectures than LLVM
- flurrything 8y agoRust has been able to target RISC-V for half a year, so LLVM must have been able to target it for even longer...
- benchaney 8y agoIIRC it has been considered experimental since version 6. Many people were hoping it would be upgraded to fully supported in version 7.