Wren 소개

Wren만의 특별함을 알아봐요


Wren은 작고 빠르며 클래스 기반인 동시성 스크립팅 언어예요. Lua 정도 크기의 패키지에 Smalltalk을 담고 Erlang을 살짝 곁들여 익숙하고 현대적인 문법으로 포장한 언어라고 생각해 봐요.

  • 작아요. VM은 읽기 쉽고 정성껏 주석을 단 C 코드로 되어 있는데, 세미콜론이 4,000개가 채 안 돼요.

  • 빨라요. 똑똑한 단일 패스 컴파일러가 꽉 짜인 효율적인 바이트코드를 만들어내요.

  • 클래스 기반이에요. 클래스와 객체가 중심에 자리 잡고 있어요.

  • 동시성을 지원해요. 가벼운 파이버가 언어에 내장되어 있어요.

  • 스크립팅에 적합해요. 임베드할 수 있고, 의존성이 없으며, 표준 라이브러리가 작고, 사용하기 쉬운 C API를 갖추고 있어요.

VM

Wren의 심장은 VM이에요. Wren 가상 머신은 언어의 핵심으로, 모든 Wren 소스 코드를 실행해요. 독립 실행형 애플리케이션이 아니라 그냥 라이브러리예요. 더 큰 호스트 애플리케이션 안에 임베드되도록 설계됐어요.

Wren이 임베드된 프로젝트로는 이런 것들이 있어요:

  • TIC-80 - 작은 게임을 만들고 플레이하고 공유할 수 있는 판타지 컴퓨터예요(PICO8과 비슷해요).
  • DOME - 게임을 만들기 위한 크로스 플랫폼 프레임워크예요.
  • luxe - 게임을 빠르게 만들 수 있는 크로스 플랫폼 게임 엔진이에요.
  • Wren Console - 대부분 Wren 자체로 작성된 Wren REPL이자 CLI예요.

직접 만든 프로젝트 안에 Wren을 임베드할 수도 있어요. Exercism에서는 호스트 애플리케이션으로 Wren Console을 사용할 거예요. 터미널에서 Wren 스크립트를 실행하고 테스트할 수 있게 해줘요.

왜 Wren일까요?

Wren은 원래 Crafting Interpreters로 유명한 Bob Nystrom이 만들었어요. 그는 여러 언어를 만들어 온 사람인데, Wren을 만들게 된 계기를 이렇게 설명해요:

애플리케이션에 임베드하는 데 쓰이는 스크립팅 언어가 몇 가지 있어요. 대표적인 게 Lua고, 예전에는 TCL도 그랬죠. Guile도 있고, 점점 JavaScript도 쓰이고, 어떤 애플리케이션은 Python을 임베드해요. 저는 게임 개발자 출신이라 "스크립팅"이라고 하면 "게임 스크립팅"을 먼저 떠올려요.

Lua는 좋아요. 작고 단순하고 빠르죠. 그런데, 비판하려는 건 아니고요, C++나 Java 같은 언어에 익숙한 사람에게는 좀 이상하게 느껴질 거예요. 문법이 다르고, 특히 객체 모델 같은 의미 체계가 독특하죠. 1부터 시작하는 인덱싱은 누구나 익숙해질 수 있지만, 메타테이블 같은 건 객체가 나중에 Lua에 억지로 붙여진 것이라는 걸 여실히 보여줘요.

Lua만큼 단순하면서도 객체 지향 프로그래밍(OOP)에 익숙한 사람에게는 자연스럽게 느껴지는 언어가 있을 자리가 있다고 생각해요. Wren은 그걸 위한 제 시도예요.

한번 사용해 보기

아무것도 설치할 필요 없이 웹 브라우저에서 바로 사용해 볼 수 있어요. 세련된 UI로 감싼 Wren을 가지고 실험해 보고 싶다면 Wren Playground를 살펴보세요.