본문으로 바로가기

Tcl 컴파일러 (Compiler)

category 카테고리 없음 2024. 6. 25. 13:43

이 강좌는 TclPro에 포함되어 있는 바이트코드 컴파일러 설명입니다.

  • 기계어 컴파일을 하지 않습니다.
  • 속도가 빨라지지 않습니다.

TclCompiler의 목적은 소스를 숨기는 데 있습니다. Tcl은 JIT와 같은 소스를 바이너리 코드로 변환하여, 오버헤드를 줄임으로 속도를 개선하는 일의 행위는 하지 않습니다. 어쨌든, 대부분 공통 관심사는 소스코드를 숨기는데 있을 것입니다. TclPro는 우여곡절 끝에 현재의 기능이 추가되었고 TclDevKit으로 변경이 되었으며, 현재는 ActiveState사에서 유지/보수 및 판매가 되고 있습니다. TclPro의 TclCompiler는 Tcl8.3만을 지원하며, TclDevKit은 Tcl8.4를 지원합니다.

사용방법

set str "지극히 심플한 Tcl $tcl_version"
puts $str

위와 같은 파일을 준비합니다. tclsh를 실행 후 다음과 같이 입력합니다.

% package require compiler
1.4
% compiler::compile test.tcl
% exit

이것으로 바이트 코드로 컴파일된 test.tbc 파일이 생성됩니다. 이 tbc 파일을 수행하기 위해서는 tbcload 확장 패키지가 필요하지만, ActiveTcl에는 기본으로 포함이 되어 있어 다음과 같이 실행하기만 하면 그만입니다.

tclsh test.tbc

생성된 tbc의 내부는 다음과 같이 사람이 볼 수 없는 코드로 변환됩니다.

ActiveTcl내에 포함된 tbcload는 윈도우즈 기준으로 아래의 위치에 설치됩니다.

lib\tcl8.4\tbcload1.7

Freewrap, Starpack에서 사용하고 싶을 때는 tcbload를 포함하기만 하면 됩니다. 또한 확장자는 tbc이지만, tcl로 바꿔도 무방하므로 tcl로 바꾼 후 패키징합니다. Freewrap, Starpack에 ActiveTcl의 tbcload를 포함해도 문제없을 것 같지만, 라이선스에 얽매이지 않고 싶으신 분은 아래의 링크에서 tbcload를 다운로드하시면 됩니다.

관련자료 다운로드

tclcompiler1.4.zip
0.03MB
tclcompiler-1.5-win32-bin.zip
0.01MB
tbcload-1.4-win32-bin.zip
0.01MB
tbcload1.7.7z
0.01MB