Pular para o conteúdo

O que mudou na rc.6

A Pop 0.1.0-rc.6 é uma candidata muito mais ampla que a rc.3. A superfície da linguagem continua estática e inspirada no Luau, mas a base utilizável agora alcança coleções, texto, bytes, tempo, arquivos, terminal, fatos da plataforma e rede.

A base reservada Pop.Standard agora inclui estas famílias voltadas ao usuário:

Família APIs representativas
Pop.Sequence map, filter, take, drop, fold, collect, first, last, findOr, sort, reverse
Pop.Math min, max, abs, sign, gcd, lcm, coprime, potência e divisão inteira verificadas
Pop.Text e Pop.Unicode busca, fatias, trimming, substituição, divisão, junção, parsing de inteiros e inspeção de Rune
Pop.Bytes views, Bytes.Buffer reutilizável, hex/base32/base64, bits, comparação e leituras/escritas endian
Pop.Time datas, relógios, date-times civis, offsets, deadlines e relógios de teste determinísticos
Pop.Net endereços, prefixos, TCP/UDP, DNS, streams Unix, transferências limitadas e fatos de rede
Pop.File e Pop.Directory capacidades explícitas de host, leituras/escritas limitadas, texto e snapshots de diretório
Pop.Terminal, Pop.Process, Pop.Platform controles de saída, executável/argumentos e fatos de sistema/arquitetura
Pop.Random, Pop.Uri, Pop.Version, Pop.Locale, Pop.Mime, Pop.Guid, Pop.Csv, Pop.Path parsers tipados e valores determinísticos

Esses são namespaces e funções tipados, não busca dinâmica de membros. Custo, alocação, capacidade e falhas fazem parte de cada contrato. Consulte o mapa da API Standard e os ponteiros para a fonte/baseline.

String agora é exatamente Iterable<Rune>:

namespace CountLetters
function main()
local count = 0
for rune in "Pop 🫧" do
if Unicode.isAsciiLetter(rune) then
count += 1
end
end
print(count)
end

O loop decodifica cada escalar Unicode uma vez. Text.View continua sendo uma view emprestada e não iterável nesta versão.

O driver agora separa os fluxos de arquivo e de manifesto para check, fix, lint, format, build, documentation, run, test e benchmark, além de new, initialize, ffi generate e do transpiler C experimental. Comandos de manifesto usam --manifestPath bubble.toml; format também aceita --check. Consulte a referência da linha de comando.

Packages resolvem grafos locais e bloqueados de Bubbles, compilam seleções de biblioteca/binário/teste/benchmark, emitem documentação e metadados .poplib e preservam Item → Module → Bubble → Package → Workspace.

TCP e UDP usam streams tipados, transferências limitadas de bytes, deadlines, cancelamento e resultados explícitos. Pop.Http é um Package separado e versionado para valores de requisição/resposta HTTP/1.1; ele não é incorporado ao Bubble Standard reservado. O exemplo HTTP é um Bubble normal com dependência em examples/httpServer/.

A rc.6 ainda é uma candidata. LLVM/nativo é o backend entregue ativamente. O interpretador MIR é uma ferramenta interna de conformidade, e o backend C é experimental e limitado por capacidades. Reflexão em runtime, valores dinâmicos, exceções capturáveis e I/O implícito de host continuam fora da linguagem.