Following system colour scheme Selected dark colour scheme Selected light colour scheme

Python 개선 제안 한국어 번역

PEP 816 – WASI 지원

Author:
Brett Cannon <brett at python.org>
Discussions-To:
Discourse thread
Status:
Active
Type:
Informational
Created:
05-Nov-2025
Post-History:
08-Dec-2025
Resolution:
Discourse message

Table of Contents

번역·라이선스 안내

이 비공식 한국어 번역은 원문 Copyright 절의 Public Domain or CC0-1.0, whichever is more permissive 조건에 따라 제공합니다. 원저자와 공식 원문은 그대로 표시합니다. 수정되지 않은 기준 원문 · 공식 최신판

Note

Python 버전별 WASI 버전 지원에 대해서는 PEP 11을 참조하십시오. 버전.

초록

이 PEP는 CPython의 WASI 지원에 대한 예상 사항을 개괄합니다. CPython의 모든 릴리스에서 어떤 WASI 및 WASI SDK 버전이 지원될 것으로 예상되는지 알 수 있을 만큼 충분한 세부 정보를 담고 있으며, 공식적인 WASI 지원은 PEP 11에 명시되어 있습니다.

동기

CPython은 Python 3.11부터 PEP 11에 따라 WASI를 지원해 왔습니다. 이러한 지원의 일환으로 CPython은 두 가지를 대상으로 해야 합니다: WASI 버전과 WASI SDK 버전(두 버전 모두 Bytecode Alliance가 개발을 주도합니다). 전자는 WASI 자체의 사양이며, 후자는 wasi-libc의 특정 버전을 sysroot로 사용하는 clang 버전으로, CPython을 WASI용으로 컴파일할 수 있게 합니다. 새로운 WASI 버전은 대략 매년 출시되지만 WASI SDK에는 정해진 출시 주기가 없습니다.

지원할 WASI 및 WASI SDK 버전에 합의하면 CPython 코드베이스를 해당 버전에 맞춰 명확하게 대상으로 삼을 수 있습니다. 또한 특정 WASI 또는 WASI SDK 버전에서만 문제가 나타나는 경우 무엇을 버그로 간주할지(또는 간주하지 않을지)에 대해 커뮤니티가 적절한 기대치를 설정할 수 있습니다. 또한 라이브러리와 같은 다른 소프트웨어를 빌드할 때 특정 Python 버전에 사용할 WASI 및 WASI SDK의 전반적인 목표를 커뮤니티에 제공합니다. wasi-libc의 ABI가 어떠한 호환성도 보장하지 않기 때문에 WASI SDK는 순방향 또는 하위 호환이 되지 않으며, 따라서 코드가 함께 작동하려면 광범위한 조율이 중요하므로 이는 중요합니다.

버전 목표와 관련된 이러한 조율 및 기록은 선택된 버전이 명확하지 않은 상황에서 중요할 수 있습니다. 예를 들어 WASI SDK 26과 27에는 특정 상황(REPL 종료 포함)에서 CPython이 멈추게 하는 bug가 있습니다. 이 버그는 스레드 지원 코드에 있으므로 CPython이 해당 버전을 대상으로 하지 않으며 따라서 3rd-party 코드도 해당 버전을 피해야 한다는 점이 커뮤니티의 다른 사람들에게 반드시 명확하지는 않을 수 있습니다.

근거

기술적으로는 별개이지만 WASI SDK가 지원할 때까지 CPython은 WASI 버전을 지원할 수 없습니다. WASI 버전은 서로 하위 호환되는 것으로 간주되지만, wasi-libc에 ABI 호환성 보장이 없기 때문에 WASI SDK는 순방향으로도 하위 방향으로도 호환되지 않습니다. 따라서 CPython에서 특정 WASI SDK 버전에 대한 지원 기대치를 설정하는 것이 중요합니다. 역사적으로 CPython의 WASI SDK 버전 간 지원 차이는 WASI용으로 유지 관리되는 config.site 파일의 설정과 관련되어 있었습니다. WASI SDK 자체의 버그로 인해 지원 문제가 발생하기도 했습니다. 마지막으로 WASI SDK가 지원하는 새로운 기능으로 인해 이전에는 WASI 빌드에서 사용되지 않던 코드가 갑자기 실행될 수 있으며, 테스트를 통과하려면 코드 업데이트가 필요할 수 있습니다.

WASI 버전 지원은 일반적으로 WASI 빌드에서 어떤 표준 라이브러리 모듈을 (잠재적으로) 사용할 수 있는지로 이어집니다. 예를 들어 WASI 0.2에서는 소켓 지원이 추가되었으며 WASI 0.3.1에는 어떤 형태로든 스레딩 지원이 추가될 예정입니다. 어떤 WASI 버전이 지원되는지 알면 어떤 표준 라이브러리 모듈이 지원되어야 하는지에 대한 기대치를 설정할 수 있습니다.

인터프리터 기능의 사용 가능 여부는 WASI 버전에 따라 달라질 수 있습니다. 예를 들어 스레딩 지원이 제공되기 전에는 WASI에서 프리 스레딩을 지원할 수 없습니다. 다시 말해 이는 대상 WASI 버전을 기준으로 무엇이 작동해야 하는지에 대한 기대치를 설정하는 데 도움이 됩니다.

사양

CI 또는 b1이 릴리스될 때 안정 Buildbot 빌더에서 CPython 버전이 지원하는 WASI 및 WASI SDK 버전은 이 PEP가 승인된 후 해당 Python 버전의 수명 동안 지원될 버전이어야 합니다. 어떤 이유로든 CI와 Buildbot 빌더 간에 불일치가 있는 경우, PEP 11에 명시된 WASI 유지 관리자가 지원할 버전으로 지정할 버전 집합을 선택합니다.

Python 버전에 대해 지원되는 WASI 버전 및 WASI SDK 버전은 공식 기록으로서 PEP 11에 기록되어야 합니다. 이는 PEP 11에 명시된 WASI 유지 관리자가 기록하며, b1 릴리스 시점 전후에 수행합니다.

어떤 이유로든 지원되는 WASI SDK 버전을 기록한 후 변경해야 하는 경우, 변경 시점과 변경 이유를 PEP 11에 기록합니다. 이러한 변경은 PEP 11에 명시된 WASI 지원 유지 관리자의 재량에 따르며, 운영 위원회의 승인이 필요하지 않습니다. 다만 이러한 변경은 발생해서는 안 된다는 것이 예상됩니다.

기록된 후에는 운영 위원회가 승인하지 않는 한 WASI 버전을 변경해서는 안 됩니다. 이는 새로운 WASI 버전에 대한 지원 부담이 증가하고, 지원 기대치가 이미 정해진 후 CPython이 지원할 대상에 대한 기대치가 변경되기 때문입니다.

주 브랜치의 대상 트리플에 적절한 WASI 버전을 반영하기 위한 PEP 11의 모든 업데이트는 필요에 따라 수행해야 하지만, 업데이트에 운영 위원회의 승인은 필요하지 않습니다. 이러한 업데이트는 새로운 플랫폼을 구성하지 않고 현재 운영 위원회의 승인이 필요하지 않은 새로운 운영 체제 릴리스에 더 가깝기 때문에, 운영 위원회가 해당 업데이트를 승인할 필요가 없도록 합니다.

지정된 지원

WASI SDK는 일부 곳에서 메이저 버전과 마이너 버전을 모두 표시하지만, 실제로 마이너 버전은 0 이외의 값으로 설정된 적이 없으며 모든 마이너 버전은 전체 메이저 버전과 ABI 호환됩니다라는 예상이 있습니다. 또한 마이너 릴리스가 있었던 적이 없기 때문에 WASI 커뮤니티에서는 WASI SDK 버전을 메이저 버전으로만 지칭합니다. 따라서 이 PEP는 마이너 버전을 기록할 필요가 생길 때까지 WASI SDK의 메이저 버전만 기록합니다.

Python WASI WASI SDK
3.14 0.1 24
3.13 0.1 24
3.12 0.1 21
3.11 0.1 21

참고

Python 3.15 이전의 모든 버전은 이 PEP보다 앞선 버전입니다. 해당 버전에 대한 버전 지원은 이 PEP가 작성될 당시 지원되던 내용을 기반으로 합니다.

Python 3.11 및 3.12에서 WASI는 PEP 11에 따른 3등급 플랫폼이었습니다. Python 3.13부터 WASI는 2등급 플랫폼이 되었습니다.

시간이 부족하여 WASI 0.2 지원을 건너뛰었으며, 차라리 WASI 0.3으로 곧바로 넘어가는 편이 낫다고 판단할 정도였습니다. 이는 Bytecode Alliance의 권고에 따른 것입니다.

WASI SDK 26 및 27에는 CPython이 특정 상황에서 멈추게 하는 버그가 있어 건너뛰었습니다.

감사의 말씀

이 PEP의 사양을 논의해 주신 Bytecode Alliance의 Python 하위 그룹게스트 언어 SIG의 Joel Dice님과 Ben Brandt님께 감사드립니다.

각주