Dev/bun

What the Bun?

괴발짜응 2022. 11. 8. 13:52
반응형

Bun(번)이 뭐임? 사전적 의미로는 "작은 롤빵"이라는 의미가 있다고 구글 번역기가 그러더라구요. 자주 사먹던 이제는 고속도로 휴게소에서나 찾아 볼 수 있는 커피와 버터향 가득한 작은 빵을 그 빵을 우린 번이라고 불렀죠. 로띠 번이었나, 따땃할 때 먹으면 참 맛있는데... 암튼, 나는 빵 따위 이야기할 게 아니라서...


번의 로고는 이렇게 생겼다. 국내에서 번이라 불리던 녀석과는 참 다르게 찐빵 또는 왕만두 같이 생겼다.

Bun is a fast all-in-one JavaScript runtime 

Bundle, transpile, install and run JavaScript & TypeScript projects -- all in Bun. 
Bun is a new JavaScript runtime with a native bundler, transpiler, task runner and npm client built-in.
 

Bun is a fast all-in-one JavaScript runtime

Bundle, transpile, install and run JavaScript & TypeScript projects – all in Bun. Bun is a new JavaScript runtime with a native bundler, transpiler, task runner and npm client built-in.

bun.sh

이렇게 정의 되어 있습니다. 그러니까, 각 브라우저나 Node.js 나 Deno와 같이 JavaScript를 구동하게 해주는 런타임인데 "npm client, 번들러 트랜스파일러 등을 다 때려 박은 겁나 빠른 JavaScript 런타임이다." 라는 의미다.

 

공식 사이트에서의 자랑질을 보자면, Http 요청이나 WebSocket의 경우 NodeJS나 Deno의 성능을 압도한다고 되어 있다.

출시 된지 얼마 되지 않았기 때문에 아직 에코 시스템이 부족하긴 하나, 뭐 성능이 좋다고 하니, 앞으로 하나씩 차근차근 알아가 공부해 보려고 한다. 

 

그래서, 일단 첫 시간은 간단하게 Intro, 대략의 소개는 끝났으니...

 

본격적인 소개를 해 보자면

 

Getting started

curl https://bun.sh/install | bash

번의 HTTP 서버는 이미 내장 되어 있다...

//http.js
export default {
	port: 3000,
    fetch(request) {
    	return new Response("Welcom to Bun!");
    }
}

번을 실행하자~ 직관적이다.

bun run http.js

브라우저에서 http://localhost:3000 에 접속해보자

 

Bun Cli

bun run

Nodejs 또는 Typescript 파일을 실행하기 위한 명령어는 npm 과 동일하게 명령을 내리면 됩니다.

심지어 npm run 보다 30배 빠르게 실행된다고 합니다.

 

트위터에서 즐기는 Jarred Sumner

“This is what 30x faster looks like. Left: bun run (50 times) Right: npm run (< 50 times)”

twitter.com

 

bun install

bun install은 npm과 호환되는 패키지 관리자입니다. 

심지어 yarn 보다 20배 빠르게 패키지를 인스톨 된다고 합니다.

 

bun wiptest

Jest 같은 test runner를 빌트인으로 가지고 있으며, (불안하지만) 이렇게 빠른 테스트 런너는 본적이 없을 정도라고 합니다.

 

트위터에서 즐기는 Jarred Sumner

“runs 266 tests that SSR with react-dom 40% faster than jest can print its version number”

twitter.com

 

License

MIT

 

Bun is on GitHub

 

GitHub - oven-sh/bun: Incredibly fast JavaScript runtime, bundler, transpiler and package manager – all in one.

Incredibly fast JavaScript runtime, bundler, transpiler and package manager – all in one. - GitHub - oven-sh/bun: Incredibly fast JavaScript runtime, bundler, transpiler and package manager – all i...

github.com

Conclusion

저도 하나씩 다시 공부해 보려고 합니다. 다음 포스트에서는 실질적으로 작은 프로젝트를 만들어보면서 익혀 나갈 셈입니다~ 화이팅~

 

추가

이래 저래 다시 뜯어 봤더니... 번은 JavaScriptCore 엔진을 기반으로 하고 있다. 그러니 맥에서만 겁나 빠르게 작동한다.

물론, 리눅스에서도 빠르지만, 맥에서는 거의 2배 이상 빠르다. 특히, 애플 실리콘인 경우에만. 맥에만 특화 되어 있다. 이거 다시 좀 생각해 봐야겠다.

반응형