Pulse 게시 ·

CPython 메모리 스냅샷 제안, 초기화 단축과 난수 재설정 논의

Python이 9월 30일 공개한 Language Summit 회고에서 인터프리터 초기화 뒤 메모리를 저장·복원하는 제안을 소개했다. Pyodide의 Hello world 시험에서는 실행 시간이 1.406초에서 0.353초로 줄었다. 다만 해시 난수값까지 재사용되는 보안 문제를 막기 위한 재초기화 절차가 필요하며, CPython 도입은 확정되지 않았다.

Hood Chatham은 Python 언어 모델에 명시적인 초기화 단계를 추가하고, 스냅샷 복원 때 런타임과 외부 라이브러리가 난수를 다시 설정하도록 제안했다.

Python은 해시 충돌을 이용한 서비스 거부 공격을 막기 위해 시작할 때 해시 salt를 무작위로 정한다. 초기화된 메모리를 그대로 복원하면 이 값이 여러 프로세스에서 공유될 수 있다.

관심 사용처는 WebAssembly와 엣지 컴퓨팅이다. 실행 중 파일시스템 접근이 없는 환경에서는 지연 import에도 제약이 생긴다.

논의에서는 reinit 콜백, 모듈 동결, 객체 메모리의 copy-on-write 같은 접근도 거론됐다.

지연 import로 모듈 로딩을 미루면 스냅샷에 해당 상태가 담기지 않아, 복원 후에도 로딩 비용을 매번 낼 수 있다.

원문