Xingzi Yu, Wei Tang, Tianlei Xiong, Wengang Chen, Jie He, Bin Yang, Zhengwei Qi
{"title":"使用TS增强嵌入式系统开发 $$^-$$","authors":"Xingzi Yu, Wei Tang, Tianlei Xiong, Wengang Chen, Jie He, Bin Yang, Zhengwei Qi","doi":"10.1007/s10515-023-00404-x","DOIUrl":null,"url":null,"abstract":"<div><p>The lack of flexibility and safety in C language development has been criticized for a long time, causing detriments to the development cycle and software quality in the embedded systems domain. TypeScript, as an optionally-typed dynamic language, offers the flexibility and safety that developers desire. With the advancement of Ahead-of-Time (AOT) compilation technologies for TypeScript and JavaScript, it has become feasible to write embedded applications using TypeScript. Despite the availability of writing AOT compiled programs with TypeScript, implementing a compiler toolchain for this purpose requires substantial effort. To simplify the design of languages and compilers, this paper presents a new compiler toolchain design methodology called TS<span>\\(^-\\)</span>, which advocates the generation of target intermediate language code (such as C) from TypeScript rather than the construction of higher-level compiler tools and type systems on top of the intermediate language. TS<span>\\(^-\\)</span> not only simplifies the design of the system but also provides developers with a quasi-native TypeScript development experience. This paper also presents <span>Ts2Wasm</span>, a prototype that implements TS<span>\\(^-\\)</span> and allows compiling a language subset of TypeScript to WebAssembly (WASM). The tests in the TypeScript repository show that <span>Ts2Wasm</span> provides 3.8× as many features compared to the intermediate language (AssemblyScript). Regarding performance, <span>Ts2Wasm</span> offers a significant speed-up of 1.4× to 19×. Meanwhile, it imposes over 65% less memory overhead compared to Node.js in most cases.</p></div>","PeriodicalId":55414,"journal":{"name":"Automated Software Engineering","volume":"31 1","pages":""},"PeriodicalIF":2.0000,"publicationDate":"2023-12-06","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":"{\"title\":\"Enhancing embedded systems development with TS\\\\(^-\\\\)\",\"authors\":\"Xingzi Yu, Wei Tang, Tianlei Xiong, Wengang Chen, Jie He, Bin Yang, Zhengwei Qi\",\"doi\":\"10.1007/s10515-023-00404-x\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"<div><p>The lack of flexibility and safety in C language development has been criticized for a long time, causing detriments to the development cycle and software quality in the embedded systems domain. TypeScript, as an optionally-typed dynamic language, offers the flexibility and safety that developers desire. With the advancement of Ahead-of-Time (AOT) compilation technologies for TypeScript and JavaScript, it has become feasible to write embedded applications using TypeScript. Despite the availability of writing AOT compiled programs with TypeScript, implementing a compiler toolchain for this purpose requires substantial effort. To simplify the design of languages and compilers, this paper presents a new compiler toolchain design methodology called TS<span>\\\\(^-\\\\)</span>, which advocates the generation of target intermediate language code (such as C) from TypeScript rather than the construction of higher-level compiler tools and type systems on top of the intermediate language. TS<span>\\\\(^-\\\\)</span> not only simplifies the design of the system but also provides developers with a quasi-native TypeScript development experience. This paper also presents <span>Ts2Wasm</span>, a prototype that implements TS<span>\\\\(^-\\\\)</span> and allows compiling a language subset of TypeScript to WebAssembly (WASM). The tests in the TypeScript repository show that <span>Ts2Wasm</span> provides 3.8× as many features compared to the intermediate language (AssemblyScript). Regarding performance, <span>Ts2Wasm</span> offers a significant speed-up of 1.4× to 19×. Meanwhile, it imposes over 65% less memory overhead compared to Node.js in most cases.</p></div>\",\"PeriodicalId\":55414,\"journal\":{\"name\":\"Automated Software Engineering\",\"volume\":\"31 1\",\"pages\":\"\"},\"PeriodicalIF\":2.0000,\"publicationDate\":\"2023-12-06\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"0\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"Automated Software Engineering\",\"FirstCategoryId\":\"94\",\"ListUrlMain\":\"https://link.springer.com/article/10.1007/s10515-023-00404-x\",\"RegionNum\":2,\"RegionCategory\":\"计算机科学\",\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"Q3\",\"JCRName\":\"COMPUTER SCIENCE, SOFTWARE ENGINEERING\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"Automated Software Engineering","FirstCategoryId":"94","ListUrlMain":"https://link.springer.com/article/10.1007/s10515-023-00404-x","RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"Q3","JCRName":"COMPUTER SCIENCE, SOFTWARE ENGINEERING","Score":null,"Total":0}
引用次数: 0
摘要
长期以来,C语言开发缺乏灵活性和安全性一直受到批评,对嵌入式系统领域的开发周期和软件质量造成了不利影响。TypeScript作为一种可选类型的动态语言,提供了开发人员所期望的灵活性和安全性。随着TypeScript和JavaScript的AOT (Ahead-of-Time)编译技术的进步,使用TypeScript编写嵌入式应用已经成为可能。尽管可以用TypeScript编写AOT编译程序,但是实现一个编译器工具链还是需要付出很大的努力。为了简化语言和编译器的设计,本文提出了一种新的编译器工具链设计方法TS \(^-\),它提倡从TypeScript生成目标中间语言代码(如C语言),而不是在中间语言之上构建更高级的编译器工具和类型系统。TS \(^-\)不仅简化了系统的设计,还为开发人员提供了一种准原生的TypeScript开发体验。本文还介绍了Ts2Wasm,一个实现TS \(^-\)的原型,并允许将TypeScript的语言子集编译为WebAssembly (WASM)。TypeScript存储库中的测试显示,Ts2Wasm提供的特性是中间语言(AssemblyScript)的3.8倍。在性能方面,Ts2Wasm提供了1.4到19倍的显著加速。同时,它对65岁以上的人征税% less memory overhead compared to Node.js in most cases.
Enhancing embedded systems development with TS\(^-\)
The lack of flexibility and safety in C language development has been criticized for a long time, causing detriments to the development cycle and software quality in the embedded systems domain. TypeScript, as an optionally-typed dynamic language, offers the flexibility and safety that developers desire. With the advancement of Ahead-of-Time (AOT) compilation technologies for TypeScript and JavaScript, it has become feasible to write embedded applications using TypeScript. Despite the availability of writing AOT compiled programs with TypeScript, implementing a compiler toolchain for this purpose requires substantial effort. To simplify the design of languages and compilers, this paper presents a new compiler toolchain design methodology called TS\(^-\), which advocates the generation of target intermediate language code (such as C) from TypeScript rather than the construction of higher-level compiler tools and type systems on top of the intermediate language. TS\(^-\) not only simplifies the design of the system but also provides developers with a quasi-native TypeScript development experience. This paper also presents Ts2Wasm, a prototype that implements TS\(^-\) and allows compiling a language subset of TypeScript to WebAssembly (WASM). The tests in the TypeScript repository show that Ts2Wasm provides 3.8× as many features compared to the intermediate language (AssemblyScript). Regarding performance, Ts2Wasm offers a significant speed-up of 1.4× to 19×. Meanwhile, it imposes over 65% less memory overhead compared to Node.js in most cases.
期刊介绍:
This journal details research, tutorial papers, survey and accounts of significant industrial experience in the foundations, techniques, tools and applications of automated software engineering technology. This includes the study of techniques for constructing, understanding, adapting, and modeling software artifacts and processes.
Coverage in Automated Software Engineering examines both automatic systems and collaborative systems as well as computational models of human software engineering activities. In addition, it presents knowledge representations and artificial intelligence techniques applicable to automated software engineering, and formal techniques that support or provide theoretical foundations. The journal also includes reviews of books, software, conferences and workshops.