TECH 으로 돌아가기
TECH HACKER NEWS 오늘 7분 읽기 23 READS

Julia 1.13, 첫 결과까지의 시간을 줄이는 데 집중하다

Julia 1.13, 첫 결과까지의 시간을 줄이는 데 집중하다
SOURCE IMAGE · HACKER NEWS

프로그래밍 언어 Julia의 새 버전 1.13이 2026년 9월 10일 공개됐다. 이번 릴리스는 화려한 신기능보다 실무에서 체감되는 지연 시간, 즉 'Julia를 켜서 첫 결과를 얻기까지'의 비용을 깎는 데 무게를 실었다. Julia는 실행 시점에 코드를 컴파일하는 특성상 초기 반응성이 오랜 약점으로 지적돼 왔는데, 이번 버전은 그 병목을 여러 각도에서 공략했다.

시작 시간과 프리컴파일 개선

1.13은 패키지 프리컴파일에 드는 시간이 1.12보다 약 30% 적고, 장기 지원(LTS) 버전인 1.10과 비교해도 머신에 따라 10~20%가량 짧다. 시작(startup) 시간 자체도 1.12 대비 약 20% 빨라졌다. 첫 결과까지의 시간(TTFX)은 패키지 프리컴파일, 로딩, 실제 코드 실행이라는 세 비용으로 나뉘는데, 개발팀은 커뮤니티가 제출한 Julia-TTFX-Snippets의 39개 실사용 워크플로를 기준으로 이를 체계적으로 측정하기 시작했다. 이 측정은 이제 개발 과정에도 편입돼, 관련 풀 리퀘스트와 master 커밋마다 TTFX CI가 돌고 결과는 perf.julialang.org/ttfx에서 추적된다. 다만 이 추적이 정식으로 가동된 것은 2026년 9월 7일이며, 그 이전 수치는 임의 측정이었다는 점은 감안해야 한다.

REPL 사용성 강화

대화형 환경인 REPL에는 외부 패키지(OhMyREPL.jl 등)를 로드하지 않아도 되는 기본 구문 강조가 들어갔다. 기본 배색은 보수적이지만 문서에 따라 손쉽게 바꿀 수 있고, Monokai 같은 테마도 적용된다. Ctrl-R로 진입하는 히스토리 검색은 명령줄 퍼지 파인더인 fzf와 유사하게 재설계됐다. 명령이 어떤 REPL 모드에서 실행됐는지 보여주고, 여러 검색 결과를 골라 프롬프트에 넣을 수 있으며, REPL과 동일한 구문 강조가 적용된다. 또 오래전부터 Linux와 macOS에서 지원되던 브래킷 붙여넣기(bracketed paste)가 드디어 Windows에서도 활성화돼, 수백 줄짜리 함수를 붙여 넣을 때의 처리 정확도와 효율이 개선됐다. 내부 변수 #self#에 의존하지 않고 익명 함수를 포함한 현재 함수를 가리키는 공개 API용 @__FUNCTION__ 매크로도 추가됐다.

해시와 가비지 컬렉션

내부 해시 알고리즘도 교체됐다. 바이트 해싱은 이제 RapidhashNano를 쓰며, 문자열과 BigInt·Rational 등 여러 수치 타입에 기본 적용된다. 입력 길이를 미리 알 필요가 없는 스트리밍 방식이고, C에서 순수 Julia로 옮겨 가독성과 유지보수성도 높였다. 다만 해시는 여전히 비암호학적이며, 기본 시드가 바뀐 점이 중요하다. 사용자 정의 해시 메서드는 hash(x::MyType, h::UInt)처럼 시드를 인자로 받되 기본값을 주지 말아야 한다. 올바른 시드는 호출자가 결정하기 때문이다.

가비지 컬렉션에서는 시스템 이미지와 패키지 이미지에서 로드된 객체들을 영구 표시(permanently marked) 상태로 두어, 마크 단계가 이들을 훑지 않도록 바꿨다. 이 객체들은 해제되지 않고 거의 변경되지도 않는데도 기존에는 전체 수집 때마다 모두 순회하는 것이 가장 큰 비용이 되곤 했다. 이제 전체 수집 비용은 로드된 코드량이 아니라 프로그램이 실제로 만든 힙 크기에 비례한다. 증분(젊은 세대) 수집은 이 변경의 영향을 받지 않는다.

스케줄러와 개발 도구

스레드 스케줄러도 손봤다. 유휴 스레드는 마지막으로 실행한 작업을 붙들고 있는 대신 전용 스케줄러 태스크에서 대기하게 돼, 끝난 작업이 즉시 회수된다. 이와 함께 Ctrl-C가 sleep이나 IO에 막힌 스크립트를 포함한 사용자 코드에 다시 도달하고, REPL이 반복적인 Ctrl-C에도 견디는 등 인터럽트 신뢰성이 회복됐다. @spawn은 이제 스레드풀의 유휴 스레드 하나만 깨우는데, 16코어 Linux에서 1.1~1.6배, Windows나 과다 구독 환경에서는 10~300배까지 빨라졌다. 다만 완전한 작업 취소 메커니즘은 1.14로 예정돼 있다. 코드 조사 매크로(@which, @code_warntype 등)는 이제 값 대신 ::T 형태의 타입을 인자로 받아, 스택트레이스에서 프레임을 복사해 그대로 붙여 넣을 수 있다. 실행 진행 상황을 보여주는 --trace-eval 플래그도 새로 생겨 테스트 스위트의 멈춤 지점을 찾는 데 쓸 수 있다.

패키지 관리자 변화

Pkg에서는 실무에 바로 와닿는 변경이 여럿이다. 패키지 서버 다운로드가 기본적으로 gzip 대신 zstd 압축을 요청하는데, Pkg가 다루는 파일 유형에서는 압축률과 해제 속도가 모두 낫다. 매니페스트에는 각 패키지의 출처 레지스트리가 기록돼 인스턴스화 시 자동 설치되고, URL로 가져온 패키지의 [sources] 항목을 재귀적으로 수집해 비공개 의존성 사슬도 레지스트리 없이 해결된다. 특히 pkg> add 시 이미 로드된 버전이 호환 제약을 만족하면 그 버전을 우선해, 불필요한 재프리컴파일을 피한다. Pkg.test도 더 이상 --check-bounds=yes를 강제하지 않아, 개발 중 생성한 프리컴파일 캐시를 테스트에서 재사용할 수 있다. 종합하면 1.13은 개별 기능의 도약보다 반응성과 안정성이라는 기반을 다진 릴리스로, 대화형 개발이 잦은 데이터·과학 계산 실무자일수록 업그레이드 효과를 뚜렷이 느낄 만하다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://julialang.org/blog/2026/09/julia-1.13-highlights/
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기
처리 중...