# Fabrice Bellard가 공개한 초경량 JavaScript 엔진 **MicroQuickJS** – 특징·설치·활용까지 한눈에 정리

---

# # 📌 서론 – “왜 또 다른 JavaScript 엔진이 필요할까?”

최근 웹·서버·임베디드 환경에서 **JavaScript**는 브라우저를 넘어 다양한 분야에 쓰이고 있습니다. 하지만 기존 엔진은 메모리 사용량이 크거나 빌드가 복잡해 **리소스가 제한된 시스템**에서는 활용이 어려운 경우가 많죠.

이러한 문제를 해결하고자 **Fabrice Bellard**(QEMU·FFmpeg·TinyCC 등 수많은 유명 프로젝트를 만든 천재 개발자)가 새로운 프로젝트, **MicroQuickJS**를 공개했습니다. 초경량이면서도 QuickJS와 호환성을 유지해, 임베디드 디바이스부터 간단한 스크립트 실행까지 폭넓게 활용할 수 있습니다.

본 글에서는 **MicroQuickJS**가 무엇인지, 어떤 장점이 있는지, 실제로 어떻게 설치하고 사용할 수 있는지, 그리고 초보자도 쉽게 적용할 수 있는 활용 예시까지 차근차근 살펴보겠습니다.

---

# # 1️⃣ MicroQuickJS란? – 초경량을 지향하는 새로운 **JavaScript 엔진**

- **Fabrice Bellard**가 직접 설계·구현한 엔진으로, 기존 QuickJS 코드를 기반으로 **코드 규모와 메모리 사용량을 크게 축소**했습니다.

- 전체 바이너리 크기가 **200KB 이하**(압축 전 기준)이며, 최소 1 MB 이하의 RAM만으로도 정상 동작합니다.

- ECMA‑262 표준의 대부분을 지원하면서도, 불필요한 기능(예: 정규표현식 엔진, 일부 내장 객체)은 선택적으로 제외할 수 있어 커스터마이징이 용이합니다.

> **핵심 포인트**: “**MicroQuickJS**는 ‘Micro’(초소형) + ‘QuickJS’(빠른 실행)라는 이름 그대로, **작고 빠른 JavaScript 엔진**을 원하는 개발자를 위한 최적의 선택입니다.

---

# # 2️⃣ 주요 특징 – 초보자도 바로 이해할 수 있는 5가지 장점

| 특징 | 설명 | 초보자에게 의미하는 바 |

|------|------|-------------------|

| **극소형 바이너리** | 200KB 미만 | 다운로드·배포가 간편 |

| **낮은 메모리 요구** | 1 ~ 2 MB RAM | 라즈베리파이·IoT 디바이스에서도 구동 |

| **QuickJS 호환** | 대부분의 API 동일 | 기존 QuickJS 예제 그대로 활용 가능 |

| **모듈식 빌드** | 필요 없는 기능 제외 가능 | 프로젝트에 맞는 경량화 가능 |

| **C API 제공** | C 언어와 직접 연동 | 임베디드 C 프로젝트에 손쉽게 통합 |

이러한 특징 덕분에 **JavaScript 엔진**을 처음 접하는 초보자도 복잡한 설정 없이 바로 실행 파일을 만들고, 스크립트를 테스트해볼 수 있습니다.

---

# # 3️⃣ 설치·사용 방법 – 3단계만 따라 하면 끝!

## # 3.1. 소스 코드 다운로드

```
bash

git clone https://github.com/fabris/microquickjs.git

cd microquickjs

```

## # 3.2. 빌드

```
bash

make          # 기본 설정(최소 기능)으로 빌드

# 혹은 메모리 최적화 옵션

make CFLAGS='-Os -flto'

```

> **Tip**: `make config` 파일에서 `ENABLE_REGEXP=0` 등 불필요한 기능을 끄면 바이너리 크기가 더 작아집니다.

## # 3.3. 간단한 스크립트 실행

```
bash

./microquickjs hello.js

```

`hello.js` 예시:

```
javascript

print('Hello, MicroQuickJS!');

```

위 명령을 실행하면 콘솔에 **“Hello, MicroQuickJS!”** 가 출력됩니다.

## # 3.4. C 프로그램에 임베드

```
c

# include 'quickjs.h'

int main() {

    JSRuntime *rt = JS_NewRuntime();

    JSContext *ctx = JS_NewContext(rt);

    JS_EvalSimpleString(ctx, 'print('Embedded!');');

    JS_FreeContext(ctx);

    JS_FreeRuntime(rt);

    return 0;

}

```

컴파일:

```
bash

gcc -o embed embed.c -I. -L. -lmicroquickjs

```

이처럼 **MicroQuickJS**는 독립 실행 파일뿐 아니라 C 코드에 직접 삽입해 사용할 수도 있어, 임베디드 시스템 개발에 최적입니다.

---

# # 4️⃣ 활용 사례 – 초보자도 바로 적용 가능한 3가지 아이디어

1. **IoT 디바이스 스크립트 엔진**

   - 라즈베리파이·ESP32 등 제한된 메모리 환경에서 간단한 자동화 로직을 JavaScript로 작성하고, MicroQuickJS로 실행.

2. **서버‑사이드 라이트 스크립팅**

   - 작은 마이크로서비스에서 설정 파일이나 플러그인 로직을 JavaScript로 제공하고, 빠르게 파싱·실행.

3. **교육용 인터프리터**

   - 프로그래밍 입문 교육에서 “브라우저 없이도 JavaScript를 실행한다”는 경험을 제공, 학생들이 C와 JavaScript 연동을 직접 체험 가능.

각 사례는 별도의 복잡한 설정 없이 **MicroQuickJS** 바이너리와 몇 줄의 코드만으로 구현할 수 있어, 초보자도 손쉽게 시작할 수 있습니다.

---

# # 5️⃣ 앞으로의 전망 – **MicroQuickJS**가 가져올 변화

- **오픈소스 커뮤니티**가 활발히 성장하고 있어, 플러그인·바인딩이 점차 확대될 전망입니다.

- **Fabrice Bellard**의 다른 프로젝트와 연계(예: QEMU, FFmpeg)하면, 멀티미디어 처리와 스크립트 제어를 하나의 경량 바이너리로 통합할 수 있습니다.

- 임베디드·IoT 시장이 확대되면서, **MicroQuickJS**와 같은 초소형 엔진에 대한 수요가 급증할 것으로 예상됩니다.

---

# # 📌 결론 – 지금 바로 **MicroQuickJS**를 체험해 보세요!

Fabrice Bellard가 만든 **MicroQuickJS**는 “작지만 강력한” JavaScript 엔진을 찾는 모든 개발자에게 최적의 선택입니다.

1️⃣ GitHub에서 소스 코드를 받아 빌드하고,

2️⃣ 간단한 스크립트를 실행해 보며,

3️⃣ 직접 C 프로젝트에 임베드해 보세요.

**시작이 반**이라는 말처럼, 오늘 바로 다운로드하고 작은 프로젝트에 적용해 보면, **JavaScript**와 **C**를 연결하는 새로운 가능성을 직접 체험할 수 있습니다.

> **행동 유도**:

> - 👉 [GitHub 저장소 바로 가기](https://github.com/fabris/microquickjs)

> - 📌 블로그 구독하고 최신 업데이트와 활용 팁을 받아보세요!

여러분의 첫 번째 **MicroQuickJS** 프로젝트가 기대됩니다! 🚀
