TECH 으로 돌아가기
TECH HACKER NEWS 오늘 6분 읽기 25 READS

멈춰 있던 LuaJIT가 3.0으로? 문법 확장 제안이 던진 진짜 고민

멈춰 있던 LuaJIT가 3.0으로? 문법 확장 제안이 던진 진짜 고민

무슨 일이냐면요

Lua라는 프로그래밍 언어 들어보셨나요? 게임 쪽에서 특히 많이 쓰여요. World of Warcraft 애드온, Roblox, 수많은 게임 엔진의 스크립트 언어가 Lua거든요. 가볍고, 빠르고, 다른 프로그램 안에 끼워 넣기 쉬워서 사랑받아요. 그런데 이 Lua를 '미친 듯이 빠르게' 돌려주는 게 바로 LuaJIT이에요. 이번에 그 LuaJIT의 다음 메이저 버전인 3.0을 향한 문법 확장 제안이 공개 논의 테이블에 올라왔어요.

LuaJIT 얘기를 하려면 배경을 좀 알아야 하는데요. LuaJIT은 Mike Pall이라는 전설적인 개발자가 거의 혼자 만든 프로젝트예요. JIT(Just-In-Time) 컴파일이라는 기술 덕분에, 스크립트 언어인데도 C에 근접한 속도를 내거든요. JIT가 뭐냐면, 프로그램을 실행하는 도중에 자주 쓰이는 코드를 그때그때 기계어로 번역해서 캐싱해 두는 기술이에요. 미리 전부 번역(컴파일)하지도 않고, 매번 한 줄씩 해석(인터프리터)하지도 않는 중간 방식이죠. 그래서 "느린 스크립트 언어"라는 통념을 깨버린 물건이에요.

그런데 왜 지금 문법 확장이 화두일까요

LuaJIT엔 오래된 고민거리가 하나 있었어요. 본래 Lua 언어 자체는 계속 발전해서 5.4까지 나왔는데, LuaJIT은 오랫동안 Lua 5.1 문법에 머물러 있었거든요. 그동안 정식 Lua에는 정수 타입, 비트 연산자, goto 같은 기능들이 추가됐는데, LuaJIT 사용자들은 그 혜택을 온전히 누리지 못했어요. 그래서 "LuaJIT만의 방향으로 문법을 손보자"는 논의가 의미가 큰 거예요. 한동안 개발이 잠잠했던 프로젝트가 다시 큰 그림을 그린다는 신호이기도 하고요.

핵심 쟁점: 속도와 호환성 사이의 줄다리기

여기서 진짜 재미있는 긴장이 생겨요. 문법을 확장하면 LuaJIT으로 짠 코드가 표준 Lua에서는 안 돌아갈 수 있거든요. 이게 왜 문제냐면, Lua의 가장 큰 매력이 '어디에나 끼워 넣을 수 있는 호환성'인데, LuaJIT 전용 문법이 늘어날수록 생태계가 두 갈래로 갈라질 위험이 있어요. "이 라이브러리는 LuaJIT 전용이라 표준 Lua에선 못 써요" 같은 일이 생기는 거죠. 그래서 어떤 문법을 받아들이고 어떤 건 거절할지가 아주 신중하게 다뤄지는 거예요.

제안에서 다뤄지는 방향들은 대체로 개발자가 평소 불편해하던 지점을 건드려요. 정수와 실수를 다루는 방식을 더 명확하게 한다든지, 자주 쓰는 패턴을 더 짧고 안전하게 표현할 수 있게 한다든지 하는 식이에요. 핵심은 'JIT 컴파일러가 더 빠른 기계어를 뽑아낼 수 있는 방향'과 '사람이 쓰기 편한 방향', 이 둘을 동시에 만족시키려는 거예요. 둘은 의외로 충돌할 때가 많거든요. 사람에게 편한 문법이 컴파일러에겐 최적화하기 까다로운 경우가 흔하니까요.

업계 맥락

비슷한 사례로 Roblox가 만든 Luau가 있어요. Lua를 포크해서 타입 시스템과 여러 안전 장치를 더한 변종인데, 'Lua를 현대적으로 확장한다'는 면에서 LuaJIT 3.0과 결이 비슷해요. 다만 Luau는 회사가 자기 플랫폼을 위해 끌고 가는 반면, LuaJIT은 오픈소스 커뮤니티가 호환성을 지키며 풀어야 한다는 점이 달라요. 한 명의 핵심 메인테이너에게 크게 의존하던 프로젝트가 공개 논의로 방향을 잡아가는 모습 자체가, 오픈소스 지속가능성 측면에서도 눈여겨볼 만해요.

한국 개발자에게

Lua/LuaJIT은 생각보다 우리 가까이 있어요. Redis의 스크립팅, Nginx 위에서 도는 OpenResty, 각종 게임 서버가 대표적이에요. 특히 OpenResty로 고성능 API 게이트웨이나 트래픽 처리 로직을 짜는 곳이라면 LuaJIT의 향방이 직접적인 영향을 줘요. 당장 코드를 바꿀 일은 없더라도, '내가 의존하는 런타임이 어떻게 진화하는지' 흐름을 알아두면 기술 선택의 안목이 생겨요.

정리하면

한 줄로 요약하면 "빨라지자니 갈라지고, 호환되자니 낡는다 — 그 사이에서 LuaJIT이 길을 찾는 중"이에요. 여러분은 언어가 호환성을 깨면서라도 새 문법을 받아들이는 게 맞다고 보세요, 아니면 호환성이 최우선이라고 보세요?


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://github.com/LuaJIT/LuaJIT/issues/1475
SHARE
처리 중...