Rust의 장점 + Go의 런타임 = Lisette, 새로운 언어의 등장!

by DD
1개월 전
조회수 42

Lisette는 Rust의 특징(대수적 자료형, 패턴 매칭)을 차용하여 Go로 컴파일되는 언어임

Go 생태계와의 상호 운용성을 목표로 하며, Go 코드와의 통합을 지원함

Rust와 유사한 문법에도 불구하고, Go와의 차이점과 학습 곡선에 대한 우려가 제기됨

기존 Go 코드베이스와의 통합 및 생산 환경에서의 안정성에 대한 질문이 이어짐

Lisette의 기술적 특징과 Rust와의 비교

Lisette는 대수적 자료형(Algebraic Data Types), 패턴 매칭(Pattern Matching), 그리고 Hindley-Milner 타입 시스템(Hindley-Milner Type System)을 지원하여 Rust의 특징을 상당 부분 차용했다. 하지만, `nil`을 지원하지 않고, Go의 `defer`를 사용해야 하는 점은 Rust와 차별화되는 부분이다. Rust의 강력한 기능을 Go 생태계에서 활용하려는 시도로 볼 수 있다.

Go 생태계와의 통합 및 상호 운용성

Lisette는 Go 코드로 컴파일되므로, Go의 기존 라이브러리와 쉽게 연동할 수 있다는 장점이 있다. 하지만, 타입 시스템(Type System)의 차이로 인해 Go 코드에서 Lisette 코드를 호출할 때 `Option` 타입을 사용해야 하는 불편함이 존재한다. 상호 운용성(Interoperability)을 위한 추가적인 작업이 필요할 수 있으며, 혼합된 코드베이스에서의 에러 처리(Error Handling)가 복잡해질 수 있다는 지적도 있다.

채택에 대한 커뮤니티의 우려와 질문

커뮤니티에서는 Lisette가 Rust와 유사한 문법을 사용하면서도, Rust와 완전히 동일하지 않다는 점에 주목한다. Rust 경험자(Rust Experienced)는 새로운 언어를 학습해야 하는 부담을 느낄 수 있으며, Rust를 처음 접하는 개발자는 Rust의 지식을 1:1로 활용하기 어려울 수 있다. 또한, 기존 Go 코드베이스와의 통합, 생산 환경에서의 안정성, 그리고 LSP 지원(LSP Support)에 대한 질문이 제기되었다.

Lisette의 미래와 언어 디자인 방향성

Lisette는 Go 런타임을 활용하면서 Rust의 장점을 가져오려는 시도로, 언어 디자인과 실용성 사이의 균형을 모색한다. Go 런타임(Go Runtime)의 장점을 활용하면서도, Rust의 안전성과 표현력을 원하는 개발자들에게 매력적인 선택지가 될 수 있다. 하지만, Rust와의 차별성(Differentiation), 기존 Go 코드베이스와의 통합, 그리고 생태계 성숙도(Ecosystem Maturity)는 Lisette가 해결해야 할 과제로 남아있다.

Lisette a little language inspired by Rust that compiles to Go