Perl과 Raku의 계보 — 하나의 언어가 둘이 되기까지의 40년

1987년 Perl 1.0부터, 2000년에 시작된 Perl 6, 15년이 걸린 최초의 안정판, 그리고 2019년 Raku로의 개명까지. 「Perl 6은 어떻게 되었나」「Raku는 Perl인가」라는 물음에 설계 판단과 일차 자료로 답하는 전 12화. 이름이 기술 부채가 되는 조건, 사양을 테스트 스위트로 정의한다는 결단, 범용 VM이라는 빗나간 내기 — 언어 처리계를 만드는 사람에게는 교재이기도 하다.

perlrakulanguage-designhistoryprogramming-languagesyapc

먼저 답부터 적어 둔다

이 연재는 12화지만, 결론은 세 줄로 끝난다.

  • Raku는 Perl 6의 새 이름이다. 2019년 10월에 개명했다. 같은 언어다.
  • Perl 6은 Perl 5의 다음 버전이 아니었다. 호환되지 않는 별개의 언어로 설계되었고, 그렇게 자랐다.
  • Perl(5 계열)은 지금도 현역이다. 2026년 7월에 Perl 5.44가 나왔다. 끝나지 않았다.

여기까지가 답이다. 이 연재가 다루는 것은 그 세 줄이 어떻게 그렇게 되었는가이다.

왜 지금 이것을 쓰는가

2026년 11월, 도쿄 빅사이트에서 YAPC::Tokyo 2026이 열린다. 테마는 “Patchwork”. 천 조각을 이어 붙이듯, 서로 다른 시스템을 잇는 언어로서의 Perl이라는 함의가 있다.

Perl 6과 Raku의 이야기는 이 테마와 정면으로 맞물린다. 한 장의 천으로 되돌리려다 두 장의 다른 천이 된 이야기이기 때문이다. 그리고 그 결과는 실패도 성공도 아닌, 두 장 모두 지금도 쓰이고 있다는 형태로 안착했다.

또 하나, 시기의 이유가 있다. 2026년 9월, Rakudo는 6년에 걸쳐 진행해 온 컴파일러 기반의 쇄신(RakuAST)을 기본값으로 전환한다. 20년도 더 전에 시작된 언어가, 바로 지금 토대를 갈아 끼우고 있다. 이 연재의 마지막 화는 그 현장을 다룬다.

이 연재가 답하려는 물음

Perl 6 / Raku에 대해 많은 사람이 가진 인상은 대체로 이렇다.

「Perl 6은 결국 안 나왔잖아」 「나오긴 했는데 아무도 안 쓰는 거」 「이름을 바꾼 건 실패해서겠지」

어느 것도 사실이 아니다. 하지만 왜 그렇게 여겨지는지에는 이유가 있다. 그 이유야말로 이 연재의 주제다.

구체적으로는 다음 다섯 가지 물음에 답해 간다.

  1. 왜 호환성을 끊었는가. Perl 5의 개량판으로는 안 되었는가
  2. 왜 15년이 걸렸는가. 태만이나 혼란이 아니라면, 무엇이 그렇게 어려웠는가
  3. 왜 이름을 바꿨는가. 19년 쓴 이름을 바꾼다는 것은 구체적으로 무엇을 하는 일인가
  4. Perl 5는 무엇을 하고 있었는가. 기다리고 있었나, 아니면 다른 일을 하고 있었나
  5. 지금 어떻게 되어 있는가. 2026년 시점의 정확한 현재 위치는 어디인가

전 12화

제1부 — Perl이라는 언어 (1~2화)

제목 내용
1 Perl은 왜 태어났는가 1987년 12월 18일. awk와 C 사이의 틈. 언어학자가 만든 언어
2 Perl 5와 CPAN이 만든 것 1994년의 전면 재작성. 패키지 저장소라는 발명

제2부 — Perl 6의 15년 (3~8화)

제목 내용
3 2000년, Perl 6이 시작되었다 깨진 머그컵. 언어 설계를 공모했더니 361건이 모였다
4 무엇을 바꾸려 했는가 시길 불변성, grammar, 다중 디스패치, 유리수. 어느 것이나 언어 하나 분량의 일이었다
5 구현이 없던 4년 반과, Pugs의 1년 Haskell로 쓰인 Perl 6이 사양과 구현의 관계를 다시 만들었다
6 범용 VM이라는 내기 Parrot은 왜 쓰이지 않았는가. MoarVM은 무엇을 버리고 완성했는가
7 사양을 테스트 스위트로 정의한다 산문 사양을 버린 결단. 「사양이란 roast를 통과하는 것이다」
8 Christmas 2015년 12월 25일. 발표로부터 15년 후의 최초 안정판

제3부 — 개명 (9~10화)

제목 내용
9 이름이 기술 부채가 될 때 삼자가 모두 손해였다. 이름이 담은 「검증되지 않은 주장」의 이야기
10 Path to Raku 19년 쓴 이름을 바꿀 때 무엇을 세는가. 이행 계획서를 읽는다

제4부 — 언어로서의 Raku, 그리고 2026년 (11~12화)

제목 내용
11 정규표현식을 언어 기능으로 승격시킨다 grammar. Raku에서 가장 「다른 언어에 없는 것」
12 2026년의 Raku RakuAST, 6.e, 그리고 「작지만 계속되고 있다」를 어떻게 쓸 것인가

이 연재의 집필 규칙

다루는 것이 남의 40년이므로, 쓰는 방식의 규칙을 먼저 정해 둔다.

1. 「현재」라고 쓰지 않는다. 「2026년 9월 시점에」라고 쓴다. 이 연재는 낡아질 것을 전제로 쓴다.

2. 「흥하고 있다」고도 「끝났다」고도 쓰지 않는다. 둘 다 평가이지 사실이 아니다. 사실은 「월간 릴리스가 196회 계속되고 있다」이고, 「2026년에 Rakudo 이외의 구현이 두 개 나타났다」이고, 「전용 IDE는 개발이 종료되었다」이다. 나란히 쓴다.

3. 개명을 「성공」「실패」로 단정하지 않는다. 달성된 것과 달성되지 않은 것을 둘 다 쓴다. 평가는 읽는 사람이 하면 된다.

4. 일화는 일화로 쓴다. 이 연재에는 유명한 머그컵 이야기가 나오지만, 세부는 자료에 따라 다르다. 「~라고 전해진다」로 쓴다.

5. 일차 자료에 닿는다. 개명에 관해서는 GitHub의 이슈와 이행 계획서가 공개되어 있다. 판에 관해서는 각 릴리스의 공지가 있다. 재인용으로 쓰지 않는다.

상정하는 독자

  • Perl을 써 본 적이 있고, Perl 6의 현재 위치를 모르는 사람 — 아마 가장 큰 층
  • 언어 처리계 자체에 관심이 있는 사람 — 5~7화와 11화가 그쪽을 향한다
  • 스스로 언어를 만들고 있는 사람 — Perl 6은 설계 판단이 전부 공개된 드문 사례다

세 번째에 대해 하나 적어 두면, 나 자신이 자작 언어를 만들고 있다. 여러 백엔드를 가지고, 인터프리터를 오라클로 삼아 다른 백엔드를 묶는 구조로 돌리고 있다. 이 연재에서 다루는 판단 중 적어도 셋은, 내가 실제로 마주한 것과 같았다. 6화(백엔드는 몇 개까지 유지할 수 있는가), 7화(사양을 테스트로 정의한다), 11화(파서를 어떻게 쓰게 할 것인가)가 그에 해당한다.

남의 역사를 이야기하는 연재지만, 완전한 남의 일로는 쓰지 않는다.


이 연재는 2026년 9월부터 11월에 걸쳐 갱신합니다.

← Back to Perl과 Raku의 계보