Swift 4.1 兼容 4.0,并做了一些改进,其中大部分通过了 Swift Evolution 流程。此次发布,包含了对核心语言的更新,包括新增更多对泛型的支持、新的构建选项,以及对 Swift Package Manager 和 Foundation 框架的小改进。同时在 ABI 稳定(Application Binary Interface,应用程序二进制接口)方面也取得了重大进展,期待它真的能在 Swift 5 完全实现。

  语言更新:

  Swift 4.1 增加了更多的泛型特性,进一步推进 Swift Generics Manifesto 中提出的目标:

  SE-0143 Conditional Conformance

  SE-0157 Support recursive constraints on associated types

  SE-0185 Synthesizing Equatable and Hashable conformance

  SE-0187 Introduce Sequence.compactMap(_:)

  SE-0188 Make Standard Library Index Types Hashable

  SE-0191 Eliminate IndexDistance from Collection

  Foundation 更新:

  JSONEncoder 和 JSONDecoder 类现在支持在编码和解码期间转换密钥的新策略。

  ABI 稳定:

  在本地对象头部使用 word-size 字段进行引用计数 (SR-4353)

  通过 witness table 查看与枚举鉴别器的交互效率 (SR-4332)

  判断 existential 类型元数据的布局,包括协议描述符(SR-4341)

  定义通用和协议要求的规范化以实现与顺序无关的修改(SR-3733)

  审核每个运行时功能的可取性和行为(SR-3735)

  对 Sequences 和 Collections 施加适当的约束(SR-3453)

  使用条件一致性折叠各种集合 wrapper (SR-3458)

  其它更新:

  SE-0184 Unsafe[Mutable][Raw][Buffer]Pointer: add missing methods, adjust existing labels for clarity, and remove deallocation size

  SE-0186 Remove ownership keyword support in protocols

  SE-0189 Restrict Cross-module Struct Initializers

  SE-0198 Playground QuickLook API Revamp

  具体内容请查看发布公告。

  下载地址:https://swift.org/download/(编辑:雷林鹏 来源:网络)

Swift 4.1 正式发布,新增更多泛型特性支持的更多相关文章

  1. Angular4.0.0正式发布,附新特性及升级指南

    本文首发地址:Angular4.0.0正式发布,附新特性及升级指南 作者|孙薇 编辑|尾尾 经历了6个RC版本之后,Angular项目组终于发布了新版,即正式版 Angular 4.0.0.新版的 A ...

  2. Qt 5.4正式发布!引入WP,支持HTML5混合开发

    北京时间12月11日消息,Digia全资子公司The Qt Company在其 官方博客上宣布,正式发布Qt 5.4,支持HTML5混合开发,引入对于Windows Phone的支持,以及众多跨桌面. ...

  3. MindSpore特性支持类

    MindSpore特性支持类 Q:请问MindSpore支持梯度截断吗? A:支持,可以参考梯度截断的定义和使用. Q:如何在训练神经网络过程中对计算损失的超参数进行改变? A:暂时还未有这样的功能. ...

  4. Tapdata Cloud 版本上新!新增TiDB等数据源支持,连接和任务功能增强,体验更优

    Tapdata Cloud cloud.tapdata.net Tapdata Cloud 是国内首家异构数据库实时同步云平台,目前支持Oracle.MySQL.PG.SQL Server.Mongo ...

  5. 编写高质量代码改善C#程序的157个建议——建议43:让接口中的泛型参数支持协变

    建议43:让接口中的泛型参数支持协变 除了上一建议中提到的使用泛型参数兼容接口不可变性外,还有一种办法是为接口中的泛型声明加上out关键字来支持协变,如下所示: interface ISalary&l ...

  6. 使用xmake检测编译器特性支持

    如果我们要写跨平台的c/c++代码,很多时候需要处理由于不同编译器对c/c++各个标准支持力度不同导致的兼容性问题,一般通常的解决办法是:自己在代码中通过宏去判断各个编译器的版本.内置宏.标准库宏._ ...

  7. ZKEACMS 2.2.1 正式发布,更多特性等您来发现

    前言 如果你还不知道ZKEACMS,不妨先了解一下. ASP.NET MVC 开源建站系统 ZKEACMS 推荐,从此网站“拼”起来 官方地址:http://www.zkea.net/zkeacms ...

  8. Swift 1.2 正式发布 - 带来很多重大改进

    Swift 1.2 随着 Xcode 6.3 Beta 正式发布了.这次的 beta 发布包含了对 Swift 编译器显著的改进.还有对 Swift 语言本身的新特性的增加.这篇文章介绍下主要部分. ...

  9. Swift 4.0 正式发布,更快更兼容更好用

    Swift4现已正式发布!Swift4在Swift3的基础上,提供了更强大的稳健性和稳定性,为Swift3提供源码兼容性,对标准库进行改进,并添加了归档和序列化等功能. 你可以通过观看WWDC2017 ...

随机推荐

  1. Linux下修改.bash_profile 文件改变PATH变量的值

    Linux中含有两个重要的文件 /etc/profile和$HOME/.bash_profile 每当系统登陆时都要读取这两个文件,用来初始化系统所用到的变量,其中/etc/profile是超级用户所 ...

  2. UVA10954:Add All(优先队列)

    题目:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=68990#problem/O 题目需求:在数组中拿出两个数相加,再把结果放回数组中再 ...

  3. mysql基础测试

    mysql基础测试 测试原因   为什么需要做性能测试 模拟比当前系统更高的负载,找出性能瓶颈 重现线上异常 测试不同硬件软件配置 规划未来的业务增长   测试分类   性能测试的分类 设备层的测试 ...

  4. rabbitmq报错type

    TypeError: exchange_declare() got an unexpected keyword argument 'type' 原因应该为pika版本不同导致的用法不同,解决方法为把t ...

  5. Mybatis中的#与$的区别

    一.对比场景 场景:数据库分表时,需要将分表的表序号传入的sql中. SpringBoot中使用注解如下: @Insert("insert into collect_#{tblNum}(id ...

  6. FS-LDM 十大主题

    英文名称 中文名称 概念定义 Party 当事人 指银行所服务的任意对象和感兴趣进行分析的各种对象.如个人或公司客户.潜在客户.代理机构.雇员.分行.部门等. Internal Org 内部组织 可能 ...

  7. JavaWeb项目中各种路径的获取

    以工程名为/DemoWeb为例: 访问的jsp为: http://localhost:8080/DemoWeb/test/index.jsp 1 JSP中获得当前应用的相对路径和绝对路径 (1)得到工 ...

  8. java中hashSet原理

    转自: http://blog.csdn.net/guoweimelon/article/details/50804799 HashSet是JavaMap类型的集合类中最常使用的,本文基于Java1. ...

  9. wamp5.5.12安装re dis扩展

    转载地址:http://hanqunfeng.iteye.com/blog/1984387 phpredis是个人觉得最好的一个php-redis客户端,因为其提供的function与redis的命令 ...

  10. jquery的prev选择器无效

    今天使用jquery操作dom 需要把当前元素的同级元素中前面带有属性a=1的元素筛选出来. 查看api, .prev()  获得匹配元素集合中每个元素紧邻的前一个同辈元素,由选择器筛选(可选). 看 ...