llama.cpp přidal k nočním sestavením verze 0.1.x, postup je zatím rozdělaný
llama.cpp má od 17. srpna vedle nočních značek s písmenem b i značky v0.1.0 až v0.1.2. Nová značka vznikne jen tehdy, když se soubory jeho vnitřní kopie knihovny ggml shodují s vydanou verzí té knihovny; jinak se vydání přeruší chybou. Stránku vydání má z těch tří značek jen v0.1.2 a je označená jako předběžná.

Vydání llama.cpp se dosud poznávalo jediným číslem. Značka jako b10485 nese pořadové číslo commitu a víc se z ní nedozvíte – ani jestli se změnilo veřejné rozhraní knihovny, ani jestli šlo o opravu chyby. Že se takové číslo špatně používá jako údaj o verzi, ukázala jedna kritická díra, u které se dva veřejné záznamy rozešly o 501 sestavení.
Od 17. srpna 2026 má projekt druhou řadu značek: v0.1.0, v0.1.1 a v0.1.2.
Tři značky za dva dny
Podle rozhraní GitHubu vznikla značka v0.1.0 17. srpna v 9:08 UTC, v0.1.1 téhož dne ve 14:08 a v0.1.2 o den později v 10:23. Sám mechanismus přišel do repozitáře dřív, návrhem změny číslo 26839 z 12. srpna, se kterým se přidal i popis celého postupu do souboru docs/release.md.
Ten popisuje, kdy se která část čísla zvedá: první při nekompatibilní změně veřejného rozhraní v souboru include/llama.h, druhá u zpětně slučitelných funkcí, podpory nových modelů a přidaného rozhraní, třetí u opravy, která rozhraní nemění. Číslo se nastavuje ručně ve třech proměnných na začátku kořenového souboru CMakeLists.txt a dokumentace žádá, aby se jeho zvýšení posílalo rovnou s tou změnou, která ho vyvolala, případně zvláštním commitem před vydáním.
Značka vznikne jen tehdy, když sedí knihovna ggml
llama.cpp si v sobě nese vlastní kopii tenzorové knihovny ggml a ta se od samostatně vydané knihovny může lišit. Právě kvůli tomu má vydávací postup čtyři kontroly, které jsou k přečtení ve skriptu make-release-checks.sh:
- commit musí patřit do vydávané větve a nesmí být od jejího posledního commitu starší než tři dny;
- značka se stejným číslem nesmí na vzdáleném repozitáři existovat;
- pro ten commit musí být hotové úspěšné noční sestavení;
- adresáře
ggml/srcaggml/includea souborggml/CMakeLists.txtse musí shodovat se stejně očíslovanou značkou v samostatném repozitáři ggml. Skript si ho kvůli tomu naklonuje a porovná; při rozdílu vydání skončí chybou.
Na datech je ta podmínka vidět. Knihovna ggml vydala 0.20.1 17. srpna v 6:45 UTC a llama.cpp dostal značku v0.1.0 o něco přes dvě hodiny později; jeho vnitřní kopie ggml má v tom commitu právě číslo 0.20.1. Verze 0.20.2 vyšla 18. srpna v 8:55 a značka v0.1.2 je z 10:23, s kopií ggml 0.20.2. Čísla té kopie jsme si přečetli přímo v souboru ggml/CMakeLists.txt u obou commitů.
Důvod jsou distribuce, ne uživatelé
Proč se to vůbec zavádí, když čísla sestavení fungovala, vysvětluje přehled vydávání projektů ggml-org, který v repozitáři ggml sepsal správce projektu. Noční sestavení se staví z hlavní větve s volbou LLAMA_BUILD_IS_DEV zapnutou a značí se písmenem b s číslem commitu; oficiální vydání se staví s toutéž volbou vypnutou. Podmínka na shodu s vydanou ggml je tam popsaná jako záruka pro toho, kdo llama.cpp staví ze značky vydání a linkuje ho proti knihovně nainstalované v systému.
Přesně to dnes dělá Homebrew i Debian: jejich balíček llama.cpp se linkuje proti systémové ggml. Winget a stránka llama.app naopak kopii balí s sebou a zveřejňují noční sestavení. Tentýž dokument u Homebrew zároveň nechává otevřenou otázku, jak má správce balíků poznat, kterou verzi ggml llama.cpp potřebuje – podle něj to zatím vypadá tak, že se nainstaluje nejnovější ggml, která s nejnovějším llama.cpp nemusí být slučitelná.
Čísla v balíčcích dnes
Jak to vypadá v praxi, se dá přečíst z veřejných výpisů. Formule Homebrew pro llama.cpp má verzi 10470 a míří na značku b10470, tedy na commit 34af94cd9 – a na tom samém commitu visí i značka v0.1.1. Vnitřní kopie ggml je v něm 0.20.1, kdežto formule ggml je na 0.20.2.
V Debianu je odstup větší. Ve větvi sid je llama.cpp jako 10438+dfsg-1 a ggml jako 0.20.2-1, přičemž vnitřní kopie ggml v sestavení 10438 má číslo 0.20.0. Ve větvi forky jsou to 10271+dfsg-1 a 0.18.1-1. Čísla balíčků jsou z výpisu na sources.debian.org, čísla vnitřní kopie z konfigurace v příslušných commitech. Jestli ta kombinace někde vadí, se z nich nepozná; dokument mluví jen o tom, že slučitelná být nemusí.
Pro domácí stavbu se zatím nemění nic
Binárky zůstávají tam, kde byly. Vydání v0.1.2 nemá připojený ani jeden soubor a jeho stránka jen odkazuje na noční sestavení b10485, což je tentýž commit. Kdo si llama.cpp staví ze zdrojů, dostane ve výchozím nastavení verzi 0.1.2-dev, protože volba LLAMA_BUILD_IS_DEV je zapnutá; čisté 0.1.2 vyjde až po jejím vypnutí, což dokumentace žádá po distributorech stavějících ze značky vydání. K vydaným verzím se podle ní dá dostat trojí cestou: skriptem llama-install.sh, přes správce balíků, nebo stažením značky ze zdrojů.
Dokumentace je o krok pozadu
Soubor docs/release.md, do kterého se naposledy sahalo 17. srpna, pořád tvrdí, že se žádná stránka vydání na GitHubu nevytváří a že vydaným artefaktem je samotná značka. Stránku přidal až návrh změny číslo 27302 z 18. srpna, který v ní rovnou zapsal příznak předběžného vydání natvrdo a k němu poznámku, že se má odstranit, až bude postup hotový. Stránku vydání proto z těch tří značek má jen v0.1.2; u starších dvou vrací rozhraní GitHubu samotnou značku bez ní. Přehled v repozitáři ggml zase u llama.cpp uvádí, že sémantické verzování zavedené ještě není – v době, kdy jsou venku tři značky.