近日,Swift团队分享了一篇新博客详细介绍了他们的新诊断体系结构,该体系结构将在即将到来的Swift 5.2版本(预计于11月初发布)中实现。这种新的体系结构旨在改进编译器的诊断。这将使改进/移植现有诊断以供新功能实现者使用变得更加容易。博客原文:https://swift.org/blog/new-diagnostic-arch-overview/
Swift编译器使用类型检查器来确保程序的正确性。类型检查器强制执行有关在源代码中如何使用类型的规则,并显示何时违反这些规则。但是,它猜测错误的确切位置,这在某些情况下无济于事,因为它不是特定的或不可操作的。
借助新的诊断基础结构,团队正在尝试实现一种新的类型检查器,该检查器在记住问题已应用的修复的同时,尝试在出现问题的位置“修复”问题。这样,类型检查器可以查明更多程序中的错误。
新的约束修复程序解决了不一致的情况
类型检查器将源代码转换为约束系统,该约束系统表示代码中类型之间的关系。约束系统首先生成约束,然后求解它们。约束生成的过程产生一个约束系统,该约束系统将一个表达式内的各种子表达式的类型相关联。约束求解器采用一组给定的约束,并为约束系统中的每个类型变量确定最具体的类型绑定。
约束修复的工作原理
每当检测到约束失败时,都会创建约束修复。约束修复程序捕获有关故障的三个关键信息:发生的故障的种类,故障在源代码中的位置以及故障所涉及的类型和声明。约束求解器然后累积这些修正。一旦找到解决方案,它就会查看解决方案中的修补程序并产生可操作的错误或警告。
Swift团队共享了改进的诊断程序示例和SwiftUI的示例程序,以更好地演示这种新的诊断基础结构的工作原理。
人们对Swift中的错误改进感到非常兴奋,并在Swift论坛中就相关线程分享了他们的观点。
Swift是使用现代方法构建的通用编程语言,用于安全性,性能和软件设计模式。
Swift项目的目标是为从系统编程,移动和桌面应用程序到扩展到云服务的各种用途创建最佳的可用语言。最重要的是,Swift旨在使开发人员更容易编写和维护正确的程序。