Qiskit SDK 버전 전략
키스킷 버전 번호는 시맨틱 버전 관리를 따릅니다.
버전 번호는 메이저, 마이너, 패치 버전의 세 가지 기본 구성 요소로 이루어져 있습니다 패치 버전입니다. 예를 들어, 버전 번호 X.Y.Z, X 은 메이저 버전입니다, Y 은 부 버전, Z 은 패치 버전입니다.
호환성을 깨는 API 변경 사항은 주요 버전 릴리스 시에만 적용됩니다. 메이저 버전 출시 간 최소 기간은 1년입니다. 마이너 버전은 API 호환성을 해치지 않으면서 새로운 기능과 버그 수정을 도입하며, 현재 약 3개월 간격으로 주기적으로 현재 메이저 버전에 대해서만 출시됩니다. 패치 버전은 활발히 지원되고 있는 각 릴리스 시리즈의 최신 마이너 버전(즉, 메이저 버전)에서 발견된 버그에 대한 수정 사항을 제공합니다. 당사는 한 번에 최대 두 개의 릴리스 시리즈만 지원하며, 이는 새로운 메이저 버전 릴리스 이후 중복 기간 동안에만 발생하며, 이에 대한 자세한 내용은 아래에서 설명합니다.
출시 일정
주요 릴리스 X 주기 예시:
최신 릴리스 일정은 키스킷 GitHub 프로젝트의 마일스톤 목록에서 확인할 수 있으며, 여기에는 항상 현재 릴리스 계획이 포함되어 있습니다.
새 주 버전이 출시되면 이전 주 버전은 버그 수정만 가능한 경우 버그 수정의 경우 최소 6개월, 보안 수정의 경우 1년 동안 지원됩니다. 동안 기간에는 이 메이저 버전에 대한 패치 릴리스만 게시됩니다. 지원이 중단되면 최종 패치 버전이 게시되며, 해당 릴리즈는 에는 해당 주요 버전 시리즈에 대한 지원 종료도 문서화됩니다. 더 긴 이전 메이저 버전에 대한 지원 기간이 더 길어야 합니다 키스킷 소비자와 사용자에게 코드를 마이그레이션할 수 있는 기회를 제공하기 때문입니다. 키스킷에 의존하는 다운스트림 라이브러리는 키스킷에 의존하는 다운스트림 라이브러리는 최소 요구되는 키스킷 버전을 출시 직후 새로운 메이저 버전으로 올려서는 안 된다. 왜냐하면 라이브러리의 사용자 기반이 새로운 API 변경 사항으로 마이그레이션할 시간이 마이그레이션할 시간이 필요하기 때문이다. 이전 주요 키스킷 버전에 대한 지원 기간이 지원 기간을 연장하면 다운스트림 프로젝트가 다음 주요 버전과 다음 메이저 버전과의 호환성을 보장할 수 있습니다. 다운스트림 프로젝트는 사용자에게 마이그레이션 경로를 제공할 수 있습니다 한 번에 두 개의 릴리스 시리즈를 지원하여 사용자에게 마이그레이션 경로를 제공할 수 있습니다.
시맨틱 버전 관리의 목적상, 키스킷 퍼블릭 API는 다음과 같이 간주된다 비공개로 표시되지 않은 모든 문서화된 모듈, 클래스, 함수 또는 메서드 (밑줄 _ 접두사 포함)로 표시되지 않은 문서화된 모듈, 클래스 또는 메서드로 간주한다. 그러나 다음과 같은 경우 명시적인 예외가 있을 수 있습니다 명시적인 예외가 있을 수 있습니다. 이러한 경우, 이러한 API는 아직 안정적인 인터페이스로 간주되지 않는 것으로 명확하게 문서화됩니다 아직 안정적인 인터페이스로 간주되지 않는 것으로 명확하게 문서화되며, 사용자가 볼 수 있는 경고가 이러한 불안정한 인터페이스를 사용할 때 적극적으로 경고가 표시됩니다. 또한 일부 상황에서는 비공개로 표시된 인터페이스가 공용의 일부로 간주됩니다 API의 일부로 간주됩니다. 일반적으로 이것은 두 가지 경우에만 발생합니다 정의에서 서브클래스가 비공개 메서드를 재정의/구현하기 위한 경우 또는 를 재정의/구현하기 위한 경우, 또는 인터페이스의 구현을 정의하는 일부로 고급 사용 안정적인 인터페이스를 가지고 있지만 사용하기에 안전하지 않은 것으로 간주되는 저수준 메서드, 사용자가 클래스/안전 불변성을 스스로 유지해야 하는 부담이 있기 때문입니다 (이에 대한 표준적인 예는 QuantumCircuit._append 메서드입니다).
지원되는 Python 버전, 지원되는 최소 Rust 버전(소스에서 빌드하기 위한 키스킷 빌드용), 그리고 모든 Python 패키지 종속성(최소 지원되는 종속성의 최소 버전 포함)은 키스킷에서 사용하는 이전 버전과의 호환성 보장의 일부가 아니며 릴리스 중에 변경될 수 있다. 마이너 또는 메이저 버전 릴리스만 키스킷을 사용하거나 빌드하기 위한 최소 요구사항이 증가한다 (새로운 종속성 추가 포함), 패치 수정에는 다음에 대한 지원이 포함될 수 있다 새 버전 Python 또는 기타 종속성. 일반적으로 종속성의 최소 버전은 종속성의 최소 버전은 이전 종속성 버전이 지원을 중단하거나 최신 버전의 종속성 및 이전 버전과의 호환성을 유지할 수 없는 경우 종속성 및 이전 버전과의 호환성을 유지할 수 없는 경우에만 증가합니다.
업그레이드 전략
새 메이저 버전이 출시되면 권장되는 업그레이드 경로 는 먼저 이전 메이저 버전에서 가장 최신 마이너 버전으로 업그레이드하는 것입니다 버전으로 업그레이드하는 것입니다. 새로운 메이저 버전이 출시되기 직전에 최종 마이너 버전이 게시됩니다 게시됩니다. 이 최종 마이너 버전 릴리스( X.Y+1.0.0 )는 X.Y.0 와 동일하지만 새로운 메이저 버전 시리즈에 적용된 모든 API 변경 사항에 대한 경고 및 에 대한 경고 및 사용 중단이 포함되어 있습니다.
예를 들어, ‘ 1.0.0 ’ 릴리스 직후, ‘ 0.46.0 ’ 릴리스가 공개됩니다. 0.46.0 릴리스는 0.45.0 릴리스와 동일하지만, 1.0.0 릴리스의 일환으로 이루어진 API 변경 사항을 설명하는 추가적인 사용 중단 경고가 포함되어 있습니다. 이 패턴은 모든 주요 버전 릴리스에 적용됩니다.
키스킷 사용자는 먼저 이 최종 마이너 버전으로 업그레이드해야 한다 버전으로 업그레이드하여 사용 중단 경고를 확인하고 Qiskit 사용법을 조정한 후에 릴리스를 시도하시기 바랍니다. 이전 메이저 버전은 충분한 시간을 제공하기 위해 최소 6개월 동안 지원됩니다 업그레이드할 수 있도록 최소 6개월 동안 지원됩니다. 이를 관리하는 일반적인 패턴은 호환성이 확실해질 때까지 최대 버전을 고정하여 에 고정하고 호환성이 확실해질 때까지 다음 주요 릴리스 시리즈를 사용하지 않는 것입니다.
예를 들어, 현재 주요 키스킷 버전이 1일 때 요구사항 파일에 qiskit<2 을 지정하면 주요 키스킷 버전이 1일 때 요구사항 파일에 를 지정하면 API를 변경하지 않는 버전을 사용하고 있음을 보장한다.
다음 주요 버전보다 낮은 버전으로 제한하면 로 설정하면 주요 버전 릴리스 전에 사용 중단 경고가 사용 중단 경고가 표시되지 않도록 합니다.
캡을 사용하지 않으면 pip 최신 버전이 기본으로 설치됩니다.
QPY 직렬화 형식은 이전 버전과 호환되므로 새로운 키스킷 릴리스에서 항상 이전 버전에서 생성된 QPY 파일을 로드할 수 있다. 그러나 이 형식은 이전 버전과 호환되지 않으므로 원칙적으로는 이전 릴리스를 사용하여 최신 버전의 키스킷으로 생성된 QPY 파일을 로드할 수 없습니다. 주요 버전 릴리스 간에 사용자 마이그레이션을 용이하게 하기 위해 qiskit.qpy.dump() 함수는 항상 X.0.0 릴리스와 X-1.Y.0 릴리스 사이에 겹치는 버전을 하나 이상 지원합니다(여기서 Y 은 해당 시리즈의 마지막 마이너 버전입니다) 해당 시리즈의 마지막 마이너 버전). qiskit.qpy.dump(..., version=...) 매개변수를 사용하면 최신 릴리스부터 두 주요 버전에서 로드할 수 있는 QPY 형식의 파일을 저장할 수 있습니다 릴리스에서 로드할 수 있습니다. 자세한 내용은 RFC 0020을 참조하세요.
사전 공개
키스킷은 각 마이너 및 메이저 버전 릴리스에 대해 다음과 같은 사전 릴리스를 게시합니다 와 호환되는 PEP440. 일반적으로 형식의 릴리스 후보입니다 X.Y.0rc1. rc 릴리스 는 확정된 API 표면을 가지며 예정된 릴리스를 테스트하는 데 사용됩니다.
PEP440 의 사전 출시 접미사(예: a, b, 또는 pre) 중 하나가
공개될 경우, 이는 정식 출시 rc 버전과 동일한 보장을 제공하지 않으며,
단순히 미리보기 버전일 뿐이라는 점에 유의하시기 바랍니다. 이러한 프리 릴리스 버전과
해당 버전 번호를 가진 정식 릴리스 사이에 API가 변경될 수 있습니다. 예를 들어, 는
최종 버전과는 다른 API를 가질 X.0.0pre1수도 있습니다 X.0.0.
출시 후
릴리스의 패키징에 문제가 있는 경우 이를 수정하기 위해 를 발행하여 이를 수정할 수 있습니다. X.Y.Z.1 형식을 따르며, 여기서 네 번째 정수는 X.Y.Z 릴리스의 첫 번째 사후 릴리스임을 나타냅니다.
예를 들어, 키스킷 테라(키스킷의 레거시 패키지 이름) 0.25.2 릴리스에는 sdist 패키지 게시에 몇 가지 문제가 있었고, 이 문제를 수정한 포스트 릴리스 0.25.2.1 이 문제를 수정한 포스트 릴리스가 게시되었습니다. 코드는 동일했으며 0.25.2.1 릴리스의 패키징 문제만 수정되었습니다.
기여자가 사용 중단을 표시하는 방법
소스 코드에 사용 중단을 추가하는 방법에 대한 지침은 Qiskit SDK 리포지토리에 있는 사용 중단 가이드를 참조하세요.