Ant JavaScript Runtime: High-Performance, Lightweight JS Engine

Ant JavaScript Runtime: High-Performance, Lightweight JS Engine

Ant는 처음부터 구축된 가볍고 고성능인 JavaScript runtime입니다

Ant는 단일 9.1 MB 바이너리 내에서 V8에 근접한 속도 경험을 제공하며, 대용량 다운로드나 복잡한 툴체인 설정의 필요성을 제거합니다. 다른 많은 runtime과 달리, Ant는 V8, JSC 또는 SpiderMonkey의 래퍼가 아닙니다. Ant는 Ant Silver라고 불리는 자체 제작 엔진을 사용합니다.

Extreme Binary Size and Cold Start Performance

Ant는 최소한의 footprint를 위해 설계되었습니다. runtime의 바이너리 크기는 9.1 MB로, 기존의 JavaScript runtime보다 훨씬 작습니다. 이러한 효율성은 더 빠른 cold start로 이어집니다. Hono를 import하고, 두 개의 route를 등록한 뒤 종료하는 시간을 측정하는 벤치마크에서, Ant는 5.4 ms의 cold start 시간을 기록하여 Bun (12.8 ms), Deno (24.8 ms), 그리고 Node.js (31.1 ms)보다 뛰어난 성능을 보약했습니다.

Native Ecosystem and TypeScript Support

Ant는 기존 JavaScript ecosystem과 호환되며 실제 npm package를 지원합니다. WinterTC 표준을 준수하며 100% 호환성 점수를 유지합니다. Hono, Elysia, TypeScript, React, 그리고 Rolldown과 같은 인기 있는 framework와 tool을 지원합니다.

주요 개발자 경험 기능은 다음과 같습니다:

  • Zero-config TypeScript: Ant는 tsconfig 파일, bundler, 또는 별도의 빌드 단계 없이 TypeScript 파일을 직접 실행합니다.
  • Direct Server Execution: Ant는 기본 fetch export를 제공하여 Hono와 같은 framework가 adapter 없이 작동할 수 있게 합니다. 개발자는 단순히 ant server.js를 실행하여 서버를 시작할 수 있습니다.
  • Fast Package Installation: Ant는 npm보다 최대 40배 더 빠른 것으로 보고된 자체 package installation mechanism을 포함합니다.

Hardware-Isolated Sandboxing

Ant는 신뢰할 수 없는 JavaScript code를 실행하기 위한 VM-isolated sandbox를 제공합니다. 단순한 권한 프롬프트와 달리, 이는 KVM 또는 Hypervisor.framework VM을 통해 구현된 강력한 경계입니다. 이를 통해 각 sandbox가 하드웨어적으로 격리된 자체 인스턴스를 갖도록 보장합니다.

Sandbox 기능은 다음과 같습니다:

  • Read-only Mounts: 쓰기 권한이 명시적으로 부여되지 않는 한, filesystem은 불변(immutable) 상태로 마운트될 수 있습니다.
  • Network Control: 네트워크 액세스는 기본적으로 거부되며, 특정 이름이 지정된 port만 전달됩니다.

The ants.land Registry

Ant는 npm protocol을 지원하는 오픈 registry인 ants.land를 도입했습니다. 이를 통해 package를 scope 또는 bare name으로 발행하고 설치할 수 있습니다. 또한 package는 esm.ants.land를 통해 브라우저에서 직접 접근할 수 있습니다.

Community Feedback and Considerations

Ant 프로젝트는 작은 바이너리 크기와 임베딩 잠재력로 인해 관심을 끌었지만, 커뮤니티는 추가 개발을 위해 몇 가지 사항을점을 noted for further development:

"I hope you get some collaborators, to increase the bus factor. You might want to write a roadmap to focus efforts."

또한, 프로젝트 작성자인 theMackabu는 최근 릴리스에서 설치 중 libcares 에러로 인해 정적 릴리스 핫픽스가 필요했다고 언급했습니다.

Sources