LLVM Weekly - #173, Apr 24th 2017
Welcome to the one hundred and seventy-third issue of LLVM Weekly, a weekly newsletter (published every Monday) covering developments in LLVM, Clang, and related projects. LLVM Weekly is brought to you by Alex Bradbury. Subscribe to future issues at https://llvmweekly.org and pass it on to anyone else you think may be interested. Please send any tips or feedback to asb@asbradbury.org, or @llvmweekly or @asbradbury on Twitter.
News and articles from around the web
KDAB have written a blog post about the clazy clang plugin, which has a variety of checks and warnings for Qt codebases.
The LLVM-based Crystal language has just released version 0.22.0.
I've just spotted that another language using LLVM for codegen, Pony, now has a weekly development summary.
"Source code quality classification based on software metrics" is a recent publication that looks at extending LLVM to generate standard source code quality metrics.
On the mailing lists
-
Chris Lattner has posted a third update/RFC in the LLVM relicensing saga. For full details, I encourage you to read the email. The proposal is to adopt the Apache 2.0 license with exceptions to address concerns about GPLv2 compatibility and binary attribution. Mark Kettenis explained the issues with Apache as seen by the OpenBSD community, while Daniel Berlin responded to many of these points.
-
Kavon Farvardin has produced an RFC on better supporting continuation passing style in LLVM. This would aid the implementation of languages such as Haskell and ML using LLVM.
-
Diana Picus has summarised recent GlobalISel news and progress.
-
Gerolf Hoflehner explains more about the use of CTMark for tracking LLVM compiler-time performance.
LLVM commits
-
LLVM's bitcode format now has a string table. This reduces the link time for Chromium with ThinLTO by 7% for no-op incremental builds. r300464.
-
The way the Mips backend handles relocations and addresses has been documented. This is a recommended read for anyone interested in LLVM backend work. AArch64 has now been refactored to use a similar approach. r300986, r301005.
-
LLVMMetadataRef, the first step towards a new metadata API has been committed. r300447.
-
libFuzzer gained an interesting new option,
-cleanse_crash
which tries to replace all bytes in a crash reproducer with garbage while preserving the crash behaviour. r300498. -
The documentation on statepoints (used to support garbage collection) has been updated. r300782.
-
Support has been added for representing the types needed for ARM's Scalable Vector Extension. r300838, r300840, r300842.
Clang commits
-
Optimisation work on UBSan has continued, and the number of null checks has been substantially reduced. r300508, r300509.
-
#pragma clang attribute
has been introduced. This can be used to apply an attribute to multiple declarations by 'pushing' or 'popping' the attribute. r300556. -
git-clang-format is now mostly Python 3 compatible. r300891.