asm.js是一个中间语言,设计目的是使采用C等编程语言编写的计算机软件可运行为网络应用程序,同时性能特征明显优于标准JavaScript。
asm.js包括一个JavaScript的严格子集,其中的代码采用具有手动内存管理的静态类型语言(就像C语言)编写,代码使用一个源代码至源代码编译器(例如基于LLVM的Emscripten(英语:Emscripten))翻译。通过将语言特性限制在适合提前优化(英语:Ahead-of-time optimization)和其他性能改进的范围内,性能得到了提高。
Mozilla Firefox是第一个实现针对asm.js优化的浏览器,从Firefox 22开始使用。
asm.js由JavaScript语言的一个严格子集组成。它可以显著提高采用具有手动内存管理(例如C)的静态类型语言编写的网络应用程序在使用源代码至源代码编译器转换为JavaScript后的性能。Asm.js的目标并不是提高手写JavaScript代码的性能,也不实现增强性能以外的其他目的。
通过将语言特性限制在适合提前优化和其他性能改进的范围内,其旨在具有比标准JavaScript更接近于本地(原生)代码的性能特征。通过使用JavaScript的一个子集,asm.js很大程度上支持所有主要的网页浏览器,这不同于WebAssembly或Google Native Client等途径。
asm.js通常不直接编写,而是作为一种通过编译器生成的中间语言,该编译器获取C++或其他语言的源代码,然后输出asm.js。
例如,提供下列C语言代码:
int f(int i) { return i + 1;}