14 ms·
LLVM 4.0.0
- bajsejohannes 10y ago> thanks to Zhendong Su and his team whose fuzz testing prevented many bugs going into the release. http://web.cs.ucdavis.edu/~su/ http://web.cs.ucdavis.edu/~su/ claims 1228 bugs found (counting both LLVM and GCC). Impressive!
- roninb 10y agoI wonder how many of the bugs were squashed by Dr. Su himself and how many were DISs or other forms of work supervised by Su. Maybe he did kill that many bugs on his own but that seems outrageous (without taking time to actually see what kinds of bugs they were).
- Cyph0n 10y agoThe professor himself very likely did none of it. My guess is that someone like Dr. Su probably wouldn't even have enough time to work on fuzzing LLVM, and would likely be more concerned with writing up the next proposal to fund his lab :P From what I've seen in academia, the supervisor typically generates ideas, and the grad students and postdocs test them out and see if they have potential. The discussion goes back and forth until a decision is made on whether or not to pursue an idea. This differs from group to group of course, and is not the case in smaller groups, but it's generally how things work.
- mhh__ 10y ago[Citation needed]
- Cyph0n 10y agoIt's just anecdotal. Take it with a grain of salt if you're skeptical.
- CyberDildonics 10y agoYou just said it was likely.
- Cyph0n 10y agoBased on my experience, it's likely that he didn't work on it personally. Is there something wrong with a statement like that?
- andrewflnr 10y agoWhere do you expect someone to find statistics to cite regarding the internal workings of university labs? Or are you looking for someone's blog post, which would ultimately also be anecdotal? "[Citation needed]" is just noise when there's no reasonable expectation that the desired evidence actually exists. Moreover, we're not writing Wikipedia here, just trying to have a discussion. Take a chill pill.
- billforsternz 10y agoThere won't be an academic paper supporting this until a senior academic thinks it's a worthy concept for investigation and follows up by asking his postgrads to work the idea up into a publishable paper. Quite meta really.
- pfortuny 10y agoReal life. Mine also.
- PhaseLockk 10y agoI can anecdotally confirm this to be true in my experience as well.
- helloqirun 10y agoI happened to come across here... For this specific case mentioned in your first paragraph, it is not true.
- Cyph0n 10y agoThanks for letting us know! That's quite impressive honestly :)
- mehrdada 10y agoI think this can vary across people/projects and perhaps true in a large number of cases (this could also be said for the management in business, and it is debatable whether spending time on the ground doing the actual thing would always be the most leveraged thing one can do). Irrespective of that debate, at least for this particular instance, I can confirm that the professor in question himself [who happens to have been my doctoral advisor :)] went through a whole lot of trouble personally, down to reducing many many individual bugs and you can just look at the bug tracker activity under his name to independently verify. (I have long graduated so this is not a "paid Glassdoor review" either and ran into this as a frequent HN lurker!)
- acdha 10y agoIf you look at the homepage, he has 4 separate links for LLVM bugs which differ only in the reporter's email address. The first, and largest, is his which suggests that he substantially did the actual work since the other members of his team appear to be reporting problems using their own contact info
- nightcracker 10y agoWith fuzzing it's possible to find distinct bugs (or at least bugs that trigger in distinct code locations) without ever further investigating the bug in person. Your bug report can simply consist of "this input file causes a compiler crash".
- willvarfar 10y agoIndeed! On the Mill project we leave boxes crunching hours and hours of csmith/creduce, and we don't watch them do it :) SPE looks to be very nice too.
- gravypod 10y agoWhat's the Mill project? Is that the "new computer" thing or am I missing something.
- willvarfar 10y agoYeap that's the project :) We have our own llvm backend which is a front end to our own "specialiser". We use csmith to fuzz for compiler bugs and creduce to reduce them. This starts with C and we even validate the output of the sim against clang x86 output.
- tmccrmck 10y agoHow should someone go about contributing to your LLVM backend?
- willvarfar 10y agohttp://millcomputing.com/#JoinUs http://millcomputing.com/#JoinUs :) http://millcomputing.com/topic/mill-computing-in-2017/ http://millcomputing.com/topic/mill-computing-in-2017/ is our plan this year
- 10y ago
- javajosh 10y agoHa, was just reading http://aosabook.org/en/llvm.html http://aosabook.org/en/llvm.html. (Really like that LLVM IR. Does anyone code in it directly? Was also thinking it would be interesting to port Knuth's MMIX examples to it.)
- falcolas 10y agoIf I recall correctly, the textual IR is unstable between releases. They recommend building ASTs with their APIs instead.
- rwallace 10y agoI was under the impression the API is also unstable between releases. Has the API broken less often than the text format over the last few releases?
- sanxiyn 10y agoYes. Quotes from LLVM Developer Policy http://llvm.org/docs/DeveloperPolicy.html http://llvm.org/docs/DeveloperPolicy.html On text format: "The textual format is not backwards compatible. We don't change it too often, but there are no specific promises." On C API: "The C API is, in general, a "best effort" for stability. This means that we make every attempt to keep the C API stable, but that stability will be limited by the abstractness of the interface and the stability of the C++ API that it wraps." There is confusion because C++ API is unstable (very unstable). But C API is stable. And C API is more stable than text format. (In my experience, policy is accurate description of actual practice and not empty promise.)
- rwallace 10y agoAh! I was under the impression that the C API was quasi-deprecated relative to the C++ API, but from what you're saying, it sounds like that's not the case?
- witty_username 10y ago
- opt-viewer 10y agoLooks like it didn't make the release notes but one of the features new for this release is opt-viewer. It's useful for finding the rationale why some bit of code was/wasn't optimized. It's a WIP but usable today. I made a demo [1] for this tool. [1] https://github.com/androm3da/optviewer-demo https://github.com/androm3da/optviewer-demo
- pg_is_a_butt 10y agowhy not opt-viewer-demo?
- falcolas 10y ago> Stable updates to this release will be versioned 4.0.x /nit Semantic versioning (or communication) failure. I would think that "stable updates" would represent minor releases (i.e. 4.x.0), not bugfix-style patches. Unless all new features will be present in major releases instead of "stable updates"?
- pavanky 10y agoThey have their reasoning behind this scheme over here: http://blog.llvm.org/2016/12/llvms-new-versioning-scheme.html http://blog.llvm.org/2016/12/llvms-new-versioning-scheme.htm... I personally do not agree with their line of reasoning.
- falcolas 10y agoOK, so indeed, no features in between major releases. It's also somewhat unfortunate that, in their words, "every [six month] release is also API breaking". How can you create a stable product that targets a constantly breaking API (short of picking a version and sticking with it)? Of course, I'm a biased, since I consider stable to be measured in years, not months; certainly not the current trend.
- SamBam 10y agoBut major releases are always expected to be API-breaking, right? Isn't that basically the (SemVer, at least) definition of a major vs minor release? Nothing's forcing anyone to keep up to date, though, so anyone can pick a version and stick with it as long as they like. (So long as they keep making patches for at least the previous version for major bugs...)
- pavanky 10y agoThat results in half a dozen versions of LLVM libraries installed on a given machine instead of 1.
- 10y ago
- deleted 10y ago[deleted]
- aslammuet 10y agohttp://llvm.org/demo/ http://llvm.org/demo/ Demo page is not working. Is there any other page that makes me understand what really is it and where it is helpful.
- kebolio 10y agoLLVM is a compiler toolkit, used by, for example, Clang for C/C++/Objective-C, Rust, and various libraries like Mesa.
- hnbroseph 10y agollvm is the "back-end" of a compiler turned into a reusable library, where the front-end of a compiler is what parses and understands a specific language (clang or rust being examples of primarly front-end things that leverage llvm). if you make use of llvm, you "simply" have to parse your chosen language and hand off some intermediate form bits to llvm to create compiled binaries.
- wtallis 10y agoHow did you find the demo page, and why did you expect it to be more useful than the front page at explaining what LLVM is? The llvm.org front page already has "The LLVM Compiler Infrastructure Project" as its title and the first sentence of the body text is "The LLVM Project is a collection of modular and reusable compiler and toolchain technologies."
- lossolo 10y agoLLVM Coroutines - This is the most exciting thing for me. Gor Nishanov in his videos explains how coroutines are implemented and how are optimized by LLVM. Asynchronous IO code will be so easy to write and so efficient. Context switch in cost of function call, you can have billions of those coroutines, heap allocation elision (in certain cases). Can't wait for coroutines to land in Clang. I am a big fan of Go gorutines so Networking TS and Coroutines TS made me very happy, connecting both and having it in standard will be great. Just a shame that for Networking TS integration we will need to wait for C++20.
- richdougherty 10y agoHere's the documentation: http://llvm.org/docs/Coroutines.html http://llvm.org/docs/Coroutines.html
- astrodust 10y agoIs this similar to fibers?
- lngnmn 10y agoIt would be interesting to try these in some functional language backend, say, in GHC or Ocaml.
- mhh__ 10y agoGHC compiles haskell through about a million different IRs and abstract machines, until eventually reaching Cmm, which is effectively a similar idea to LLVM IR (A very simple C ish imperative language). Any benefits to be had, should be fairly straightforward for the GHC folks to use, which should be cool.
- kccqzy 10y agoIt's just Core, STG, Cmm. Anything else I'm missing?
- pjmlp 10y agoLove the improvements to clang-tidy! http://releases.llvm.org/4.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html#improvements-to-clang-tidy http://releases.llvm.org/4.0.0/tools/clang/tools/extra/docs/... Congratulations on the work. Also nice to see that OCaml bindings are still being taken care of.
- danieljh 10y agoAbsolutely. The following two new checks are impressive and should be on by default. New misc-move-forwarding-reference check Warns when std::move is applied to a forwarding reference instead of std::forward. http://clang.llvm.org/extra/clang-tidy/checks/misc-move-forwarding-reference.html http://clang.llvm.org/extra/clang-tidy/checks/misc-move-forw... New misc-use-after-move check Warns if an object is used after it has been moved, without an intervening reinitialization. http://clang.llvm.org/extra/clang-tidy/checks/misc-use-after-move.html http://clang.llvm.org/extra/clang-tidy/checks/misc-use-after... The use-after-move check has its limitations which make sense considering the "unspecified but valid state" moved from objects are in. From reading the design document the cases they handle should catch common ownership issues, though. Great step in the right direction for sure. Implementation: https://github.com/llvm-mirror/clang-tools-extra/blob/master/clang-tidy/misc/UseAfterMoveCheck.cpp https://github.com/llvm-mirror/clang-tools-extra/blob/master... Related: https://doc.rust-lang.org/book/ownership.html https://doc.rust-lang.org/book/ownership.html
- amyjess 10y agoI wish they'd do what GCC does and just eliminate the middle number entirely.
- SamBam 10y agoBut semver is a pretty meaningful standard. Why not stick to it, even if you don't plan on adding non-API-breaking new features?
- futurix 10y agoVersion number inflation strikes another software package, although at least it is not as bad as Chrome or Firefox.
- jupp0r 10y agoIt's not like there is a shortage of Integers, you know...
- mark-r 10y agoToo bad they didn't use more aggressive aggressive grammar checking.
- grassfedcode 10y agoI'm trying to add support for lldb to a gdb frontend (https://github.com/cs01/gdbgui/ https://github.com/cs01/gdbgui/), and need a gdb-mi compatible interface to do it. lldb-mi exists, but its compatibility with gdb's mi2 api is incomplete. Does anyone know of a more compatible api to gdb-mi2 commands, or if there are plans to improve lldb-mi's?
- self_awareness 10y agoVisual Studio is already at version 2017, and LLVM is only at 4, they need to catch up real quick! /ducks
- snnn 10y agoVS is slowing down. VC++ 2017 is VC++ 14.1, not 15.0