WWDC18《What's new in LLVM》小记

这篇博客回顾了WWDC18中关于LLVM的亮点,包括ARC在结构体中支持对象指针,Xcode 10的诊断功能增强,如ObjC中引入Swift闭包的警告,以及静态分析器在性能和安全性上的改进,如检测GCD性能反模式和栈溢出问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TL;DR

上周末看的部分WWDC18的视频,不过当时没来得及做些记录。
我个人的历年习惯通常是先浏览下目录,再挑一部分感兴趣的先看——通常是《What’s new in Cocoa Touch》和《What’s new in LLVM》,后续的再根据主题和实际需要再进一步了解,比如关于如何提升开发效率的。
这里主要记录下WWDC18《What’s new in LLVM》中我个人的一些观后感。

零、背景简介

首先是LLVM相关团队的高级经理Jim Grosbach给大家介绍了下LLVM家族(表示LLVM不只是个编译器),以及LLVM这个开源项目目前的合作伙伴有哪些,并欢迎大家交流共建。

LLVM所支撑的相关工具和产品如下:
1. Clang(音[klæŋ]),从名字上也能感受到这是一个和C语言家族相关的东西,是一款主要面向C/C++/ObjC等语言的编译器前端。一个使用例子是clang -rewrite-objc xx.c,用来查看生成的C中间代码,了解语言特性的内部实现,比如我之前在12年写过的一篇关于block实现的探究
2. 静态分析器,同属于Clang项目的源码分析工具。
3. Sanitizers如AddressSanitizer、MemorySanitizer、ThreadSanitizer和 LeakSanitizer。
4. LLDB,Xcode内置的调试器。
5. GPU Shader Compiler下所使用的代码生成器框架。
6. Swift。
7. 视频里没有提到的但业界实际有在使用的,比如作为Java的编译器后端,将JVM字节码编译成机器码。

做iOS开发比较久的同学应该对Xcode中Compiler选项的过渡变迁有印象,从最早的GCC到现在的LLVM。
一开始的前端和后端都是采用GCC套件,到后来采用LLVM作为后端来处理GCC生成的中间代码,再到如今的Clang前端搭配LLVM后端套件。
类似的还有GDB到LLDB的变迁。

这些变迁的背景主要是由于一开始Apple所采用的GCC是一个面向多种语言的编译器套件,但GCC不太给Apple面子、支持力度不够,同时由于代码耦合度太高、不好做模块化定制,所以Apple招聘了如今的大神Chris Lattner到Apple继续做LLVM项目。
LLVM是Chris Lattner在校期间发起的项目,据说他当时啃烂了龙书。这本书也是我大学印象最深刻的书,当初也硬着头皮啃了好几遍,这也是我现在每年看WWDC都会优先看《What’s new in LLVM》的一个原因。
去年(2017年)Chris Lattner从Apple离职,先后去了特斯拉和Google,这让一部分人担心Swift的发展,也让另一部分人担心LLVM社区的发展。

以下是视频内容概要:

  • ARC的更新
  • Xcode 10中新的诊断功能
  • Clang静态分析器
  • 安全性提升
  • 新的指令集扩展

一、ARC的更新:结构体支持ARC对象指针

演讲者是Alex Lorenz,Clang的前端工程师。

在之前,ARC环境下的结构体中是不支持对象指针的,因为编译器还不支持自动为结构体成员插入retain/release等内存管理代码。

现在࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值