하리Hari

Hana 런타임이란?

하리와 카나데를 컴퓨터에서 실행하는 Hana 런타임을 소개해요. 브라우저에서는 못 하는 파일, 소켓, HTTP, 시간대를 다뤄요.

Hana는 하리(Hari)와 카나데(Kanade)를 내 컴퓨터에서 실행하는 프로그램이에요. 이 문서의 실행 버튼과 플레이그라운드는 브라우저 안에서 도는 엔진이라 컴퓨터의 파일이나 네트워크에 손댈 수 없지만, Hana는 터미널에서 실행하는 프로그램이라 그런 일도 할 수 있어요. 그래서 이 문서에서 “브라우저에서는 쓸 수 없어요”라고 하는 도구는 모두 Hana 런타임으로 실행할 때 쓰는 것들이에요.

Hana는 Go로 만들어졌고, 인터프리터, 바이트코드 컴파일러와 VM, 명령줄 도구, 언어 서버가 실행 파일 하나에 들어 있어요. 소스 코드는 github.com/soumt-r/hana에 있고, MIT 라이선스로 공개되어 있어요.

할 수 있는 일

명령 하는 일
hana run 파일.hr 하자(.hr), 카나데(.knd), 컴파일된 바이트코드(.hn)를 실행해요
hana build 파일.hr 바이트코드(.hn)로 컴파일해서 저장해요
hana pack 파일.hr 프로그램을 실행 파일 하나로 묶어요. 다른 운영체제용도 만들 수 있어요
hana add 경로 다른 사람이 만든 패키지를 프로젝트에 추가해요 (install, remove, list도 있어요)
hana init 폴더 시작 파일이 있는 새 프로젝트를 만들어요
hana lsp 에디터에서 자동완성과 오류 표시를 해 주는 언어 서버를 실행해요

hana run--bc를 붙이면 바이트코드 컴파일러와 VM으로 실행하고, 붙이지 않으면 트리워킹 인터프리터로 실행해요. 두 방식은 같은 결과를 내도록 만들어져 있어요.

프로그램을 만들고 나누기

문서 내용
패키지 쓰기와 만들기 hana add로 다른 사람의 패키지를 가져다 쓰고, 내 패키지를 만들어요
실행 파일로 묶기 hana pack으로 프로그램을 실행 파일 하나로 만들어요

브라우저에서 못 하는 일을 하는 도구

도구 하는 일
파일 다루기 [파일] 모듈로 파일과 폴더를 읽고 써요
소켓으로 대화하기 [소켓] 모듈로 네트워크로 글을 주고받아요
웹 주소에서 가져오기 [HTTP] 모듈로 웹 서버에 요청을 보내요
시간대 timezone 패키지로 도시마다 다른 시각을 다뤄요

[수학], [텍스트], [경로] 같은 나머지 표준 모듈은 브라우저에서도, Hana에서도 똑같이 돌아가요. 이 도구들은 기본 문법 튜토리얼에 있어요.

믿을 수 없는 스크립트를 돌릴 때

Hana는 기본으로 파일과 네트워크 접근을 허용해요. 남이 준 스크립트를 돌릴 때는 --allow-file=false로 파일 접근을, --allow-net=false로 네트워크 접근을 막을 수 있어요. 자세한 내용은 파일 다루기소켓으로 대화하기의 마지막 절에 있어요.

오류와 도움말도 내 언어로

Hana가 알려 주는 도움말과 오류 문구는 한국어와 일본어로 나와요. 스크립트가 낸 오류는 그 스크립트의 언어(하리는 한국어, 카나데는 일본어)로 나오고, 명령줄의 도움말은 --locale ko--locale ja, 환경 변수 HANA_LANG, 시스템 언어 순으로 정해져요.

놀이터
결과
코드를 작성하고 '실행' 버튼을 눌러보세요.