Libc++最新第9版支持WebAssembly系统接口WASI

最新的Libc++第9版本现在发布,官方提到,这个Libc++ C++标准函数库是LLVM编译器基础架构的一部分。Libc++是针对C++11和C++14或更高版本,所提供的C++标准函数库实例。

Libc++第9版本修复了许多bug,并放弃对GCC 4.9的支持,目前只支持GCC 5.1及更高版本。同时也加入一些新的语言功能,包括std::swap现在成为一个常数表式(Constant Expression),在容器类别中加入了contains方法,还添加std::midpoint与std::lerp数学函数,而std::span添加了front和back方法等。

不过,Libc++第9版本最受人注目的更新,还是加入了WebAssembly System Interface(WASI)的支持,而这将能增加与WebAssembly的互通性。WASI是由Mozilla最新提出,让WebAssembly离开浏览器跨操作系统执行的解决方案。

新一代网页格式WebAssembly拥有极高的执行效率,可以让浏览器执行重量级的应用程序,又能兼顾安全,因此Mozilla想办法要扩张WebAssembly的可移植性。Mozilla表示,之所以WebAssembly可以在不同平台上执行,是因为WebAssembly是一个概念机器(Conceptual Machine)的汇编语言,并非物理机器的汇编语言,但是要让WebAssembly可以跨出浏览器,在不同的操作系统上运行,需要一个概念操作系统的系统接口。

目前虽然有几个方式可以让WebAssembly在没有浏览器的情况下执行,但都属于旁门左道的方法,Mozilla为了要维持WebAssembly的可移植性以及安全性,提出了WebAssembly系统接口,定义了一套模块化的标准接口。目前这项工作从最基本的wasi-core开始,其包含了所有应用程序需要的基础。