포티지 3.0 안정 릴리스가 이미 발표되었습니다.

최근 개발자 패키지 관리 시스템 책임자 운반 (젠투 리눅스 배포판에서) 3.0 버전의 안정적인 버전 출시를 발표했습니다.

어느 곳에서 주요 참신 제시된이 새로운 지점의 장기적으로 수행 된 작업입니다 Python 3으로 전환하고 Python 2.7 지원 종료 (이 지점이 공식적으로 몇 달 동안 지원되지 않았기 때문에 이미 오랫동안 보였던 것)

좋은 소식이 있습니다! 젠투 포티지 프로젝트는 최근 패키지 관리자 3.0 버전을 안정화했습니다.

무엇이 새로운가요? 이 세 번째 버전의 포티지는 2.7 년 내내 Gentoo Python 프로젝트에 의해 메인 Gentoo 저장소에서 지속적으로 노력해온 Python 2020에 대한 지원을 제거합니다.

Python 2.7에 대한 지원 중단 외에도 또 다른 큰 변화 포티지 3.0의 새로운 안정적인 브랜치에서 다양한 최적화가 포함되었습니다. 그들이 허용 한 훨씬 빠르게 계산 (50 % ~ 60 %) 종속성 결정과 관련이 있습니다.

흥미롭게도 일부 개발자는 작업 속도를 높이기 위해 C / C ++ 또는 Go로 종속성 해결 코드를 다시 작성하도록 제안했지만 많은 노력으로 기존 문제를 해결할 수있었습니다.

그리고 기존 코드의 프로필은 대부분의 경우 계산 use_reduce 및 catpkgsplit 함수 호출 전용입니다. 반복되는 인수 세트 (이 작업을 주도한 사람은 예를 들어 catpkgsplit 함수가 1 ~ 5 백만 번 호출되었다고 언급 함).

문제가 감지되면 계산 속도를 높이려면 캐싱이 적용되었습니다. 사전을 사용하여 이러한 기능의 결과.

또한 사용자가 제공 한 패치로 인해 최신 버전의 포티지로 업데이트하면 의존성 계산 속도가 50-60 % 빨라질 수 있습니다. 우리 커뮤니티가 우리 소프트웨어에 참여하는 것을보고 싶어요! 자세한 내용은 패치를 제공 한 커뮤니티 회원의이 Reddit 게시물을 확인하십시오. Gentoo와 함께 건강을 유지하고 요리를 계속하세요!

그 외에 또한 lru_cache 내장 함수가 최적이라고 기록합니다. 이 캐싱 작업에 사용되었지만 3.2 이후 Python 버전에서만 사용할 수있었습니다.

이전 버전과의 호환성을 위해 lru_cache를 대체하기 위해 스텁도 추가되었지만 포티지 2.7에서 Python 3.0 지원을 종료하기로 한 결정은 작업을 크게 단순화하고이 계층을 우회 할 수있게했습니다.

나는 어떤 기능이 가장 많은 시간을 소비하는지 이해하기 위해 cProfile과 vmprof로 포티지를 프로파일 링하는 데 시간을 보냈다. 또한 프로파일 러 결과에서 몇 가지 플레임 그래프를 생성했습니다. 내가 알아 차린 것은 일부 기능은 use_reducecatpkgsplit, 동일한 인수를 사용하여 매우 자주 호출됩니다 (예 : 1 ~ 5 백만 번, catpkgsplit). 나는 이러한 함수의 결과를 받아쓰기로 캐시하기 위해 몇 가지 실험을했고, 좋은 속도 향상을 확인한 후 Portage 개발자 목록에 패치를 제출했습니다. 누군가 내장 파이썬 사용을 제안했습니다.lru_cache 대신 함수 데코레이터를 사용하지만 Python 3.2 이상에서만 사용할 수 있습니다.

반면 캐시를 사용하면 ThinkPad X220에서 "emerge -uDvpU –with-bdeps = y @world"작업이 5 분 20 초에서 3 분 16 초 (63 %)로 감소했습니다. 다른 시스템에서 테스트 한 결과 최소 48 %의 성능 향상이 나타났습니다.

변경을 준비한 개발자도 프로토 타입 구현을 시도했습니다. 종속성 해결 코드에서 C ++ 또는 Rust에서 하지만 작업이 너무 어려워서 많은 양의 코드를 포팅해야했고 동시에 그 결과가 노력할만한 가치가 있는지 의심 스러웠습니다.

최종적으로 그것에 대해 더 알고 싶다면 이 안정적인 브랜치의 릴리스 노트에 대해 자세한 내용을 확인할 수 있습니다. 다음 링크에서.


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자: AB Internet Networks 2008 SL
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.