Antes do 1.0
O 0.x anuncia que a API ainda não assentou: quebra sobe o menor, acréscimo sobe a correção.
Pelo versionamento semântico, qualquer coisa pode mudar antes do 1.0. Na prática, os gerenciadores de pacote (Cargo, npm) tratam o 0.x com uma regra própria: o menor faz o papel do maior. ^0.4.2 aceita 0.4.9, mas não 0.5.0. Abi.proxima_versao segue a mesma convenção:
dataforge
adopt Arcane.Abi as Abi
adopt Arcane.IO as IO
adopt Arcane.OS as OS
pasta := $"{OS.temp_dir()}/df-abi-{randint(100000, 999999)}"
IO.mkdir(pasta)
antes := $"{pasta}/v1.df"
IO.write(antes, "action somar(a, b):\n yield a + b\naction dobro(x):\n yield x * 2\nrelay somar, dobro\n")
quebra := $"{pasta}/quebra.df"
IO.write(quebra, "action somar(a, b):\n yield a + b\nrelay somar\n")
assert Abi.proxima_versao("0.4.2", antes, quebra)["proxima"] is "0.5.0" // não 1.0.0
assert Abi.proxima_versao("0.4.2", antes, antes)["proxima"] is "0.4.3"
IO.remove_tree(pasta)| Mudança | 0.x | 1.x em diante |
|---|---|---|
| quebra | 0.4 → 0.5 | 1.4 → 2.0 |
| acréscimo | 0.4.2 → 0.4.3 | 1.4 → 1.5 |
| correção | 0.4.2 → 0.4.3 | 1.4.2 → 1.4.3 |