Show HN: Valores Separados por Vírgula (CSV) para Valores Separados por Unicode (USV)
Visão geral da proposta USV
- USV (Unicode Separated Values) é um formato de texto semelhante a CSV que usa símbolos Unicode de “controle pictórico” como separadores:
- Separadores de unidade, registro, grupo e arquivo (␟ ␞ ␝ ␜).
- Escape e outros modificadores (␛, ␗, ␖).
- Benefícios pretendidos: menos escapes do que CSV, hierarquia explícita de múltiplos níveis (unidade/registro/grupo/arquivo) e sintaxe bem definida com um rascunho do IETF e tipo MIME proposto.
*Comparação com CSV e formatos SV existentes
- Muitos consideram CSV “bom o suficiente”, com enorme suporte no ecossistema (bancos de dados, Excel, ferramentas Unix, bibliotecas).
- Reclamações sobre CSV:
- “Padrão” inconsistente e regras de escape inconsistentes.
- Problemas de localidade (separadores vírgula vs ponto e vírgula, vírgulas decimais).
- Quebras de linha permitidas dentro de campos complicam o parsing.
- Contra-argumento: esses são principalmente problemas de ferramentas/uso indevido; a capacidade de edição humana e a onipresença do CSV superam as falhas.
- Vários observam que os separadores ASV (ASCII 0x1C–0x1F) já existem e resolvem muitos problemas de escape, mas carecem de suporte em editores.
Pictogramas de controle Unicode vs caracteres de controle ASCII
- USV usa os glifos visíveis (U+241C–241F), e não os códigos de controle reais (U+001C–001F).
- Defensores: editores e copiar/colar funcionam de forma mais confiável com símbolos visíveis e de largura de letra.
- Críticos:
- Esses símbolos foram feitos para representar caracteres de controle, não para ser os próprios; isso embaralha a semântica.
- Delimitadores multibyte exigem decodificação antes da separação.
- Os símbolos são pequenos e difíceis de distinguir visualmente; muitos usuários precisariam de fontes customizadas ou ajustes no editor de qualquer forma.
- Alguns acham que a equivalência visual ao ASV renderizado é um defeito de design “fatal”.
Legibilidade, edição e acessibilidade
- Há discordância sobre se o USV é realmente amigável para humanos:
- Alguns relatam que editores comuns (Emacs, etc.) exibem os exemplos bem; outros precisam dar zoom consideravelmente.
- Quebras de linha opcionais na especificação inicialmente geravam arquivos longos em uma única linha, quebrando ferramentas baseadas em linhas; o autor depois atualizou o conversor para inserir quebras de linha.
- Acessibilidade:
- Alega-se que leitores de tela lidam bem com USV; outros testam leitores que não anunciam os símbolos.
Escape, SYN e complexidade do formato
- Existe um mecanismo de escape; críticos argumentam que isso enfraquece a alegação de que “não é necessário escape” e reproduz a complexidade do CSV.
- Preocupações com:
- Regras de escape dependentes de classe.
- Modificadores extras como o heartbeat SYN e “ignorar próximo caractere”, que criam múltiplas codificações em nível de byte para o mesmo documento lógico e complicam checksums e parsers.
- Após feedback, o autor indica que SYN será removido e a documentação será atualizada.
Adoção, padronização e praticidade
- Muitos duvidam que o USV ganhe tração sem suporte do Excel/LibreOffice e de grandes bibliotecas.
- Alguns veem isso como “mais um padrão”, como no famoso quadrinho XKCD; a sugestão é usar em vez disso:
- CSV bem especificado (RFC 4180), TSV, JSON/JSONLines, ou formatos tabulares/binários tipados (Parquet, Avro, SQLite).
- Defensores argumentam que editores e bibliotecas poderiam evoluir, mas os críticos não veem vantagem convincente sobre formatos já existentes de texto ou binários.
Alternativas e ideias relacionadas
- Alternativas mencionadas: ASV, RSV (usando bytes inválidos de UTF-8 como delimitadores), SML, JSONLines, COPY TSV no estilo Postgres, valores separados por emoji e vários esquemas personalizados.
- Vários defendem que melhorar o suporte a separadores ASCII e modos de tabela melhores em editores seria um caminho mais limpo do que introduzir o USV.