FMitF: Track II: Transitioning Ruby Types to Practice
FMitF: Track II: Transitioning Ruby Types to Practice
批准号:
1918233
负责人:
Jeffrey Foster
金额:
$10.0万
依托单位:
依托单位国家:
美国
项目类别:
Standard Grant
财政年份:
2019
资助国家:
美国
项目状态:
已结题
起止时间:
2019-07-01 至 2020-12-31
中文摘要
Ruby是一种流行的编程语言,可能最出名的是Ruby on Rails,一种用于开发网站的框架。然而,与其他编程语言不同,Ruby没有静态类型系统,这有助于在编写程序时检测程序中的错误。静态类型系统的缺乏会使Ruby程序的开发变得更加困难,这也意味着某些类型的bug可能会一直潜伏在用户实际运行程序之前。在过去的十年里,研究人员一直在研究如何将静态类型添加到Ruby和类似语言中。作为这项工作的结果,最近发生了两件关键的事情:(1)Stripe,一家主要的支付处理公司,决定开发他们自己的静态Ruby类型系统,(2)核心Ruby开发团队决定将静态类型添加到Ruby 3,Ruby编程语言的下一个版本。这个项目的目标是通过与Stripe和核心Ruby开发团队合作,将研究者的研究成果、知识和Ruby类型系统的经验转化为实践,帮助将类型检查成功地带到Ruby 3中。该项目的创新之处是帮助开发一种用于Ruby的通用类型注释语言,包括源代码级注释;将这些注释与Ruby文档生成工具集成;并为Ruby on Rails应用程序的类型检查开发广泛的支持。该项目的影响是,该技术将使在软件开发周期的早期消除Ruby程序中的错误变得更容易和更快。由于Ruby被广泛使用,这些改进有可能改善数百万人每天依赖的许多网站的软件。该项目建立在RDL上,RDL是研究人员以前开发的Ruby静态类型系统。RDL支持广泛的类型特性:名义类型、结构类型、高阶方法类型、交集和联合类型、元组和有限哈希类型、泛型和self类型等。RDL的类型语言,以及Stripe的类型语言,将构成Ruby 3的类型语言的基础。RDL还对元编程提供了特殊的支持,在元编程中,代码在运行时生成类和方法,供以后执行时使用。元编程在Ruby on Rails中被广泛使用。RDL通过在运行时存储类型信息来支持元编程,从而允许元编程代码也为它创建的任何类和方法生成类型信息。作为项目的一部分,PI和他的合作者将使用这种元编程支持来为Ruby 3和Stripe的类型系统生成类型信息。他们还将为流行的Ruby库和其他框架开发一系列类型注释。该奖项反映了NSF的法定使命,并被认为值得通过使用基金会的智力价值和更广泛的影响审查标准进行评估来支持。
英文摘要
Ruby is a popular programming language that is perhaps best known for Ruby on Rails, a framework for developing web sites. However, unlike some other programming languages, Ruby does not have a static type system, which helps detect bugs in programs as they are written. This lack of a static type system can make developing Ruby programs harder, and it also means certain kinds of bugs might remain latent until programs are actually run by users. Over the last ten years, the investigator has been carrying out research on adding static types to Ruby and similar languages. As a result of this work, very recently two key things happened: (1) Stripe, a major payment processing company, decided to develop their own static Ruby type system, and (2) the core Ruby development team decided to add static types to Ruby 3, the next version of the Ruby programming language. The goal of this project is to help bring type checking successfully to Ruby 3 and into practice by transitioning the investigator's research results, knowledge, and experience with Ruby type systems, in collaboration with Stripe and the core Ruby development team. The project's novelties are helping develop a common type annotation language for Ruby, including source-level annotations; integrating those annotations with Ruby document-generation tools; and developing extensive support for type checking Ruby on Rails applications. The project's impacts are that the technology will make it easier and faster to eliminate bugs in Ruby programs earlier in the software development cycle. Since Ruby is widely used, these improvements have the potential to improve the software of many of the websites that millions of people rely on every day.The project builds on RDL, a static type system for Ruby previously developed by the investigator. RDL supports a wide range of type features: nominal types, structural types, high-order method types, intersection and union types, tuple and finite hash types, generics, and a self type, among others. RDL's type language, as well as Stripe's type language, will form the basis of Ruby 3's type language. RDL also has special support for metaprogramming, in which code generates classes and methods as it runs, for use later during execution. Metaprogramming is used extensively in Ruby on Rails. RDL supports meetaprogramming by storing type information at run-time, thereby allowing metaprogramming code to also generate type information for any classes and methods it creates. As part of the project, the PI and his collaborators will use this metaprogramming support to generate type information for Ruby 3's and Stripe's type systems. They will also develop a range of type annotations for popular Ruby libraries and other frameworks.This award reflects NSF's statutory mission and has been deemed worthy of support through evaluation using the Foundation's intellectual merit and broader impacts review criteria.
期刊论文(1)
专著(0)
科研奖励(0)
会议论文
DOI:
10.1145/3426422.3426985
发表时间:
2020-11
期刊:
Proceedings of the 16th ACM SIGPLAN International Symposium on Dynamic Languages
影响因子:
--
作者:
[Milod Kazerounian;Brianna M. Ren;J. Foster]
通讯作者:
Milod Kazerounian;Brianna M. Ren;J. Foster
QCIS-FF: Quantum Computing & Information Science Faculty Fellow at Tufts University
-
批准号:2013062
-
项目类别:Continuing Grant
-
资助金额:$75.0万
-
财政年份:2021
-
负责人:Jeffrey Foster
-
依托单位:
SHF: Small: Specifying, Checking, and Analyzing Applications Built with Dynamic Language Frameworks
-
批准号:1319666
-
项目类别:Standard Grant
-
资助金额:$41.27万
-
财政年份:2013
-
负责人:Jeffrey Foster
-
依托单位:
Collaborative Research: Expeditions in Computer Augmented Program Engineering (ExCAPE): Harnessing Synthesis for Software Design
-
批准号:1139021
-
项目类别:Continuing Grant
-
资助金额:$50.0万
-
财政年份:2012
-
负责人:Jeffrey Foster
-
依托单位:
SHF: Small: Empirical Studies, Principles and Techniques for Software Systems with Complex Configuration Spaces
-
批准号:1116740
-
项目类别:Standard Grant
-
资助金额:$50.0万
-
财政年份:2011
-
负责人:Jeffrey Foster
-
依托单位:
TC: Medium: Collaborative Research: Program Analysis for Smartphone Application Security
-
批准号:1064997
-
项目类别:Standard Grant
-
资助金额:$43.34万
-
财政年份:2011
-
负责人:Jeffrey Foster
-
依托单位:
SHF: Small: User-Centered Software Analysis Tools
-
批准号:0915978
-
项目类别:Standard Grant
-
资助金额:$50.0万
-
财政年份:2009
-
负责人:Jeffrey Foster
-
依托单位:
CT-T: Collaborative Research: Complex, High-level, Integrated Properties for Security
-
批准号:0715650
-
项目类别:Standard Grant
-
资助金额:$5.0万
-
财政年份:2007
-
负责人:Jeffrey Foster
-
依托单位:
CAREER: Programming Languages Techniques for Enhancing Software Quality
-
批准号:0346982
-
项目类别:Continuing Grant
-
资助金额:$40.0万
-
财政年份:2004
-
负责人:Jeffrey Foster
-
依托单位:
Collaborative Research: Type Qualifiers for Software Security
-
批准号:0430118
-
项目类别:Continuing Grant
-
资助金额:$0.0万
-
财政年份:2004
-
负责人:Jeffrey Foster
-
依托单位:
海外基金