LuaJIT 3.0 제안된 구문 확장

LuaJIT 3.0 제안된 구문 확장

LuaJIT 3.0은 현대적인 구문 확장을 제안합니다

LuaJIT 3.0은 다른 현대적인 언어에서 발견되는 관습적인 프로그래밍 패턴과 언어를 더 밀접하게 일치시키기 위해 설계된 일련의 구문 확장을 제안하고 있습니다. 이러한 변경 사항은 다른 언어에서 전환하는 개발자들의 마찰을 줄이고 일반적인 작업을 더 간결하게 표현할 수 있는 방법을 제공하는 것을 목표로 합니다.

제안된 구문 변경 사항

C-Style 논리 및 삼항 연산자

LuaJIT 3.0은 클래식 Lua 연산자에 대해 관습적인 구문을 도입할 것을 제안합니다. 여기에는 단어 기반의 andor&&||와 같은 기호로 대체하거나 보충하는 것이 포함됩니다. 또한, 표준 Lua 조건부 표현식에 대한 더 간결한 대안을 제공하기 위해 삼항 연산자(? :)가 고려되고 있습니다.

복합 대입 연산자

제안에는 복합 대입 연산자(예: +=, -=, *=, /=)의 추가가 포함됩니다. 이러한 연산자는 더 간결한 변수 업데이트를 가능하게 하며, 이는 Playdate 휴대용 콘솔에서 사용되는 Lua 버전과 같은 다른 Lua 유사 구현체에서 이미 존재하는 기능입니다.

비트 연산자 정렬

Lua 5.3이 2015년에 비트 연산자를 도입했지만, LuaJIT은 표준 Lua의 진화에 발맞추기 위해 유사한 기능을 통합하는 방향으로 움직이고 있습니다. 다만, JIT 컴파일된 구현체로서 자체적인 궤적을 유지합니다.

커뮤니티 관점 및 기술적 논쟁

제안된 변경 사항은 언어의 정체성과 개발자 편의성 사이의 균형에 관한 개발자 커뮤니티 내의 논쟁을 불러일으켰습니다.

언어 정체성에 대한 우려

일부 개발자들은 C-style 구문을 도입하는 것이 피상적이며 Lua의 독특한 정체성을 희석할 수 있다고 주장합니다. 비판론자들은 동일한 작업을 수행하는 여러 가지 방법을 제공하는 것(TIMTOWTDI - "There Is More Than One Way To Do It")이 근본적인 언어 문제를 해결하지 않고 복잡성만 증가시킨다고 제안합니다.

"and&&로 바꾸는 것이 실제로 무엇을을 달성하나요? ... 그것은 실제로 어떤 문제를 해결하는 것이 아니라, 단지 Lua가 더 이상 Lua처럼 보이지 않게 만들 뿐입니다."

삼항 연산자의 대안

일부 기여자들은 Luau(Lua의 파생형)에서 볼 수 있는 if x then y else z 표현식 스타일을 선호합니다. 지지자들은 이 방식이 x ? y : z 구문과 비교했을 때, 특히 elseif가 필요한 경우 읽기 쉽고 중첩하기 더 쉽다고 주장합니다. \n### "Lua-alikes"의 생태계 관찰자들은 Lua의 주요 버전 간 엄격한 호환성이 부족하다는 점이 다양한 "lua-alikes" 생태계를 조성했다고 언급합니다. 언어가 구현하기 간단하기 때문에, 다양한 프로젝트들이 통일된 라이브러리 생태계보다 특정 사용 사례를 우선시하여 자신들만의 구문 확장을 가진 특화된 Lua 버전들을 만들어냈습니다.

구현체에 미치는 영향

이러한 구문 변경 사항은 언어의 대안적 구현체를 만드는 사람들에게 새로운 과제를 제기합니다. 예를 들어, Lua 5.1부터 5.5까지 여러 버전을 지원하는 것을 목표로 하는 Rust 기반 Lua 구현체 개발자들은 LuaJIT의 상이한 구문 확장이 버전 간 호환성을 달성하는 것을 더 어렵게 만든다는 것을 발견합니다.

Sources