맨위로가기

Asm.js

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

asm.js는 웹 애플리케이션의 성능 향상을 목표로 하는 자바스크립트의 하위 집합이다. C++과 같은 언어로 작성된 소스 코드를 컴파일러를 통해 asm.js 코드로 변환하여 사용하며, 자료형 일관성과 가비지 수집 최소화를 통해 성능을 향상시킨다. asm.js는 브라우저와 하드웨어에 따라 성능이 달라지며, Mozilla의 벤치마크에 따르면 네이티브 코드보다 약간 느리거나 빠르게 실행될 수 있다. 다양한 프로그래밍 언어, 프레임워크, 프로그램, 게임 엔진 등에서 활용되었으나, WebAssembly의 등장으로 인해 지원이 중단되었다.

더 읽어볼만한 페이지

  • 웹 프로그래밍 - 자바스크립트
    자바스크립트는 웹 페이지에 동적인 기능을 추가하기 위해 개발된 프로그래밍 언어로, 초기에는 라이브스크립트라 불렸으나 자바의 인기에 힘입어 변경되었고, ECMAScript로 표준화되어 웹 브라우저와 Node.js 등 다양한 환경에서 활용되지만, 오라클의 상표권 소유로 논란이 있다.
  • 웹 프로그래밍 - 블레이저 (웹 프레임워크)
    블레이저는 마이크로소프트가 개발한 웹 프레임워크로, .NET을 사용하여 웹 애플리케이션을 구축하며, C#과 Razor 구문을 사용해 컴포넌트를 만들고, 서버 측 및 클라이언트 측 렌더링을 모두 지원한다.
  • 파이어폭스 - 모질라 파이어폭스
    모질라 파이어폭스는 모질라 재단에서 개발한 무료 오픈 소스 웹 브라우저로, 탭 브라우징, 팝업 차단, 확장 기능 등을 지원하며 웹 표준 준수 및 개인 정보 보호 기능을 강화했다.
  • 파이어폭스 - 파이어폭스 4
    파이어폭스 4는 2011년 3월에 출시된 모질라 재단의 웹 브라우저로, 혁신적인 사용자 인터페이스 변화, HTML5 등 최신 웹 표준 지원, JägerMonkey 엔진을 통한 성능 향상, 그리고 추적 거부 기능과 플래시 쿠키 삭제를 통한 보안 강화가 특징이다.
  • 자바스크립트 - HTML
    HTML은 웹 페이지 제작을 위한 표준 마크업 언어로서, 팀 버너스리가 제안하고 구현한 후 인터넷 발전과 함께 널리 사용되며, SGML에 기반하여 하이퍼텍스트 기능으로 다양한 콘텐츠를 표현하고 연결하며, W3C와 WHATWG에서 표준화를 진행하고 최신 버전은 HTML Living Standard이다.
  • 자바스크립트 - 비주얼 스튜디오
    비주얼 스튜디오는 마이크로소프트가 개발한 통합 개발 환경(IDE)으로, 다양한 프로그래밍 언어와 플랫폼을 지원하며 소프트웨어 개발에 필요한 도구와 기능을 제공한다.
Asm.js - [IT 관련 정보]에 관한 문서
개요
명칭asm.js
종류중간 프로그래밍 언어
영향 받은 언어자바스크립트
영향을 준 언어웹어셈블리
설계자Mozilla
출시일2013년 3월 21일
운영체제플랫폼 독립적
웹사이트공식 웹사이트

2. 디자인

asm.js는 웹 애플리케이션의 성능을 크게 향상시키지만, 손으로 작성된 자바스크립트 코드의 성능을 개선하는 것을 목표로 하지 않으며, 성능 향상 외에는 어떠한 기능도 제공하지 않는다.

미리 컴파일 최적화 및 기타 성능 향상에 적합한 언어 기능을 제한함으로써 표준 자바스크립트보다 네이티브 코드에 가까운 성능 특성을 갖도록 설계되었다.[3] 자바스크립트의 하위 집합을 사용하기 때문에, 구글 네이티브 클라이언트와 같은 다른 방식과는 달리, asm.js는 대부분의 주요 웹 브라우저에서 지원된다.[4]

2. 1. 코드 생성

asm.js는 일반적으로 사람이 직접 작성하지 않고, C++(와)과 같은 언어로 작성된 소스 코드를 컴파일러를 사용하여 생성하는 중간 언어이다. 컴파일러는 소스 코드를 입력으로 받아 asm.js를 출력한다. 생성된 코드에서 변수 MEM8은 실제로 asm.js 코드의 "힙" 역할을 하는 타입 버퍼의 바이트 단위 "뷰"이다.[1]

2. 1. 1. C/C++ 코드 예시

asm.js는 일반적으로 직접 작성되지 않으며, 컴파일러를 사용하여 생성되는 중간 언어이다. 컴파일러는 C++와 같은 언어로 작성된 소스 코드를 입력으로 받아 asm.js를 출력한다.

예를 들어, 다음과 같은 C 코드가 주어졌을 때:

```c

int f(int i) {

return i + 1;

}

```

Emscripten은 다음과 같은 JS 코드를 출력한다.

```js

function f(i) {

i = i|0;

return (i + 1)|0;

}

```

`|0`의 추가와 타입 지정자가 없음에 유의해야 한다. 자바스크립트에서 비트 연산자는 피연산자를 32비트 부호 있는 정수로 변환하고 정수 결과를 반환한다. 이는 0과의 비트 OR 연산이 값을 정수로 변환한다는 것을 의미한다. 각 매개변수에 대해 이렇게 하면 함수가 외부 코드에서 호출될 경우 해당 값이 올바른 타입으로 변환된다. 또한 반환 값에도 사용된다. 이 경우 i에 1을 더한 결과가 정수가 되도록 하고 함수의 반환 타입을 표시한다. 이러한 변환은 asm.js에서 필요하므로 최적화 컴파일러가 미리 매우 효율적인 네이티브 코드를 생성할 수 있다. 이러한 최적화 컴파일러에서는 asm.js 코드가 다른 asm.js 코드를 호출할 때 변환이 수행되지 않는다. 필요한 타입 지정자는 값이 이미 올바른 타입을 가지고 있음을 보장하기 때문이다. 또한 부동 소수점 덧셈을 수행하고 정수로 변환하는 대신 단순히 네이티브 정수 연산을 수행할 수 있다. 이 모든 것은 상당한 성능 이점으로 이어진다.

다음은 문자열의 길이를 계산하는 또 다른 예시이다.

```c

size_t strlen(char *ptr) {

char *curr = ptr;

while (*curr != 0) {

curr++;

}

return (curr - ptr);

}

```

이는 다음과 같은 asm.js 코드를 생성한다.

```js

function strlen(ptr) {

ptr = ptr|0;

var curr = 0;

curr = ptr;

while ((MEM8[curr>>0]|0) != 0) {

curr = (curr + 1)|0;

}

return (curr - ptr)|0;

}

```

생성된 코드에서 변수 MEM8은 실제로 asm.js 코드의 "힙" 역할을 하는 타입 버퍼의 바이트 단위 "뷰"이다.

2. 1. 2. 코드 최적화

asm.js는 사람이 직접 코드를 작성하는 것이 아니라, 컴파일러를 통해 만들어지는 중간 언어이다. 보통 C++ 같은 언어로 작성된 코드를 컴파일러가 asm.js 코드로 바꿔준다.

예를 들어, 다음과 같은 C 코드가 있다고 가정해 보자.

```c

int f(int i) {

return i + 1;

}

```

Emscripten 컴파일러는 이 코드를 아래와 같은 JS 코드로 변환한다.

```js

function f(i) {

i = i|0;

return (i + 1)|0;

}

```

여기서 `|0`이 추가되고 타입 지정자가 없는 것을 볼 수 있다. JavaScript에서 비트 연산자는 숫자를 32비트 정수로 바꾸고, 그 결과를 정수로 반환한다. 즉, 0과 비트 OR 연산을 하면 값이 정수로 바뀐다는 것이다. (비트 연산자에 대한 간단한 개념적 설명에서는 타입 변환을 다루지 않을 수도 있지만, 모든 프로그래밍 언어는 자체적으로 연산자를 정의하며, JavaScript도 마찬가지이다.) 각 매개변수에 대해 이렇게 하면 함수가 외부에서 호출될 때 값이 올바른 타입으로 변환된다. 또한 반환 값에도 사용되는데, 이 경우 i에 1을 더한 결과가 정수가 되도록 하고 (그렇지 않으면 너무 커질 수 있음) 함수의 반환 타입을 표시한다. 이러한 변환은 asm.js에서 필요하므로, 최적화 컴파일러가 미리 매우 효율적인 코드를 생성할 수 있게 해준다. 최적화 컴파일러에서는 asm.js 코드가 다른 asm.js 코드를 호출할 때 변환이 수행되지 않는다. 필요한 타입 지정자는 값이 이미 올바른 타입을 가지고 있음을 보장하기 때문이다. 또한 부동 소수점 덧셈을 하고 정수로 변환하는 대신, 그냥 네이티브 정수 연산을 할 수 있다. 이 모든 것이 성능을 크게 향상시킨다.

다른 예시로, 문자열의 길이를 계산하는 C 코드는 다음과 같다.

```c

size_t strlen(char *ptr) {

char *curr = ptr;

while (*curr != 0) {

curr++;

}

return (curr - ptr);

}

```

이 코드는 다음과 같은 asm.js 코드로 변환된다.

```js

function strlen(ptr) {

ptr = ptr|0;

var curr = 0;

curr = ptr;

while ((MEM8[curr>>0]|0) != 0) {

curr = (curr + 1)|0;

}

return (curr - ptr)|0;

}

```

여기서 MEM8 변수는 asm.js 코드의 "힙(heap)" 역할을 하는 타입이 지정된 버퍼를 바이트 단위로 나타낸 것이다.

3. 성능

asm.js는 웹 애플리케이션의 성능을 크게 향상시키지만, 손으로 작성된 자바스크립트 코드의 성능을 개선하는 것을 목표로 하지 않으며, 성능 향상 외에는 어떠한 기능도 제공하지 않는다. 미리 컴파일 최적화 및 기타 성능 향상에 적합한 언어 기능을 제한함으로써 표준 자바스크립트보다 네이티브 코드에 가까운 성능 특성을 갖도록 설계되었다.[3] 구글 네이티브 클라이언트와 같은 다른 방식과는 달리, 자바스크립트의 하위 집합을 사용하므로 대부분의 주요 웹 브라우저에서 지원된다.[4]

3. 1. 브라우저별 성능

asm.js는 브라우저에서 실행되므로 성능은 브라우저와 하드웨어에 크게 의존한다. asm.js로 컴파일된 C 프로그램의 예비 벤치마크는 일반적으로 Clang을 사용한 네이티브 컴파일보다 2배 정도 느리다.[5]

일반적인 JavaScript에 비해 이처럼 성능이 향상된 주된 이유는 100% 자료형 일관성과 거의 없는 가비지 수집 때문이다(메모리는 대형 유형 배열에서 수동으로 관리된다). 동적 동작, 메모리 할당 또는 할당 해제가 없고, 잘 정의된 일련의 정수 및 부동 소수점 연산만 있는 이 단순한 모델은 훨씬 더 뛰어난 성능과 최적화 가능성을 제공한다.

2013년 12월에 발표된 Mozilla의 벤치마크는 상당한 개선을 보여주었다. "float32 최적화를 사용한 Firefox는 이러한 모든 벤치마크를 네이티브보다 약 1.5배 느리거나 더 빠르게 실행할 수 있다."[6] Mozilla는 네이티브로 컴파일된 코드의 성능이 단일 측정값이 아니라 범위이며, 다른 네이티브 컴파일러(이 경우 Clang 및 GCC)가 서로 다른 성능의 코드를 제공한다고 지적한다. "실제로, Box2D, FASTA 및 복사본과 같은 일부 벤치마크에서 asm.js는 Clang이 GCC에 가까운 것보다 Clang에 더 가깝다. 한 경우, asm.js는 Box2D에서 Clang을 약간의 차이로 이기기도 한다."[6]

3. 2. 브라우저 지원

Emscripten 프로젝트는 C 및 C++ 코드베이스(또는 LLVM IR로 변환할 수 있는 다른 언어)를 asm.js로 컴파일하는 데 사용할 수 있는 도구를 제공한다.[7]

ECMAScript 6을 지원하는 모든 브라우저는 해당 사양의 하위 집합이므로 asm.js 코드를 실행할 수 있어야 한다. 그러나 완전한 asm.js 지원을 가능하게 하는 기능(`Math.fround()`)이 해당 에디션에 추가되었으므로, 해당 기능이 없는 구형 브라우저에서는 문제가 발생할 수 있다.

일부 브라우저 구현은 asm.js에 특히 최적화되어 있다.

  • 모질라 파이어폭스는 파이어폭스 22부터 asm.js 특정 최적화를 구현한 최초의 웹 브라우저였다.[2] 파이어폭스에서 사용되는 모질라의 asm.js AOT(Ahead-Of-Time) 컴파일러인 OdinMonkey는 SpiderMonkey의 JIT 컴파일러인 IonMonkey의 구성 요소이다.
  • 마이크로소프트는 Microsoft Edge 레거시에서 사용되는 자바스크립트 엔진인 Chakra에서 asm.js에 대한 지원을 구현하여 고도로 최적화된 JIT 코드를 생성하는 검증을 수행했다.[8]
  • 구글 크롬의 V8 자바스크립트 엔진의 크롬 28 최적화로 인해 asm.js 벤치마크가 이전 크롬 버전보다 두 배 이상 빨라졌다.[9], 하지만 크롬의 V8은 AOT 컴파일을 사용하지 않는다.

4. 채택

asm.js를 기반으로 하는 현재 애플리케이션은 거의 모두 Emscripten 또는 Mandreel을 사용하여 asm.js로 컴파일된 C/C++ 애플리케이션이다. 프로그래밍 언어, 애플리케이션 프레임워크, 프로그램, 라이브러리, 게임, 게임 엔진 및 기타 소프트웨어 등이 포팅되었다.[10]

asm.js를 채택한 대표적인 사례들은 다음과 같다.


  • 프로그래밍 언어: C/C++, 루아, 펄, 파이썬, 러스트, 루비
  • 애플리케이션 프레임워크: Qt, pepper.js
  • 프로그램 및 라이브러리: Vim, FreeType, SQLite, OpenGL, 심플 다이렉트 미디어 레이어, GNU Privacy Guard, ctags, gnuplot, Graphviz, zlib
  • 게임 엔진: 언리얼 엔진 3, 언리얼 엔진 4, 유니티, , SuperTux, ScummVM, Dune II via OpenDune, BananaBread, Humble Mozilla Bundle의 모든 게임, 고도
  • 게임: , 슈퍼턱스, 듄 II, 바나나브레드, 험블 모질라 번들의 모든 게임 (''슈퍼 헥사곤'', ''AaAaAA! for the Awesome'', ''오스모스'', ''젠 바운드 2'', ''더스트포스 DX'', ''복스트론'', ''FTL: Advanced Edition'' 및 ''Democracy 3'')
  • 에뮬레이터: JSMESS, EM-DOSBox, Start9.io, JSMESS
  • 수학: HTML5 Fractal Playground

4. 1. 프로그래밍 언어

asm.js 기반 애플리케이션 대다수는 Emscripten이나 Mandrell을 이용하여 asm.js로 컴파일된 C/C++ 애플리케이션이다. 많은 프로그래밍 언어, 애플리케이션 프레임워크, 프로그램, 라이브러리, 컴퓨터 게임, 게임 엔진과 다른 소프트웨어가 이미 포팅되었다.[43] 아래는 그 예시이다.

프로그래밍 언어설명
C/C++Clang, LLVM
루아루아 VM (가상 머신)[44]
(마이크로)펄-5.16.3 포팅[45]
파이썬CPython 포팅[46]
러스트Emscripten을 타겟으로 함
루비루비 포팅[13]


4. 2. 애플리케이션 프레임워크

대부분의 asm.js 기반 애플리케이션은 Emscripten이나 Mandrell을 이용하여 asm.js로 컴파일된 C/C++ 애플리케이션이다. 많은 프로그래밍 언어, 애플리케이션 프레임워크, 프로그램, 라이브러리, 컴퓨터 게임, 게임 엔진 및 기타 소프트웨어가 이미 포팅되었다.[43] 다음은 그 예시이다.

  • Qt: 다양한 Qt 데모 및 Kate와 같은 KDE 앱 포트[15]
  • pepper.js: 다양한 PNaCl 앱 포트 (earth, voronoi, bullet 등)[14]

4. 3. 프로그램 및 라이브러리

asm.js에 기반한 애플리케이션 대다수는 Emscripten이나 Mandrell을 이용하여 asm.js로 컴파일된 C/C++ 애플리케이션이다. 많은 프로그래밍 언어, 애플리케이션 프레임워크, 프로그램, 라이브러리, 컴퓨터 게임, 게임 엔진과 다른 소프트웨어가 이미 포팅되었다.[43] 다음은 그 예시이다.

4. 4. 게임 엔진

asm.js에 기반한 애플리케이션 대다수는 Emscripten이나 Mandrell을 이용하여 asm.js로 컴파일된 C/C++ 애플리케이션이다. 많은 프로그래밍 언어, 애플리케이션 프레임워크, 프로그램, 라이브러리, 컴퓨터 게임, 게임 엔진과 다른 소프트웨어가 이미 포팅되었다.[43] 다음은 그 예시이다.

4. 5. 게임

asm.js 기반 애플리케이션 대다수는 Emscripten이나 Mandrell을 이용하여 asm.js로 컴파일된 C/C++ 애플리케이션이다. 많은 프로그래밍 언어, 애플리케이션 프레임워크, 프로그램, 라이브러리, 컴퓨터 게임, 게임 엔진과 다른 소프트웨어가 이미 포팅되었다.[43] 다음은 그 예시이다.

  • 언리얼 엔진 3[51][52]
  • 유니티 게임 엔진[53]
  • [54]
  • SuperTux[55]
  • ScummVM : 고전 어드벤처 게임 지원[56]
  • ''Dune II'' via OpenDune[57]
  • ''BananaBread''[58]
  • 험블 모질라 번들의 모든 게임 (''슈퍼 헥사곤'', ''AaAaAA! for the Awesome'', ''오스모스'', ''젠 바운드 2'', ''더스트포스 DX'', ''복스트론'', ''FTL: Advanced Edition'' 및 ''Democracy 3'')[34]
  • '''': 오픈 소스 프리둠 게임 에셋은 오픈 소스 둠 코드를 기반으로 한 PrBoom에서 실행된다.[30]
  • ''슈퍼턱스''[31]
  • ''듄 II''는 OpenDune을 통해 실행[32]
  • ''바나나브레드''는 큐브 2 기반[33]

4. 6. 에뮬레이터

asm.js 기반 애플리케이션 대다수는 Emscripten이나 Mandrell을 이용하여 asm.js로 컴파일된 C/C++ 애플리케이션이다. 많은 프로그래밍 언어, 애플리케이션 프레임워크, 프로그램, 라이브러리, 컴퓨터 게임, 게임 엔진과 다른 소프트웨어가 이미 포팅되었다.[43] 다음은 그 예시이다.

  • JSMESS - 콘솔, PC 게임 에뮬레이터인 MESS의 포팅.[60]
  • EM-DOSBox: DOSBox의 Emscripten 포트[35]
  • Start9.io: 여러 게임 아키텍처를 대상으로 하는 웹 에뮬레이션 플랫폼
  • JSMESS: 많은 게임 콘솔 및 컴퓨터 시스템용 MESS 에뮬레이터의 포트[36]

4. 7. 수학

asm.js에 기반한 애플리케이션 대다수는 Emscripten이나 Mandrell을 이용하여 asm.js로 컴파일된 C/C++ 애플리케이션이다. 많은 프로그래밍 언어, 애플리케이션 프레임워크, 프로그램, 라이브러리, 컴퓨터 게임, 게임 엔진과 다른 소프트웨어가 이미 포팅되었다.[43]

다음은 그 예시이다.

  • HTML5 Fractal Playground[61]
  • HTML5 프랙탈 놀이터[37] – 반복 함수로 생성된 프랙탈(예: 만델브로 집합)을 그린다.

5. 지원 중단

asm.js는 파싱 속도가 더 빠른 바이트코드 형식을 가진 WebAssembly (wasm)의 도입으로 인해 대부분 쓸모가 없어졌다.[38] SIMD.js와 같이 더 낮은 수준의 기능을 갖춘 자바스크립트를 확장하려는 노력 또한 2017년부터 중단되었다.[39]

asm.js는 주로 wasm으로 변환하는 WebAssembly 단체에서 작성한 프로그램을 통해 wasm의 "fallback"으로 유용하게 사용된다. asm.js에서 wasm으로 변환하는 전용 변환기는 없지만, TypeScript-to-wasm 컴파일러를 부분적으로 사용할 수 있다.[40]

참조

[1] 웹사이트 asm.js in Firefox Nightly https://blog.mozilla[...] 2013-03-21
[2] 웹사이트 Firefox 22.0 release notes https://www.mozilla.[...] Mozilla 2013-07-04
[3] 웹사이트 Asm.js http://asmjs.org/spe[...] Asm.js 2015-03-05
[4] 웹사이트 asm.js — frequently asked questions http://asmjs.org/faq[...] Asmjs.org 2014-07-26
[5] 웹사이트 asm.js http://asmjs.org/faq[...] Asm.js 2015-03-05
[6] 웹사이트 Gap between asm.js and native performance gets even narrower with float32 optimizations https://hacks.mozill[...] 2013-12-20
[7] 웹사이트 kripken/emscripten · GitHub https://github.com/k[...] Github.com 2015-03-05
[8] 웹사이트 Bringing Asm.js to Chakra and Microsoft Edge https://blogs.window[...] Microsoft 2015-05-07
[9] 웹사이트 Chrome 28 Beta: A more immersive web, everywhere https://blog.chromiu[...] Google 2013-07-06
[10] 웹사이트 Home — Demos — Games and Game Engines https://github.com/k[...]
[11] 웹사이트 plu https://themucker.gi[...] Themucker.github.io 2015-03-05
[12] 웹사이트 repl.it — Python https://replit.com/l[...] Repl.it 2015-03-05
[13] 웹사이트 repl.it — Ruby http://repl.it/langu[...] Repl.it 2015-03-05
[14] 웹사이트 pepper.js Examples https://trypepperjs.[...] Trypepperjs.appspot.com 2015-03-05
[15] 웹사이트 emscripten-qt — Demos http://vps2.etotheip[...] Vps.etotheipiplusone.com 2015-03-05
[16] 웹사이트 About Emscripten https://kripken.gith[...]
[17] 웹사이트 Vim.js — JavaScript port of Vim https://coolwanglu.g[...] Coolwanglu.github.io 2015-03-05
[18] 웹사이트 TrueType Fonts in JavaScript http://www.syntensit[...]
[19] 웹사이트 Port of SQLite to Javascript https://github.com/k[...] Github.com 2015-03-05
[20] 웹사이트 GnuPG.js https://manuels.gith[...] Manuuels.github.io 2015-03-05
[21] 웹사이트 ctags in the browser https://github.com/l[...] Github.com 2015-03-05
[22] 웹사이트 Gnuplot online http://gnuplot.respa[...] Gnuplot.respawned.com 2015-03-05
[23] 웹사이트 A hack to put GraphViz on the web. https://github.com/m[...] Github.com 2015-03-05
[24] 웹사이트 JavaScript port of ZLib DEFLATE for the browser https://github.com/r[...] Github.com 2015-03-05
[25] 간행물 Epic Games Releases 'Epic Citadel' on the Web https://www.unrealen[...] 2014-10-24
[26] 웹사이트 Unreal Engine 3 ported to JavaScript and WebGL, works in any modern browser http://www.extremete[...] Ziff Davis 2015-03-05
[27] 웹사이트 On the future of Web publishing in Unity http://blogs.unity3d[...] Blogs.unity3d.com 2014-04-29
[28] 웹사이트 HTML5 http://clb.demon.fi/[...] Clb.demon.fi 2015-03-05
[29] 웹사이트 Compiling for the Web http://docs.godoteng[...] 2016-11-10
[30] 웹사이트 Emscripten-Generated Code https://kripken.gith[...] Kripken.github.io 2015-03-05
[31] 웹사이트 Emscripten-Generated Code https://forandom.git[...] Forandom.github.io 2015-03-05
[32] 웹사이트 Dune 2 - Online (browser version) http://epicport.com/[...] Epicport 2015-03-05
[33] 웹사이트 Mozilla Banana Bread Demo https://developer.mo[...] Developer.mozilla.org 2015-03-05
[34] 웹사이트 Humble Mozilla Bundle pushes WebGL-powered browser gaming https://arstechnica.[...] Ars Technica 2014-10-15
[35] 웹사이트 EM-Dosbox on Github https://github.com/d[...] 2015-04-09
[36] 웹사이트 Page Redirection http://jsmess.textfi[...] Jsmess.textfiles.com 2015-03-05
[37] 웹사이트 HTML5 Fractal Playground https://web.archive.[...] Danielsadvernture.info 2015-03-05
[38] 웹사이트 FAQ https://webassembly.[...]
[39] 웹사이트 TC39 proposal for SIMD.js https://github.com/t[...] Ecma TC39 2020-06-23
[40] 웹사이트 WebAssembly/binaryen https://github.com/W[...] WebAssembly 2020-06-25
[41] 웹사이트 Binaryen Changelog https://github.com/W[...]
[42] 웹인용 asm.js in Firefox Nightly https://blog.mozilla[...] 2014-11-13
[43] 웹인용 Home - Demos - Games and Game Engines https://github.com/k[...]
[44] 웹인용 Lua REPL https://web.archive.[...] 2015-03-05
[45] 웹인용 plu https://web.archive.[...] 2015-03-05
[46] 웹인용 repl.it - Python http://repl.it/langu[...] 2014-11-23
[47] 웹인용 emscripten-qt - Demos http://vps2.etotheip[...] 2014-11-23
[48] 웹인용 Vim.js - JavaScript port of Vim http://coolwanglu.gi[...]
[49] 웹인용 TrueType Fonts in JavaScript http://www.syntensit[...]
[50] 웹인용 Port of SQLite to Javascript https://github.com/k[...]
[51] 보도자료 Epic Games Releases ‘Epic Citadel’ on the Web https://www.unrealen[...] Epic Games 2013-05-02
[52] 웹인용 Unreal Engine 3 ported to JavaScript and WebGL, works in any modern browser http://www.extremete[...] ExtremeTech
[53] 웹인용 On the future of Web publishing in Unity http://blogs.unity3d[...] 2014-04-29
[54] 문서 http://kripken.githu[...]
[55] 문서 http://forandom.gith[...]
[56] 웹인용 보관된 사본 https://web.archive.[...] 2014-11-23
[57] 문서 http://play-dune.com[...]
[58] 웹인용 Mozilla Banana Bread Demo https://developer.mo[...] 2014-11-23
[59] 웹인용 Humble Mozilla Bundle pushes WebGL-powered browser gaming http://arstechnica.c[...] Ars Technica 2014-10-15
[60] 문서 http://jsmess.textfi[...]
[61] 웹인용 HTML5 Fractal Playground https://web.archive.[...] 2015-03-05



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com