Lua 방언 Teal, 정적 타입을 지원하고 .tl 소스를 .lua 파일로 컴파일하는 언어 공개
- Teal은 Lua의 정적 타입 방언으로, 타입 주석으로 배열, 맵, 레코드, 인터페이스, 유니온 타입, 제네릭을 지정함
- 컴파일러 tl이 .tl 소스 코드를 .lua 파일로 변환하며, luarocks install tl 명령으로 설치하거나 Linux와 Windows용 사전 빌드 바이너리를 내려받을 수 있음
- 대형 프로젝트 빌드에는 빌드 도구 Cyan을 권장하고, VS Code용 vscode-teal과 NeoVim용 teal-language-server 같은 에디터 연동 도구도 제공됨
- 프로젝트는 Hisham Muhammad가 시작했고 GitHub에서 개발되며, 라이선스는 Lua와 같은 MIT임
- 브라우저에서 Teal Playground를 열어 컴파일러를 바로 실행해 볼 수 있음
Hacker News 의견들
AI 시대에 이런 실험을 왜 하는 거임? 예술 목적 말고는 의미가 있나 싶음.
gcc도 AI 시대에는 필요 없는 거임? 에이전트한테 컴파일러 만들라고 하면 되지 않나. 근데 Teal은 2019년 1월부터 있던 프로젝트임.
정적 타입 검사기는 LLM한테도 도움 됨. 컴파일 단계에서 실수를 잡아주니까.
새 프로그래밍 언어는 AI 시대에도 여전히 필요함. 튜링 완전해도 언어마다 표현력이 다르더라.
AI는 좋은 타입 체커에서 바로 피드백 받을 때 훨씬 잘 짬. 그냥 그게 다임.
Luau랑 비교는 어떰? 아, 이건 트랜스파일러라서 Luau랑 다른 거임. Luau는 완전히 다른 언어랑 런타임이고, Lua 문법 3대장은 Teal(TypeScript 느낌), Fennel(Lisp 느낌), Moonscript(Ruby 느낌)임.
나는 Lua 자체가 너무 가벼워서 별로 안 좋아함. 그래도 창의성이 계속 앞으로 밀고 나가는 건 좋음.
musl이랑 Lua에 C 라이브러리 붙이면 정적 바이너리 하나로 나옴. 나는 이걸 많이 씀.
Lua를 조금 써봤는데 JavaScript를 처음부터 제대로 설계했으면 이랬을 것 같음. 모듈 시스템도 Lua는 처음부터 있었던 것 같은데 내가 확실히는 모르겠음.
1부터 시작하는 인덱싱은 계산할 때마다 +1, -1 해야 해서 진짜 짜증남.
Luarocks 소스가 큰 Teal 코드베이스 예시임. 타입 힌트는 동적 언어에 다 좋은 것 같음.