llama.cpp·ggml v1.0.0 공개…공개 API 깨는 변경은 주 버전으로 표시
ggml-org 팀은 11월 13일 llama.cpp의 추론 라이브러리 libllama와 ggml의 텐서 연산 라이브러리 libggml v1.0.0을 공개했습니다. 공개 C API의 호환성을 깨는 변경은 주 버전으로 표시해, 두 라이브러리를 사용하는 하위 앱 개발자가 변경 범위를 파악하도록 하겠다고 밝혔습니다. 야간 개발 빌드의 b번호와 공식 릴리스의 vX.Y.Z는 별도 표기입니다.

ggml-org 팀은 11월 13일 llama.cpp와 ggml의 라이브러리 v1.0.0을 공개했습니다. 앞으로 API와 ABI의 호환성을 깨는 변경을 주 버전 상승으로 표시하겠다고 밝혔습니다. libllama는 C/C++로 대형 언어 모델 추론을 제공하고, libggml은 머신러닝용 텐서 연산을 처리하는 라이브러리입니다. 다른 프로그램이 이 라이브러리들을 직접 연결해 쓰기 때문에, 버전 표시는 업데이트가 기존 프로그램과의 호환성에 영향을 주는지 가늠하는 기준이 됩니다.
API는 프로그램이 라이브러리 기능을 부르는 공개 함수와 사용 방식입니다. ABI는 컴파일된 프로그램과 라이브러리가 바이너리 수준에서 연결되는 방식입니다. 발표문은 API·ABI 비호환 변경을 주 버전으로 표시한다고 밝혔고, 세부 규칙표는 주 버전 상승 기준을 ./include에 있는 공개 C API의 호환성을 깨는 변경으로 설명합니다.
세 숫자로 이루어진 vX.Y.Z 버전에서 첫 번째인 주 버전은 공개 C API의 호환성이 깨질 때 올립니다. 두 번째인 부 버전은 기존 이용 방식을 유지하는 기능 추가, 백엔드 업데이트, 모델 지원, API 추가에 쓰고, 마지막 패치 버전은 API를 바꾸지 않는 버그 수정을 나타냅니다. 이 규칙은 하위 프로그램 개발자가 라이브러리 변경의 범위를 버전 숫자로 파악하도록 하려는 것입니다.
야간 개발 빌드와 공식 릴리스는 별도 표기 체계를 씁니다. ggml-org의 배포 설명에 따르면 master 브랜치에서 만드는 야간 빌드는 커밋 번호 앞에 b를 붙이고, 공식 릴리스는 vX.Y.Z 형식을 사용합니다. 두 표기는 각각 개발 빌드와 공식 릴리스를 가리킵니다.
v1.0.0 릴리스 설명에는 공개 헤더 llama.h에서 폐기 예정 함수 35개와 llama_set_warmup 등을 제거한 내용이 담겼습니다. 추측 디코딩에 쓰이는 NextN API를 llama-ext.h에서 공개 헤더 llama.h로 옮긴 변경도 포함됐습니다. 라이브러리의 공개 C API를 바꾸는 변경이 주 버전 상승 규칙에 해당하는 사례입니다.
공개 규칙표가 명시한 주 버전 기준은 ./include의 공개 C API 변경입니다. CLI 옵션이나 서버의 REST API 변경에 어떤 버전을 적용할지는 이 표에 별도 기준이 없습니다. 이번 발표가 구체적으로 정한 범위는 하위 프로그램이 직접 연결해 쓰는 라이브러리 API의 호환성 변경입니다.