Raku 2025 리뷰

발행: (2026년 1월 1일 오후 10:57 GMT+9)
16 min read
원문: Dev.to

Source: Dev.to

번역할 텍스트를 제공해 주시면, 요청하신 대로 한국어로 번역해 드리겠습니다.

기술 요약

  • Rakudo 커밋: 약 1 650개 (MoarVM, NQP, Rakudo, docs) – 2024년에 비해 약 20 % 감소.

  • 모든 저장소가 이제 기본 브랜치로 **main**을 사용합니다 (master 대신).

  • RakuAST 작업: Rakudo 커밋의 약 58 %가 RakuAST 작업에 할당되었습니다 (2024년의 33 %에서 증가).

    • 95 %는 Stefan Seifert가 수행했습니다 (TPRF‑지원).

    • 결과: Raku로 작성된 Rakudo 부분을 이제 RakuAST(‘부트스트랩’)로 빌드할 수 있습니다.
  • 남은 작업: 몇 가지 이슈가 아직 해결되지 않아 RakuAST‑기반 Rakudo를 다음 언어 수준 릴리스의 기본으로 만들지 못하고 있습니다.

핵심 개발 하이라이트

영역무슨 일이 있었나요?
MoarVM Unicode 도구Geoffrey Broadwell가 주요 내부 업데이트를 수행했습니다. Shimmerfairy가 MoarVM Unicode 지원을 15.0 → 17.0으로 업그레이드했으며, 새로운 이모지(예: 🫆 FINGERPRINT, 🫟 SPLATTER, 🪉 HARP)를 추가했습니다.
스크립트 러너Patrick Böker가 CLI‑스크립트 실행 속도를 높이고 Windows‑네이티브 스크립트 실행을 가능하게 하는 새로운 러너를 추가했습니다.
지속적 통합CI가 이제 훨씬 적은 오탐지를 발생시켜 개발자들의 부담을 줄였습니다.
재현 가능한 빌드Timo Paulssen 등 덕분에 Rakudo의 빌드 프로세스가 다시 재현 가능해졌으며, 이는 패키저들에게 큰 이점입니다.
REPL 개선 사항- 지속적인 문법 변경.
- 이제 다중 라인 주석이 가능합니다.
- 일부 변경 사항은 REPL 모듈에서 백포트되었습니다(링크된 블로그 게시물 참조).
실험적 기능 테스트:pack, :cached, :macros 등에 대한 테스트가 언어 정의에 포함되지 않으므로 roast 스위트에서 Rakudo 저장소로 이동되었습니다.
JVM 백엔드지난 1년간 활동이 거의 없었습니다. JVM 백엔드는 이제 릴리스에서 언급되지 않으며, 생태계 파손을 방지한다는 보장은 없습니다. 행동 촉구: JVM 백엔드에 관심이 있다면 참여해 주세요!

기본 언어 레벨에서 가장 눈에 띄는 새로운 기능들

1. 가변 인자(varargs) C 함수

Patrick Böker는 MoarVM과 Rakudo에 va_arg 규약을 통해 가변 개수의 인자를 받는 C 함수를 호출할 수 있는 인프라스트럭처를 추가했습니다.

use NativeCall;

sub foo(str, **@ --> int32) is native is symbol('printf') {*}

foo "The answer: %d\n", 42;   # → The answer: 42

printf는 가변 인자 함수의 고전적인 예입니다.

2. 가상 터미널 지원

새로운 가상 터미널 구현(역시 Patrick Böker가 작성) 덕분에 터미널 애플리케이션을 작성하는 것이 훨씬 간단해졌습니다.
Advent 포스트에서는 어떻게 그리고 하는지를 설명하고 Anolis 터미널‑에뮬레이터 모듈을 소개합니다.
이 기능은 아직 다소 초기 단계이며, 내년에는 다듬기가 진행될 예정입니다(예: 완전한 기능을 갖춘 터미널 기반 디버거).

3. 명명된 인자를 사용한 Hash.new / Map.new

이전에는 Hash.newMap.new에 명명된 인자를 전달하면 예상치 못한 인자가 무시되어 빈 컨테이너가 조용히 생성되었습니다.
이제 명명된 인자는 유일한 인자일 경우 키/값 쌍으로 해석됩니다.

dd Hash.new(a => 42, b => 666);
# {:a(42), :b(666)}

dd Map.new(a => 42, b => 666);
# Map.new((:a(42), :b(666)))

4. exits-ok 테스트 서브루틴

Test 모듈에 이제 exits-ok 서브루틴이 포함되어, 코드 조각의 종료 동작을 쉽게 검증할 수 있습니다.

use Test;

exits-ok { exit 1 }, 1;
# ok 1 - Was the exit code 1?

exits-ok { exit }, 1;
# not ok 2 - Was the exit code 1?

exits-ok { 42 }, 0;
# not ok 3 - Code did not exit, no exit value to check

Note: 이 포스트의 Advent 버전 이후, 이름이 exit-ok에서 exits-ok 로 변경되었습니다. 이는 dies-oklives-ok에 맞추기 위한 것입니다.

미래 언어 레벨에 대한 가장 눈에 띄는 추가 사항

순서가 있는 해시

이제 순서가 있는 해시(키가 삽입 순서를 유지함)의 구현이 제공됩니다.

use v6.e.PREVIEW;

my %h is Hash::Ordered = "a".."e" Z=> 1..5;
say %h.keys;    # [a b c d e]
say %h.values;  # (1 2 3 4 5)

구문 설탕은 나중에 추가될 수 있습니다; 위 구문은 오늘도 작동합니다.

RakuAST 전용 변경 사항 (RAKUDO_RAKUAST=1 로 활성화)

환경 변수 RAKUDO_RAKUAST=1이 설정되면, 다음 동작이 다음 언어 레벨이 배포될 때 기본적으로 활성화됩니다.

변수목적
RAKU_LANGUAGE_VERSION모든 Raku 소스 컴파일에 사용되는 기본 언어 레벨을 나타냅니다. 코드 내 명시적 버전 선언에는 영향을 주지 않습니다.

예시

$ RAKUDO_RAKUAST=1 RAKU_LANGUAGE_VERSION=6.e.PREVIEW raku -e 'say nano'
1766430145418821670

$ RAKUDO_RAKUAST=1 RAKU_LANGUAGE_VERSION=6.e.PREVIEW raku -e 'use v6.d; say nano'
===SORRY!=== Error while compiling: ... (language version mismatch)

Closing thoughts

The Raku ecosystem continues to evolve thanks to the hard work of many contributors.
From the RakuAST bootstrap to Unicode 17 support, from varargs to ordered hashes, the language is steadily gaining power and polish.

If you’re interested in any of the areas above—especially the JVM backend or the upcoming terminal debugger—please consider contributing!

Happy coding, and see you in the next Advent post.

컴파일 시점 변수

$ raku -e 'say $?SOURCE'
say $?SOURCE
  • ?$SOURCE – 현재 컴파일 단위의 소스를 포함합니다.
    바이트코드에서 이를 제외하려면 환경 변수 RAKUDO_OMIT_SOURCE를 설정하십시오.

  • ?$CHECKSUM – 소스 코드의 SHA‑1 다이제스트입니다.

$ RAKUDO_RAKUAST=1 raku -e 'say $?SOURCE'
say $?SOURCE

$ RAKUDO_RAKUAST=1 raku -e 'say $?CHECKSUM'
81892BA38B9BD6930380BD81DB948E4D7A9C14E7

$ RAKUDO_RAKUAST=1 RAKUDO_OMIT_SOURCE=1 raku -e 'say $?SOURCE'
Nil

이러한 추가 기능은 MoarVM 런타임 디버거와 검증이 필요한 패키지 제작자를 위해 설계되었습니다.

Source:

현지화

대부분의 현지화 작업은 Rakudo 코어에서 별도의 Raku‑L10N 프로젝트로 옮겨졌으며, 이 프로젝트는 여러 새로운 기여자를 끌어들였습니다. 진행 상황 보고서는 habere‑et‑dipertire의 블로그 글 “Hallo, Wêreld!” 에서 확인할 수 있습니다.

각 현지화는 “재미있는” 명령줄 스크립트(언어가 좋아하는 음식 이름) 공식 스크립트를 함께 제공합니다.

언어재미 스크립트공식 스크립트예시
네덜란드어dutkukaasdutku -e 'zeg "foo"'foo
프랑스어frekubriefreku -e 'dis "foo"'foo

추가 모듈 (알파벳 순)

  • App::Rak – 스테로이드를 얹은 21세기 grep/find/ack/ag/rg.
  • Crocro 명령줄 및 웹 도구.
  • PDF – PDF 데이터를 읽고, 조작하고, 쓰기 위한 기본 클래스.
  • Red – Raku ORM.
  • REPL – 보다 쉽게 설정 가능한 REPL. REPL Avalanche도 참고.
  • Rakuast::Rakudoc::Renderer – RakuDoc v2를 텍스트, HTML, HTML‑Extra, Markdown으로 렌더링.
  • Slang::Nogil – 시그널이 없는 스칼라 변수를 허용. Allowing for fewer dollars도 참고.
  • Terminal::LineEditor – 일반화된 터미널 라인 편집기.
  • zef – Raku 모듈 관리 도구.

RakuDoc

  • RakuDoc v2.0은 2024년 12월에 완료되었으며; 2025년은 이를 구현하는 데 사용되었습니다. 호환 렌더러는 Rakuast::RakuDoc::Render 배포판을 통해 제공됩니다.
  • 그 후 Elucid8이라는 문서‑관리 시스템(개발 프리뷰) 작업이 시작되었습니다.
  • 9월부터 Damian Conway와 Richard Hainsworth는 열거 시스템(원래 RakuDoc v3.0을 위해 구상됨)을 설계했으며, 이를 통해 블록—단락, 헤딩, 코드 스니펫, 수식 등—을 num을 앞에 붙여 열거할 수 있습니다.
  • RakuDoc 사양은 현재 v2.20.2에 있습니다. 새로운 열거 사양은 아직 main에 병합되지 않았으며, Rakuast::RakuDoc::Render가 이를 구현하도록 작업이 진행 중입니다.
  • RakuDoc은 진지한 문서 마크업 언어이자 Markdown에 대한 직접적인 경쟁자로서 가능성을 보여주고 있습니다.

생태계 통계 (2025)

  • 508개의 Raku 모듈이 2025년에 업데이트되었거나 처음 릴리스되었습니다 (↑ 38 % from 2024’s 367).
  • 2 435개의 서로 다른 모듈을 zef를 통해 이름만으로 설치할 수 있습니다.
  • 13 843개의 다양한 모듈 버전이 Raku Ecosystem Archive에서 제공됩니다 (↑ 12 181 in 2024).
  • 이는 2025년에 ≈ 4.5 module updates per day에 해당합니다 (up from 3.9 /day in 2024).

눈에 띈 모듈 (알파벳 순)

ModuleDescription“See also”
AI::Gator도구 지향 REPL을 갖춘 AI 일반 어시스턴트.
Air올바른 방법으로 웹사이트를 구축합니다.We’re Walking On The Air
Anolis터미널 에뮬레이터.A Terminal’s Tale
ASTQuery표현력 있는 구문으로 Raku의 AST(RakuAST)를 질의하고 조작합니다.From ASTs to RakuAST to ASTQuery
CromponentCro 템플릿으로 웹 컴포넌트를 생성합니다.Cromponent new features
DataStardata‑star 하이퍼미디어 프레임워크용 Raku SDK.Raku To The Stars
DrakuRaku용 문서 브라우저.
Elucid8::BuildRakuDoc 소스를 여러 언어로 렌더링하여 웹사이트에 표시합니다.Create a minimal site with Elucid8
Gnome::Gtk4GNOME UI 툴킷 v4에 대한 바인딩.Tools for Gnome::Gtk4
LLM::Graph여러 LLM 생성 단계를 효율적으로 스케줄링하고 결합합니다.Robust code generation combining grammars and LLMs
Math::NumberTheoryRaku용 정수론 함수.Numerically 2026 Is Unremarkable Yet Happy
SBOM::RakuRaku 전용 SBOM 기능.Towards more accountability of Raku programs
Test::Coverage테스트 파일의 충분한 커버리지를 확인합니다.Towards more coverage
Text::Emoji:text: → 이모지 변환을 제공합니다.
ZecoRaku용 에코시스템 호스팅 모듈.Grant Report: Raku Ecosystem Final

추가 모듈 (알파벳 순)

  • App::Rak – 21세기 grep/find/ack/ag/rg를 강화한 버전.
  • Crocro 명령줄 및 웹 도구.
  • PDF – PDF 데이터를 읽고, 조작하고, 쓰기 위한 기본 클래스.
  • Red – Raku ORM.
  • REPL – 보다 쉽게 구성 가능한 REPL. See also REPL Avalanche.
  • Rakuast::Rakudoc::Renderer – RakuDoc v2를 텍스트, HTML, HTML‑Extra, Markdown으로 렌더링합니다.
  • Slang::Nogil – 시그널 없는 스칼라 변수를 허용합니다. See also Allowing for fewer dollars.
  • Terminal::LineEditor – 일반화된 터미널 라인 편집.
  • zef – Raku 모듈 관리 도구.

#raku‑dev에서 실험적인 봇

새로운 봇 rakkable#raku-dev IRC 채널에 등장했습니다.
이 봇은 App::Rak의 새로운 “rakudo‑xxx” 기능을 위한 인터랙티브 프런트엔드를 제공하며, 이 기능들은 새로운 Ecosystem::Cache 모듈에 의존합니다. 이를 통해 생태계 내 최신 모듈 버전을 손쉽게 검색할 수 있습니다.

예시 쿼리

provides 섹션에 언급된 코드 중 Lock.new 문자열을 포함하고 $!lock 문자열도 포함하는 Raku 생태계의 코드를 찾아 주세요.”

rakkable: eco-provides Lock.new --and=$!lock

rakkable – 실행 중: eco-provides Lock.new --and=$!lock, 잠시만 기다려 주세요!
rakkable – 25개의 파일(24개의 배포판)에서 30줄을 찾았습니다:

일반 공지사항

  • 봇은 현재 #raku‑dev에 존재하지만, rakkable: 접두어 없이도 직접 호출할 수 있습니다.
  • Raku 프로그래밍 언어에 대해 게시할 때는 #rakulang 태그를 사용하세요!

Raku.org 웹사이트 개편

Raku 웹사이트가 Steve Roe 덕분에 완전히 새롭게 단장되었습니다. 이제는:

  • Dog‑foodedhtmx 로 하이퍼 강화되었습니다.
  • Åir에 호스팅됩니다.
  • cro 로 구축되었습니다.
  • Raku 로 작성되었습니다.
  • picocss 로 스타일링되었습니다.

문서 개선

Raku Documentation Project는 많은 새로운 협업자를 맞이했습니다. 주요 내용:

  • 문서에 대한 CI 테스트가 이제 ~4× faster 가 되었으며, RakuAST RakuDoc 파서 덕분입니다.

소셜 미디어 전환

  • I (the author) have stopped using X (formerly Twitter). It was painful, but Bluesky and Mastodon are great alternatives, and many important community members have already moved there.
  • If you haven’t made the switch yet, consider doing so—for yourself and for the people you follow.

컨퍼런스 및 서밋

  • 불행히도, Raku Conference(대면 또는 온라인)는 올해 개최되지 못했습니다. 내년에는 더 나은 시기가 되길 바랍니다.
  • 두 번째 Raku Core Summit2025년에 계획되어 있습니다.

라쿠도 주간 뉴스

**Rakudo Weekly News**는 이제 Steve Roe가 (2025년 하반기부터) 제작하고 있습니다. 새로운 기능으로 code gists가 포함되었습니다—팀에게 찬사를 보냅니다!

문제‑Solving 저장소 활동 (2025)

저장소에 36개의 새로운 이슈가 접수되었습니다. 특히 다음과 같은 주제에 대한 여러분의 피드백을 환영합니다:

  • 추가 개선
Back to Blog

관련 글

더 보기 »

첫 네 개

Raku Resolutions에 대한 후속 보고 https://dev.to/lizmat/raku-resolutions-17g7 첫 번째 회의는 제안된 시간과 날짜에 따라 진행되었습니다: 2026년 1월 17일 19:00 UT.