C API 작업에서 가장 번거로운 부분은 컴파일/링크 플래그 설정임. python3-config는 OS 수준에서만 작동하며, pip로 설치한 패키지에 접근하기 위해서는 사용하기 어려움. python3 -m venv는 이러한 스크립트를 생성하지 않으며, anaconda/miniconda도 문제임. 각 패키지가 하드코딩된 python3 -c "import sys: print..." 호출로 빌드 스크립트를 오염시킴. CPython에 python3 -m sysconfig --json 플래그를 추가하는 PR을 열었음
Python 언어가 하나의 구현에 너무 집중되어 있는 것은 장기적으로 성공에 위협이 될 수 있음. 웹 서버, 명령줄 프로그램, 임베디드 장치는 서로 다른 요구 사항을 가짐. 이 프로젝트가 Python의 C API를 구현 세부 사항을 노출하지 않는 것으로 대체하는 데 성공한다면, 대체 구현을 유지 관리하고 새로운 기술을 실험하는 것이 더 쉬워질 수 있음
이 프로젝트가 버전 독립적인 Python 바인딩을 제공하는 것인지 궁금함. 현재 각 버전에 대해 별도로 바인딩을 빌드하고 있으며, 이는 CI/CD 시간을 많이 소모하게 함
HPy 확장과 Cython/pybind11 구현을 성능 및 개발 시간 측면에서 비교하는 벤치마크가 흥미로울 것임
이 프로젝트가 PyBind11이나 nanobind 같은 라이브러리와 어떻게 맞물리는지 명확하지 않음. 이러한 라이브러리를 동일한 방식으로 사용하려면 다시 작성해야 할 것 같음
요즘 C로 작성된 새로운 확장이 얼마나 많은지 궁금함. 주로 Boost Python, pybind, PyO3 같은 것들이라고 생각했음
CPython 바인딩을 최소한의 오버헤드로 구현하는 것에 대해 자주 게시하며, 몇 가지 추천, 질문, 우려 사항을 공유하고 싶음. HPy 프로젝트의 랜딩 페이지와 리포지토리의 README를 재구성하면 좋겠음. PyPy, GraalPython, 다른 Python 런타임에 대한 지지 통계가 있으면 더 설득력이 있을 것임
HPyContext 같은 캡슐화된 컨텍스트 객체를 사용하는 것은 멀티스레드 Python 미래나 복잡한 환경에서 유용함. 하지만 HPyContext가 CPython의 싱글톤으로 리디렉션된다면 문제 해결이 되지 않음
2019년의 벤치마크는 CPython의 METH_FASTCALL 호출 규칙을 언급하지만 비교되지 않음. 성능에 관심이 있다면 문자열 포맷터 없이 튜플에서 직접 인수를 파싱하는 것이 좋음
Python에서 C 헤더를 주고 공유 라이브러리를 로드하여 구조체를 사용 가능하게 하고 함수를 호출할 수 있는 luajit의 ffi와 같은 간단한 것이 있는지 궁금함
Python에서 Go를 호출하는 것에 관심이 있으며, gopy는 cgo에 대한 Python 바인딩을 생성함. HPy<->cgo가 더 적은 오버헤드를 가질 수 있을 것임
20년 전에 이 작업이 완료되었다면 Python 생태계가 얼마나 달라졌을지 상상해보길 바람
Hacker News 의견
C API 작업에서 가장 번거로운 부분은 컴파일/링크 플래그 설정임.
python3-config
는 OS 수준에서만 작동하며, pip로 설치한 패키지에 접근하기 위해서는 사용하기 어려움.python3 -m venv
는 이러한 스크립트를 생성하지 않으며, anaconda/miniconda도 문제임. 각 패키지가 하드코딩된python3 -c "import sys: print..."
호출로 빌드 스크립트를 오염시킴. CPython에python3 -m sysconfig --json
플래그를 추가하는 PR을 열었음Python 언어가 하나의 구현에 너무 집중되어 있는 것은 장기적으로 성공에 위협이 될 수 있음. 웹 서버, 명령줄 프로그램, 임베디드 장치는 서로 다른 요구 사항을 가짐. 이 프로젝트가 Python의 C API를 구현 세부 사항을 노출하지 않는 것으로 대체하는 데 성공한다면, 대체 구현을 유지 관리하고 새로운 기술을 실험하는 것이 더 쉬워질 수 있음
이 프로젝트가 버전 독립적인 Python 바인딩을 제공하는 것인지 궁금함. 현재 각 버전에 대해 별도로 바인딩을 빌드하고 있으며, 이는 CI/CD 시간을 많이 소모하게 함
HPy 확장과 Cython/pybind11 구현을 성능 및 개발 시간 측면에서 비교하는 벤치마크가 흥미로울 것임
이 프로젝트가 PyBind11이나 nanobind 같은 라이브러리와 어떻게 맞물리는지 명확하지 않음. 이러한 라이브러리를 동일한 방식으로 사용하려면 다시 작성해야 할 것 같음
요즘 C로 작성된 새로운 확장이 얼마나 많은지 궁금함. 주로 Boost Python, pybind, PyO3 같은 것들이라고 생각했음
CPython 바인딩을 최소한의 오버헤드로 구현하는 것에 대해 자주 게시하며, 몇 가지 추천, 질문, 우려 사항을 공유하고 싶음. HPy 프로젝트의 랜딩 페이지와 리포지토리의 README를 재구성하면 좋겠음. PyPy, GraalPython, 다른 Python 런타임에 대한 지지 통계가 있으면 더 설득력이 있을 것임
HPyContext
같은 캡슐화된 컨텍스트 객체를 사용하는 것은 멀티스레드 Python 미래나 복잡한 환경에서 유용함. 하지만HPyContext
가 CPython의 싱글톤으로 리디렉션된다면 문제 해결이 되지 않음2019년의 벤치마크는 CPython의
METH_FASTCALL
호출 규칙을 언급하지만 비교되지 않음. 성능에 관심이 있다면 문자열 포맷터 없이 튜플에서 직접 인수를 파싱하는 것이 좋음Python에서 C 헤더를 주고 공유 라이브러리를 로드하여 구조체를 사용 가능하게 하고 함수를 호출할 수 있는 luajit의 ffi와 같은 간단한 것이 있는지 궁금함
Python에서 Go를 호출하는 것에 관심이 있으며, gopy는 cgo에 대한 Python 바인딩을 생성함. HPy<->cgo가 더 적은 오버헤드를 가질 수 있을 것임
20년 전에 이 작업이 완료되었다면 Python 생태계가 얼마나 달라졌을지 상상해보길 바람