asm.js는 어셈블리(assembly) + 자바스크립트(javascript)로 만들어진 합성 명칭으로, 모질라가 주축이되어 개발하고 있는 특정 목적용 자바스크립트 서브셋이다. 이름그대로 저레벨 연산을 위해서 특화된 자바스크립트라는 뜻. 일반적으로 asm.js에서 정의된 서브셋과 실행을 위한 컴파일러를 포함한 브라우저의 환경 전체를 지칭하는 형태로 사용되고 있다.
기본적으로 저레벨의 계산을 고성능으로 처리하기 위해서 만들어졌으며, 독자적인 코드작성보다 C나 Cpp등의 언어에서 작성된 코드를 asm.js 서브셋을 사용한 자바스크립트로 변환해 저레벨 연산을 처리할 수 있게 해준다.
웹브라우저상에서 더 빠른 프로그램을 돌리기 위한 목적을 가지기는 하지만, 방법면에서 ‘자바스크립트를 빠르게 처리하는’ 것과는 다른 형태의 접근이다. 즉 구조적으로 한계가 있는 자바스크립트에 ‘복잡한 연산을 저레벨로 빠르게 연산한다’라는데 목적가진 서브셋을 통해 저레벨에 접근할 수 있는 통로를 만든 것이다. 즉 자바스크립트 자체가 빨라지는 것이 아니라 저레벨의 고성능 처리가 필요한 프로그램을 자바스크립트로 전달하는데 필요한 기능이다. 이러한 형태의 처리를 위해 구글에서 만들고 있는 크롬용 바이너리 실행기인
구글 네이티브 클라이언트와 플랫폼 독립구조인 구글 PNaCl과 목적면에서는 닮아있으나 구현방향이 크게 다른 프로젝트라고 할 수 있다.
여러번의 비공식 버전에서의 지원을 거쳐 파이어폭스 브라우저 버전 22를 시작으로 공식 지원이 시작되었으며, 크롬 브라우저에서는 버전28부터 지원을 시작했다.(당연한 이야기지만 같은 블링크 엔진을 쓰는 오페라 브라우저도 지원 중)
대표적으로 언리얼 엔진과 유니티 엔진이 asm.js 프로젝트로 포팅되어 지원하고 있다. 그외에도 QT등의 프레임웍도 이식되면서 앞으로의 전망이 꽤 밝다고 할 수 있다.
아직까지 모든 스펙이 정해진 상태는 아니며 계속 수정이 이뤄지는 초안(Draft) 상태로 진행중이다.