Teal – A statically-typed dialect of Lua
Teal - 정적 타입을 더한 Lua 방언
Teal은 배열, 맵, 레코드, 인터페이스, 유니온 타입, 제네릭을 타입 주석으로 표현하는 Lua 방언입니다. 컴파일러 tl이 .tl 파일을 .lua 파일로 변환하며, Lua의 간결함과 이식성, 임베딩 특성을 유지하는 데 초점을 둡니다.
- 주제
에디터 노트
Teal의 가장 분명한 장점은 Lua 코드를 다른 런타임으로 옮기지 않고 타입 주석과 컴파일 단계 검사를 더한다는 점입니다. 다만 소개된 자료는 타입 체계의 세부 동작이나 검사 범위, Lua 코드와의 호환 조건을 설명하지 않아 TypeScript와 기능 수준을 직접 견주기는 어렵습니다. 댓글에서는 Luau가 별도 언어와 런타임이라는 점, Terra도 Teal과 같은 종류의 프로젝트가 아니라는 점을 짚습니다. Luarocks에 실제 Teal 코드베이스가 있다는 사례는 활용 가능성을 보여주지만, Lua가 비자명한 독립 앱에 적합한지를 두고는 의견이 갈립니다. 따라서 Teal의 가치는 Lua를 전면 대체하는 데 있기보다 Lua를 쓰는 프로젝트에 타입 검사를 더하는 선택지로 보는 편이 정확합니다.
AI 요약
Teal은 Lua에 타입 주석을 추가한 정적 타입 방언입니다. 함수 인자와 반환값에 타입을 지정하고 배열, 맵, 레코드뿐 아니라 인터페이스, 유니온 타입, 제네릭도 표현합니다. 컴파일러 tl은 Teal 소스 파일을 Lua 파일로 변환합니다.
설치와 도구
LuaRocks에서 luarocks install tl 명령으로 설치하거나 Linux와 Windows용 사전 빌드 바이너리를 사용할 수 있습니다. 여러 파일로 구성된 프로젝트에는 빌드 도구 Cyan을 권장합니다. Visual Studio Code 확장과 NeoVim용 언어 서버도 제공합니다. 브라우저에서 Teal 코드를 시험하는 Playground와 온라인 문서도 운영합니다.
설계와 활용
프로젝트는 TypeScript와 JavaScript의 관계처럼 Lua에 타입 체계를 더하되, Lua의 간결함과 이식성, 임베딩 특성을 따르는 것을 목표로 합니다. Teal 자체도 Teal로 작성하며, MIT 라이선스로 배포합니다. 개발은 GitHub에서 진행합니다.
Hacker News 반응
- @Kinrany — Luau와 비교한 자료가 있는지 궁금합니다.
- @summarity — Teal은 트랜스파일러입니다. Luau는 언어와 런타임이 모두 다른 별개의 프로젝트입니다. Teal은 TypeScript 같은 쪽이고 Fennel은 Lisp, MoonScript는 Ruby 같은 쪽인 Lua 문법 변형 가운데 하나입니다.
- @LoganDark — 둘 다 타입 시스템 등이 있습니다. 비교는 컴파일이나 트랜스파일 방식에만 국한되지 않으며 개발자 경험도 중요합니다.
- @ufo — 대규모 Teal 코드베이스의 좋은 사례로 Lua 패키지 관리자 Luarocks가 있습니다.
- @giancarlostoro — Luarocks는 알고 있었지만 Teal은 몰랐습니다. 처음에는 Terra와 비교할까 했는데 Lua용 TypeScript에 더 가깝네요. 동적 언어에 타입 힌트를 더하는 일은 유용해 보입니다.
- @corysama — Lua가 모든 면에서 가벼운 것은 주요 특징입니다. C나 C++로 작성한 프로그램을 고수준에서 제어하기 좋고, Lua 표준 라이브러리에서 파일 입출력을 빼도 나머지는 계속 작동합니다. Lua만으로 비자명한 프로그램을 만드는 일은 잘 맞지 않습니다.
- @capr — LuaJIT로 전체 스택과 앱을 작성해 보수를 받았고, 여러 해 동안 문제없이 운영 중입니다. 이런 말을 듣는 것도 지겹습니다.
- @Weryj — 쏟아지는 멋지고 주목할 만한 도구를 어떻게 다 따라가야 할지 모르겠습니다.
- @Boxxed — Teal은 적어도 6~7년 된 프로젝트입니다.
- @Joker_vD — 정적 타입 Lua 방언은 대체 몇 개나 있나요? Terra와 Sol을 알고 있는데 다른 것도 있나요?
- @HexDecOctBin — Terra는 Lua VM 바이트코드를 내보내는 정적 타입 프런트엔드가 아니라, 메타프로그래밍과 스크립팅에 Lua를 쓰는 네이티브 언어입니다. 제가 아는 현존하는 정적 타입 프런트엔드로는 Teal, Luon, Ravi, TypeScriptToLua, CSharp.lua가 있습니다.
원문: Teal / 번역·요약: Trawling