API de Tipos Baseada em Pointers de Função
Os tipos personalizados do Protocol 1 são registrados usando pointers de função explícitos em vez do templatevsql::make_type<>. As assinaturas das funções diferem das equivalentes do Protocol 3 — elas recebem pointers brutos e comprimentos em vez de objetos Arg e Result.
Assinaturas de Funções
Registro
vsql::make_type<kMyTypeName>() (com um NTTP de string em tempo de compilação) é a forma preferida. make_type(MYTYPE) (sem parâmetro de template) é a forma do Protocol 1 — o suporte a ela será removido após a 0.0.5.
Estilo de ABI Bruta (Funções)
As implementações de VDF do Protocol 1 podem passar as structs C brutas diretamente em vez de usar wrappers tipados. Este estilo será removido após a 0.0.5 — use a API tipada de argumento/resultado para todo código novo.Constantes de Resultado
A ABI bruta comunica o estado do resultado por meio devef_return_value_type_t definido em result->type:
No Protocol 3,
out.set(), out.set_null(), out.warning() e out.error() tratam disso automaticamente.
Registro de Agregados no Protocol 1
Para agregados,.clear<>() e .accumulate<>() aceitam assinaturas de pointers de função de ABI bruta. .prerun<>() e .postrun<>() não aceitam — o construtor exige assinaturas tipadas (void(PrerunArgs, PrerunResult) e void(PostrunArgs)) mesmo para extensões do Protocol 1. Use a abordagem tipada de agregados para todo código novo.

