摘要
函数语言具有轻量级语法、表达型系统和深层语义基础等功能,现在正被用于开发越来越广泛的复杂现实应用程序。然而,在系统软件领域,性能和与硬件低级方面的交互是主要关注点,许多从业者仍然回避高级语言的优势,因为传统命令式语言(如C。具有讽刺意味的是,操作系统内核、设备驱动程序和VMM等关键应用程序是最不可能从现代语言设计的抽象和安全保障中获益的应用程序之一,在这些应用程序中,单个错误可能会损害整个系统的可靠性或安全性。
在过去几年里,我们的团队一直在研究使用Haskell开发可以在裸机上引导和运行的现实操作系统的潜力。House系统主要由Thomas Hallgren和Andrew Tolmach开发,它证明了用函数语言构建系统软件确实是可能的。但是House仍然依赖于一层运行时支持原语(一些使用不安全的Haskell原语编写,另一些使用C编写)来提供从垃圾收集到控制硬件内存管理单元使用的页表结构的服务。我们希望在不影响类型或内存安全的情况下,用函数语言编写的代码尽可能多地替换这一层。
我们与House的合作经验使我们相信,需要一种新的功能语言来更直接地反映系统领域的需求。然而,有趣的是,我们得出的结论是,这并不需要基本的新语言设计。在这次受邀的演讲中,我将对我们项目的当前状态进行更新,并描述我们如何利用Haskell类型系统中熟悉的组件——包括多态性、种类、限定类型和改进——来获取效果使用、数据表示和终止的更精确细节。我还将讨论编写和编译以函数风格编写的性能敏感代码的挑战。用C代替汇编语言来构建系统软件曾经被认为是激进的做法。函数式语言有可能有一天会像今天的C语言一样在这个应用程序领域变得司空见惯吗?