Renomear sem quebrar
relay novo as antigo — o nome novo e o velho, o mesmo objeto, e o abi dizendo que é compatível.
Renomear uma ação pública quebra todo programa que chama o nome antigo — no dia em que ele atualiza. relay novo as antigo exporta o mesmo objeto com os dois nomes: quem usa o antigo continua funcionando, e o código novo já usa o nome certo.
precos.df
// precos.df — a versao 2
action total_com_imposto(valor):
yield valor * 1.1
// Os dois nomes saem; o antigo e so um apelido.
relay total_com_imposto, total_com_imposto as totalmain.df
adopt ./precos as P
assert P.total is P.total_com_imposto // o MESMO objeto
out P.total(100)O `abi` concorda#
text
$ dataforge abi v1/precos.df v2/precos.df
+ total_com_imposto [simbolo-novo]
veredito: versao MENOR — so acrescimos compativeis
$ # sem o apelido, o mesmo rename:
- total [simbolo-removido]
veredito: versao MAIOR| Forma | Efeito |
|---|---|
relay a | a sai com o próprio nome |
relay a as b | só b sai — a fica interno |
relay a, a as b | os dois saem, e são o mesmo objeto |
relay a as b, c as b | recusado: um nome exportado duas vezes |