Com um dos objetivos da equipe do Projeto Fugu sendo possibilitar que os desenvolvedores façam na Web o que os apps específicos da plataforma fazem, a equipe está ocupada adicionando os recursos ausentes que os desenvolvedores da Web necessários para preencher essa lacuna do app. Se você não acreditar em mim, basta consultar a seção "Shipped" (link em inglês) do rastreador da API Fugu. Aqui estão as 55 APIs enviadas, do menos para o mais recente:
É uma lista longa, e temos mais opções para nós. Ainda existem algumas APIs e recursos no teste para desenvolvedores (ou seja, implementadas, mas por trás de uma sinalização de recurso), em que começamos a trabalhar e muitos estão em consideração. Como você pode ver, não é hora de relaxar e dizer que terminamos.
Métodos de arquivos síncronos para o sistema de arquivos particular de origem
Na verdade, em vez de declarar nosso esforço como concluído, estamos apenas começando. Por exemplo, considere o gráfico abaixo que mostra o
aumento do uso relativo
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 as necessidades de
armazenamento de alto desempenho do Photoshop
e que a comunidade de armazenamento tem
muito interesse
desde a descontinuação do Web SQL e até mesmo antes.
Agora que mais pessoas usam o OPFS, surgiram outros requisitos. 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 segundo plano). Embora as novas APIs da Web geralmente sejam assíncronas, ter métodos síncronos tornaria muito o trabalho com o OPFS muito mais simples em um contexto do 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 a dispositivos
HID, serial, USB, Bluetooth e NFC. Embora algumas
dessas APIs já existam há algum tempo, até recentemente não havia como esquecer um dispositivo ao qual você
estava conectado. Agora isso pode acontecer graças aos métodos
forget()
para algumas APIs. Por
exemplo, veja 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 do desenvolvedor, os rótulos de tela anteriormente genéricos, como "Internal Display 1"
, foram substituídos
por rótulos mais significativos, como "Built-in Retina Display"
, para que os usuários possam associá-los mais facilmente
às telas da configuração de várias telas.
Conclusões
Como você pode ver apenas nesses três exemplos, o Projeto Fugu está longe de ser concluído. Continue ou comece a usar nossas APIs e envie feedback. Como todas as especificações do Fugu são desenvolvidas abertamente no GitHub, é possível registrar um problema de especificação no repositório correspondente do GitHub ou adicionar suas ideias a um problema já existente. Se você encontrar um bug na implementação do Chrome ou descobrir que a implementação é 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 reprodução.
Se você tiver preocupações sobre o suporte a navegadores, muitas APIs Fugu são ótimas para melhorias progressivas. Consulte meu artigo SVGcode: um PWA para converter imagens rasterizadas em gráficos vetoriais SVG para se inspirar. Também não consideramos nosso trabalho feito até que essas APIs sejam interoperáveis, e continuaremos promovendo ainda mais a padronização, os testes e a adoção por outros navegadores.