Pular para o conteúdo

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ça0.x1.x em diante
quebra0.4 → 0.51.4 → 2.0
acréscimo0.4.2 → 0.4.31.4 → 1.5
correção0.4.2 → 0.4.31.4.2 → 1.4.3