스크립트 언어 Lua(루아) 커뮤니티가 20년 넘게 지원 종료(EOL)된 구버전과의 호환성을 유지하려는 관행 때문에 심각한 유지보수 부담을 겪고 있습니다. Lua 라이브러리 개발자들이 최신 버전은 물론, 이미 지원이 중단된 Lua 5.1까지 광범위하게 테스트해야 하는 상황에 놓여 있으며, 이는 오픈소스 생태계의 지속 가능성에 대한 중요한 문제를 제기합니다.
이러한 문제는 약 15년 전 Lua와 고성능 JIT 컴파일러인 LuaJIT(루아JIT)이 Lua 5.2를 기점으로 분리되면서 시작되었습니다. 당시 두 진영을 모두 지원하기 위해 Lua 5.1이 사실상의 공통 기준으로 자리 잡았고, 이후 새로운 버전이 계속 출시되었음에도 이 5.1 기준점에서 벗어나지 못했습니다. 현재 많은 라이브러리가 Lua 5.1부터 5.5, LuaJIT 2.1 및 3.0, 심지어 OpenResty(오픈레스티) 변형까지 테스트해야 하는 실정입니다. 심지어 LuaJIT 개발자인 마이크 팔(Mike Pall)은 구버전 태그를 삭제하는 등 강경한 조치를 취하기도 했으나, 여전히 10년 전 버그가 다시 보고되거나 2012년 버전의 버그 보고가 접수되는 등 레거시 문제가 끊이지 않고 있습니다.
이러한 장기 호환성 유지는 라이브러리 유지보수자들에게 엄청난 부담으로 작용하며, 새로운 기능 개발과 보안 업데이트에 집중하기 어렵게 만듭니다. 특정 Lua 버전을 내장하여 플러그인 생태계를 구축한 애플리케이션의 경우, 해당 생태계가 자체적으로 장기 호환성을 관리해야 하며, 일반적인 인터프리터 및 라이브러리 생태계는 최신 PUC-Rio Lua와 LuaJIT 중심으로 점진적으로 전환해야 한다는 목소리가 커지고 있습니다. Teal(틸)과 같은 언어는 TypeScript(타입스크립트)가 JavaScript(자바스크립트)에 타입을 더하듯 Lua에 타입을 제공하며, 하나의 코드로 Lua 5.1부터 5.5까지 다양한 버전의 코드를 생성할 수 있게 하여 이러한 버전 간의 간극을 메우는 대안으로 떠오르고 있습니다. 이는 Lua 개발자들이 더 이상 5.1 호환성에 얽매이지 않고 최신 기술을 활용할 수 있도록 돕는 중요한 전환점이 될 수 있습니다.