Um dos objetivos da equipe do Project Fugu é permitir que os desenvolvedores façam tudo na Web que os apps específicos da plataforma podem fazer. Por isso, a equipe tem se dedicado a adicionar recursos ausentes que os desenvolvedores da Web precisam para preencher essa lacuna. Se você não acredita em mim, basta olhar a seção "Shipped" do rastreador de API do Fugu. Estas são as 55 APIs enviadas, em ordem de envio mais recente para menos recente:
É uma lista longa, e temos mais coisas para fazer. Ainda há algumas APIs e recursos em teste de desenvolvedor (ou seja, implementados, mas com uma flag de recurso), alguns que iniciamos a trabalhar e muitos em consideração. Como você pode ver, ainda não é hora de relaxar e dizer que terminamos.
Métodos de arquivo síncronos para o sistema de arquivos particular de origem
Pelo contrário, em vez de declarar nosso esforço como concluído, estamos apenas
começando. Por exemplo, considere o gráfico abaixo, que mostra o
crescimento relativo do uso
do método
navigator.storage.getDirectory()
,
usado como ponto de entrada para o sistema de arquivos particular de origem (OPFS, na sigla em inglês). Esse método é usado, por
exemplo, para
necessidades de
armazenamento de alto desempenho do Photoshop, e a comunidade de armazenamento está
muito interessada
desde o início da descontinuação do Web SQL e até antes.
Agora que mais pessoas usam o OPFS, outros requisitos surgiram. Por exemplo, a necessidade de um conjunto totalmente síncrono de métodos de arquivo em um contexto de worker (consulte whatwg/fs#7 para mais detalhes). Embora as novas APIs da Web sejam geralmente assíncronas, ter métodos síncronos tornaria o trabalho com o OPFS muito mais simples em um contexto Wasm. Como isso está acontecendo em um worker, a linha de execução principal não pode ser bloqueada.
Melhorias de privacidade para as APIs de hardware
Outro exemplo são as APIs de hardware que permitem a conexão com dispositivos HID, seriais, USB, Bluetooth e NFC. Embora algumas
dessas APIs existam há algum tempo, até recentemente não havia como esquecer um dispositivo
que você já tinha conectado. Agora há, graças aos
métodos forget()
para algumas das APIs. Por
exemplo, confira como esquecer um dispositivo serial conectado anteriormente, o que melhora a privacidade da
API.
// Request a serial port.
const port = await navigator.serial.requestPort();
// Then later revoke permission to the serial port.
await port.forget();
Refinamentos para a API Multi-Screen Window Placement
Um exemplo final é a
API Multi-Screen Window Placement, em que, com base no
feedback dos desenvolvedores, os rótulos de tela genéricos anteriores, como "Internal Display 1"
, foram substituídos
por rótulos mais significativos, como "Built-in Retina Display"
, para que os usuários possam associar
esses rótulos com mais facilidade às telas da configuração multitela.
Conclusões
Como você pode ver nesses três exemplos, o Projeto Fugu está longe de terminar. Continue ou comece a usar nossas APIs e envie feedback. Como todas as especificações do Fugu são desenvolvidas abertamente no GitHub, você pode registrar um problema de especificação no repositório correspondente do GitHub ou adicionar suas ideias a um problema existente. Se você encontrar um bug na implementação do Chrome ou descobrir que ela é diferente da especificação, registre um bug em new.crbug.com. Inclua o máximo de detalhes possível e forneça instruções simples para reproduzir o problema.
E, se você está preocupado com o suporte do navegador, muitas APIs do Fugu são ótimas melhorias progressivas. Consulte meu artigo SVGcode: um PWA para converter imagens raster em gráficos vetoriais SVG para inspiração. Também não consideramos nosso trabalho concluído até que essas APIs sejam interoperáveis. Vamos continuar pressionando para que outras empresas de navegadores façam a padronização, os testes e a adoção.