Resumo
- Bootstring copiava os pontos ASCII básicos e representava cada ponto não básico por um delta que reunia distância numérica e posição de inserção.
- Inteiros autodelimitados e viés adaptativo tornavam a representação única e reversível. Não traduziam, normalizavam nem comprovavam validade IDNA, registro ou identidade.
A cauda de Punycode parece opaca porque não foi feita para leitura humana. O decodificador começa com os caracteres que já cabem em ASCII e insere os demais nas lacunas exatas. O resultado é uma sequência reconstruída, não uma interpretação da língua.
Primeiro, Bootstring separa os pontos básicos. Eles são copiados ao início na ordem relativa original e, se houver algum, recebem um delimitador depois. Em Punycode, o conjunto básico é ASCII e o delimitador é o hífen. A parte literal é apenas o trecho que dispensa codificação.
A cauda descreve o restante. O decodificador mantém n, valor candidato de ponto de código, e i, posição candidata na saída crescente. O estado percorre todas as lacunas; no fim, i volta a zero e n aumenta. Um delta conta quantos estados sem inserção passam antes de colocar o n atual no i atual.
Um só inteiro carrega distância no espaço de códigos e posição na cadeia. O codificador trata os pontos não básicos em ordem numérica, geralmente reduzindo distâncias consecutivas, e calcula deltas que forçam a recuperação da ordem original. Não precisa anexar uma tabela de posições.
Como os deltas são concatenados, Bootstring usa inteiros generalizados de comprimento variável. Um limiar em cada dígito diz quando parar; exatamente um dígito final fica abaixo do limiar. A ordem little-endian permite separar valores desde a frente e oferece uma representação única para cada inteiro não negativo.
Depois de cada delta, um bias adapta os limiares. O primeiro salto recebe amortecimento forte; os seguintes consideram o tamanho atual da saída. O delta recente sugere a provável magnitude do próximo. Não há inteligência linguística, apenas previsão aritmética local.
Punycode fixa base 36, letras para zero a 25, algarismos para 26 a 35, n inicial 128 e viés inicial 72. Os parâmetros alteram eficiência, não correção, se respeitam as condições. A implementação também detecta overflow; a demonstração de largura suficiente para rótulos IDNA não autoriza aritmética sem verificação em geral.
A unicidade impede que a mesma sequência Unicode tenha várias formas ASCII sob autoridades DNS diferentes. Mas não decide se sequências Unicode distintas significam o mesmo texto para uma língua ou normalização. Punycode recebe a sequência selecionada e conserva sua distinção.
RFC 3490 colocou Punycode em IDNA; IDNA2008 manteve A-labels Punycode enquanto substituía regras ao redor. É a especificação inicial mínima de Heng Lu em funcionamento: um mecanismo estreito permanece estável, e escolhas de caracteres, mapeamento e política evoluem em camadas próprias.
Entrada, preparação, prefixo literal, deltas, reconstrução, admissão, registro, resposta DNS e identidade são recibos diferentes. Punycode liga apenas a sequência à sua representação ASCII. Sua precisão não concede autoridade sobre os demais fatos.
Fontes
- RFC 3492
- Texto da RFC 3492
- Registro no RFC Editor
- Registro no IETF Datatracker
- Histórico no IETF
- Erratas da RFC 3492
- RFC 3490
- RFC 3491
- RFC 3454
- RFC 5890
- RFC 5891
- RFC 5892
- RFC 5894
- RFC 5895
- RFC 1034
- RFC 1035
- Repositório IANA de práticas IDN
- Unicode Technical Standard #46
- Heng Lu sobre especificação inicial mínima
- Heng Lu sobre camadas da realidade
Briefing para membros
Contexto aprofundado do perfil
Faça login com o nível de assinatura correto para desbloquear o briefing completo e as notas das fontes.
Apenas para Strategic Circle
Strategic Circle
Aberto a todos os leitores. Desbloqueie Briefings de perfil após se inscrever e fazer login.
Junte-se ao Strategic CircleSomente para Leadership Alliance
Leadership Alliance
Para proprietários e gestores qualificados de ativos de PI; faça login para desbloquear os briefings da Leadership Alliance.
Junte-se ao Leadership Alliance
