노드js(Node.js)를 만든 라이언 달이 이를 대체하기 위한 새로운 자바스크립트 런타임 환경을 공개했다.
최근 미국 지디넷은 라이언 달이 이끄는 개발팀이 런타임 디노(Deno) 1.0을 출시했다고 보도했다. 디노 1.0 버전은 공식 홈페이지 또는 깃허브에서 다운 받아 사용할 수 있다.
노드(Node)의 아나그램으로 이름이 지어진 디노는 노드JS와 같이 V8 자바스크립트 엔진을 기반으로하는 런타임이다. 웹브라우저 밖에서 자바스크립트와 타입스크립트 코드를 실행하기 위해 만들어졌다.
라이언 달은 노드js를 개발하며 느낀 아쉬운 점을 밝히며 디노를 공개했다. 그가 지적한 아쉬운 점은 프로미스(promises) 미지원, 모든 시스템 호출에 접근할 수 있어 취약점이 노출되는 보안, 복잡한 빌드 시스템, NPM 패키지, 노드 모듈, 확장명 미요구, 불필요한 index.js 등이다.
라이언 달은 개발 중 아쉬운 부분을 디노에서 해결했다고 강조했다. C++로 제작된 노드JS와 달리 디노는 보안 강화를 위해 핵심 영역을 러스트로 개발했으며 타입스크립트 컴파일러를 포함한다.
또한 V8샌드박스로 자바스크립트 코드를 격리시켜 취약점을 차단하며 프로그램이 디스크, 네트워크, 서브프로세스 또는 환경 변수에 접속할 수 없도록 막는다. 또한 확인되지 않은 오류가 발생하면 실행을 중단시켜 취약점 발생을 미연에 방지한다.
디노는 생산적이고 안전한 스크립팅 환경을 제공하는 것을 목적으로 만들어졌다. NPM 패키지 관리자를 사용하지 않는 대신 URL 도는 파일 경로를 참조해 모듈을 불러온다. 파이썬 또는 배쉬로 작성된 유틸리티 스크립트를 대체할 수도 있다.
라이언 달은 “디노는 노드JS와 비슷한 목표를 가지고 있지만 완전히 새로운 구현으로 속도 면에서도 유리하다”며 “디노의 웹 서버 성능은 노드js와 거의 같지만 대기 시간이 짧다”고 강조했다.
관련기사
- MS의 공격적 오픈소스 인수…업계 반응은 '긍정적'2020.05.17
- 깃허브, 노드JS 패키지매니저 'npm' 인수2020.05.17
- 개발자가 가장 배우고 싶은 프로그래밍 언어는 '고(GO)'2020.05.17
- MS의 타입스크립트, 프로그래밍 언어 첫 10위 달성2020.05.17
그가 밝힌 내용에 따르면 헬로월드 디도 HTTP 서버는 1.3 밀리초의 최대 대기 시간으로 초당 약 25k 요청을 수행한다. 비슷한 노드 프로그램은 초당 34k 요청을 수행하는데 2에서 300 밀리초 사이의 약간의 불규칙한 최대 대기 시간이 발생한다.
라이언 달은 “디노는 하나의 큰 프로그램이 아니라 여러 상자를 쌓아 만든 프로그램으로 다양한 패키지나 라이브러리를 통합해 사용할 수 있다”며 “현재 깃허브에서 제공하는 코어 크레이트는 매우 베어본으로 사용자가 빌드를 구성하고 조정할 수 있다”고 설명했다.