写点什么

Chris Lattner 谈 Swift 3 和 Cocoa“重命名”

  • 2016-02-02
  • 本文字数:1103 字

    阅读完需:约 4 分钟

近日,在“ swift-evolution ”邮件列表中,Swift 创建者 Chris Lattner 在一篇博文中概述了 Swift 3 定义的一些指导原则,并明确表示该版本会带来破坏性修改。

由于新特性的设计和实现本身还存在许多未知,所以预测 Swift 3 最终会包含什么并不容易。虽然认识到了这一点,但 Lattner 还是着重指出了 Swift 3 的主要目标以及有助于该目标实现的几个方面:

Swift 3 […] 的目标是推动 Swift 下一波应用热潮,让 Swift 为更多的人所用。以下几个方面有望成为实现这一目标的动力:Linux(及其他平台)上的 Corelibs+Swift 开发成为现实,新用户出现;SwiftPM[Swift 包管理器] 成为一款优秀的工具,并形成了自己的特色;Swift 语言 /stdlib 进一步成熟。

鉴于 Swift 3 的范围已经明确定义,Lattner 补充道,许多“好的想法”将会被搁置,尤其是需要对语言进行重大扩展而又不影响核心模型的想法:

我认为,对于 Swift 3,我们有一贯的方法,我们一直致力于修复基本语言的核心缺陷、修复实现问题以及设计影响 ABI 稳定性的弹性功能,同时对语言进行小幅扩展。

一个例子是,灵活的成员初始化是一个可能不会纳入Swift 3 的特性,而另一个例子是,属性行为是一个在Swift 3 中备受期待的特性,该特性有助于消除一些同 lazy@NSManaged等实现相关的“编译器魔法(compiler magic)”。

此外,Swift 3 将带来大量的破坏性修改,这主要是由重命名 Cocoa 方法使它们更像 Swift 导致的:

由于 Cocoa 重命名将要落地,Swift2 到 Swift 3 将会不可避免地给代码带来破坏性变化,而我们将会另外构建令人印象深刻的迁移技术。

重命名 Cocoa 方法意味着若干变化,例如:

  • 移除不必要的指定期望参数类型的单词,简化方法名称,例如:

    let content = listItemView.text.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())

    将变成:

    let content = listItemView.text.trimming(.whitespaceAndNewlines)

  • 移除 Foundation API 的 NS 前缀,比如var NSDateComponentUndefined: Int { get }将变成var dateComponentUndefined: Int { get }

  • 方法声明中增加参数默认值,比如,为可空的尾部闭包参数指定默认值nil,为名字中包含optionsattributesinfo等的数组和字典参数指定默认值[][:]

Lattner 有关 Swift 3 并非源代码兼容的声明引发了一些抱怨。Lattner 本人表示,他认识到他们不能再这样下去,长时间按照“开发人员的步伐”修改Swift,但是,他希望从Swift 3 到4 的过渡会更简单些。不过,苹果计划提供一个迁移开关 -swift3-migration),使开发人员能够更轻松地将 Swift 2.2 的代码移植到 Swift 3。

查看英文原文: Chris Lattner on Swift 3 and Cocoa “Renamification”

2016-02-02 18:002943
用户头像

发布了 1008 篇内容, 共 398.7 次阅读, 收获喜欢 345 次。

关注

评论

发布
暂无评论
发现更多内容

如何通过Python将JSON格式文件导入redis

华为云开发者联盟

Python redis 华为云 华为云开发者联盟 企业号 5 月 PK 榜

低代码的“钱景”——专业的事交给专业的人来做

引迈信息

低代码 JNPF

PoseiSwap  参赛,参与斯坦福、Nautilus等联合主办的 Hackathon 活动

鳄鱼视界

线程的生命周期和常用方法

Java你猿哥

源码 jdk 线程 多线程 Monitor

华为ISDP:从ChatGPT说起,企业作业数字化转型需要怎样的平台工具?

科技怪授

SpringBoot 整合 MyBatis 组合 Redis 作为数据源缓存

Java你猿哥

Java redis Spring Boot mybatis ssm

美团T9大牛总结的神仙微服务架构设计模式PDF

做梦都在改BUG

Java 架构 微服务

一张图感受真实的 TCP 状态转移

九零后程序员

TCP 网络 Linux Kenel ebpf

Nautilus Chain上线主网,为DeFi和流支付的未来构建基础

BlockChain先知

GaussDB(DWS)条件表达式函数返回错误结果集排查

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

高并发封神之作的《亿级流量高并发》惨遭GitHub免费开源

小小怪下士

Java 程序员 高并发

2023华为伙伴大会:ISDP发布伙伴体验中心,邀伙伴探索数智化未来

科技怪授

这个线上BUG,让你彻底搞懂了MySQL的字符集,别问我咋知道的

Java你猿哥

Java MySQL ssm 字符串 字符集

一个字牛!腾讯大牛把《数据结构与算法》讲透了,带源码笔记

程序知音

Java 数据结构 算法 后端 数据结构与算法

腾讯T4大牛整理的SpringBoot文档,覆盖你认知中的所有操作

程序知音

Java 架构 微服务 springboot Java进阶

京东首席系统架构师教你如何搭建高可用高并发系统架构

做梦都在改BUG

Java 高可用 系统架构 高并发

火爆Github的1000道Java面试题:无死角打击所有Java面试问题,按这个学,找工作完全没问题!

架构师之道

Java 编程

腾讯T8架构师基于SpringBoot2.x搭建分布式架构

做梦都在改BUG

Java spring Spring Boot 框架

分布式事务的21种武器 - 6

俞凡

架构 云原生

未来边缘计算:趋于分布式智能

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

模板一作业

家有两宝

#架构训练营

Python潮流周刊#3:PyPI 的安全问题

Python猫

Python 编程 rust 安全

Java 修改项目名称及其相关信息

Andy

【深入浅出Spring原理及实战】「缓存Cache开发系列」带你深入分析Spring所提供的缓存Cache抽象详解的核心原理探索

洛神灬殇

spring 缓存 cache 缓存管理

面试官:SpringBoot可以同时处理多少请求?

做梦都在改BUG

Java spring Spring Boot 框架

首页推荐!阿里大佬带你一周刷完Java面试题1700页,offer拿到手软

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

WritingGPT: 基于ChatGPT和AutoGPT打造个人写作团队

俞凡

人工智能

无惧面试!2023最新最全Java面试手册全网首次开放下载

程序员小毕

程序员 多线程 高并发 架构师 java面试

不愧是阿里巴巴内网的“高并发系统设计”学习笔记,全程不讲一句废话!

采菊东篱下

Java 高并发

RoCE多网卡时,报文可以过去,但是回不来

华为云开发者联盟

后端 开发 华为云 华为云开发者联盟 企业号 5 月 PK 榜

解决缓存与数据库数据不一致的问题,这篇文章告诉你如何做!

做梦都在改BUG

Java 数据库 缓存 一致性

Chris Lattner谈Swift 3和Cocoa“重命名”_开源_Sergio De Simone_InfoQ精选文章