Status & known issues상태와 알려진 문제

What works today. “Implemented” means a test in this repository exercises it.

지금 되는 것. “구현” 은 이 저장소의 테스트가 그것을 실행한다는 뜻입니다.

Feature status기능 상태

Feature기능Status상태
Python install, list, find, uninstall with pinned SHA-256고정 SHA-256 을 쓰는 Python install, list, find, uninstallimplemented구현
Targets: add, remove, family source folders타깃: add, remove, 계열별 소스 폴더implemented구현
Per-target remove and sync into build/crossenv타깃별 remove 와 build/crossenv 로의 syncimplemented구현
Per-target add (markers checked against uv)타깃별 add (uv 로 검증한 마커)partial부분
init, target list, package add/remove, dev-environment add/remove/sync/treeinit, target list, package add/remove, 개발 환경 add/remove/sync/treepartial부분
C/C++ extensions through Meson (ppp build, host only)Meson 을 통한 C/C++ 확장 (ppp build, 호스트만)partial부분
Bundles: resource, single, fat, patch번들: resource, single, fat, patchimplemented구현
bytecode levelbytecode 레벨partial부분
native / mixed levels (semantics decided, compile slot in draft)native / mixed 레벨 (의미 결정, 컴파일 슬롯 초안)planned계획
Rust, Nuitka, Cython, minificationRust, Nuitka, Cython, 최소화planned계획
binary bundle, deploy, code pushbinary 번들, deploy, 코드 푸시planned계획
GraalVM native binary in CICI 에서의 GraalVM 네이티브 바이너리partial부분

The item-by-item contract, with the test behind each line, is docs/SPEC.md.

항목별 계약과 각 줄의 근거 테스트는 docs/SPEC.md 에 있습니다.

Known issues알려진 문제

  • pypackpack --version, -v and a bare help are not wired; use ppp version and --help.pypackpack --version, -v, 대시 없는 help 는 연결되지 않았습니다. ppp version 과 --help 를 쓰세요.
  • init cannot take targets; add them afterwards with target add.init 은 타깃을 받지 못합니다. 나중에 target add 로 추가하세요.
  • ppp sync ignores the venv path, and python use does not clean package build/ directories.ppp sync 는 venv 경로를 무시하고, python use 는 패키지의 build/ 를 정리하지 않습니다.
  • Several commands find the project through user.dir rather than an explicit directory.몇몇 명령은 명시적 디렉터리가 아니라 user.dir 로 프로젝트를 찾습니다.
  • The downloader holds a whole archive in memory; .tar.xz and PAX/GNU long names are not read.다운로더가 아카이브 전체를 메모리에 둡니다. .tar.xz 와 PAX/GNU 긴 이름은 읽지 않습니다.

Scope decisions범위 결정

Recorded 2026-10-04 (#70).

2026-10-04 에 기록했습니다 (#70).

  • Python: CPython 3.15 and later, free-threaded only (3.15t; python-multiplatform #158). Extensions will target PEP 803's abi3t, and a dependency that re-enables the GIL will be reported at build time. Today 3.14.7 and 3.13.0 are still installable.Python: CPython 3.15 이상, free-threaded 전용입니다 (3.15t, python-multiplatform #158). 확장은 PEP 803 의 abi3t 를 대상으로 하고, GIL 을 다시 켜는 의존성은 빌드할 때 알릴 예정입니다. 지금은 3.14.7 과 3.13.0 을 아직 설치할 수 있습니다.
  • WASM (wasm32-pyodide2024) is in the first release's scope. Nothing installs or compiles for it yet.WASM (wasm32-pyodide2024) 은 첫 릴리스 범위에 듭니다. 아직 설치·컴파일 경로는 없습니다.
  • build bundles: it takes the bundle as an argument, as the maintainer's first spec sheet wrote it. There is no bundle command.build 가 번들까지 합니다. 메인테이너의 첫 사양서대로 번들을 인자로 받으며, bundle 명령은 없습니다.
  • Deploy destination follows the artefact: libraries go to PyPI, apps to FastTrack.배포 대상은 산출물에 따라 정해집니다. 라이브러리는 PyPI, 앱은 FastTrack 입니다.
  • pypackpack itself is distributed on PyPI as native wheels (uv tool install pypackpack).pypackpack 자체는 PyPI 에 네이티브 휠로 배포합니다 (uv tool install pypackpack).

Contributing기여하기

Changes go intent → spec → test → code: a behaviour change starts in docs/SPEC.md, its test is written and seen failing, then the code makes it pass. implemented always cites a test in this repository.

변경은 의도 → 스펙 → 테스트 → 코드 순서입니다. 동작 변경은 docs/SPEC.md 에서 시작하고, 테스트를 먼저 써서 실패를 본 뒤, 코드로 통과시킵니다. implemented 는 언제나 이 저장소의 테스트를 근거로 듭니다.

./gradlew :packpack:test     # the library
./gradlew :packpack:cliTest   # the command line
python3 docs/guide/check_guide.py    # this site