基础软件中心

ReScript语言





张宏波本科毕业于清华大学电子系,在美国宾夕法尼亚大学读博期间受Bloomberg 破例邀请,从事函数式语言编译器的开发工作,其早期的工作成果也曾被彭博社官方报道

研究方向
方向一:基于 WebAssembly 的程序语言设计
虽然 WebAssembly 最初的设计目标是在浏览器(browser) 上以接近原生的性能运行程序,但随着技术的发展与社区的广泛接受,当前 WebAssembly 的应用场景已经拓展到云计算时代的无服务器架构(serverless) 、物联网(IoT) 设备以及移动端与桌面应用程序。
由于 WebAssembly 天生具备安全、可移植、高效率、轻量化等特点,所以非常适于应用安全沙箱场景。这使得 WebAssembly 和传统虚拟机的架构有着显著不同:比如出于安全因素考虑,其程序的执行栈不能自由访问;比如要满足轻量化的特性,WebAssembly 的代码尺寸有非常苛刻的要求。
上述这些因素使得开发者以低门槛生产出高质量的 WebAssembly 程序是非常有挑战性的事情。基础软件中心的研究方向之一是结合学术界在传统程序语言经验的沉淀和WebAssembly 最新的指令集标准,自底向上地设计新的通用程序语言。
方向二:全代码优化
在硬件受限的情况下,研究如何通过程序语言和软件的协同设计保持软件的运行效率,降低程序的系统资源占用。
传统程序语言的编译模型大部分属于分离编译,比如把各个源文件编译成目标文件,再通过链接器(linker)链接成一个可执行文件。虽然现有的编译框架能完成链接时的优化(link time optimization),但由于目标文件包含的IR属于很底层的IR,大量关于程序结构的信息已经丢失,能做到的优化非常有限。
我们将研究如何从语言设计的角度,链接的时候实现高层次IR的链接,以及包含更丰富的信息,做到闭源世界的假设(closed world assumption),从而达到更高层次的性能优化。为了达到这一结果,我们需要从编译器、构建系统多组件协调,保证程序的编译时间、内存消耗处在可接受的范围。
方向三:云原生IDE 的研发
Serverless 一词于2012年被提出,随着亚马逊在2014年推出的 AWS Lambda 无服务器计算服务的兴起,而被大家广泛认知。很多企业也开始尝试使用这项技术来快速搭建应用,从而减少开发成本和运维成本。
Serverless 应用开发区别于传统的应用开发模式,开发者在使用Serverless 架构进行本地开发、调试、测试时,必然会面对没有本地开发环境、持续集成、持续发布流程复杂等技术挑战。而传统集成开发环境(Integrated Development Environment,缩写IDE) 往往无法满足当下云原生服务的特殊需求。
基础软件中心的研究方向之一是基于结构化的编辑器技术,探索 WebIDE 与程序语言、构建系统的高效协同运作,让开发者可以在大规模软件开发模式下得到代码信息的实时反馈,进一步降低开发成本,提高开发人员的工作效率。