1 pontos por GN⁺ 2024-09-01 | 1 comentários | Compartilhar no WhatsApp
  • A atualização de agosto de 2024 do Servo cobre amplamente desde recursos do motor web até o navegador servoshell, qualidade no Windows, ferramentas de desenvolvimento e estabilidade de CI
  • As builds Nightly passaram a incluir HTMLDialogElement.show(), renderização de entrada em <textarea>, border-image, structuredClone(), crypto.randomUUID(), reprodução de WAV, IIRFilterNode do Web Audio e navegação com cross-origin redirect
  • Os componentes principais foram atualizados para SpiderMonkey 128, WebRender 0.65, wgpu 22.0 e Rust 1.80.1, e WebXR e flexbox passaram a vir ativados por padrão
  • O servoshell ganhou navegação por abas e uma nova barra de ferramentas e página de nova aba, enquanto no Windows foram melhorados problemas relacionados a navegação por teclado, saída PNG, fontes e GPU
  • Com um novo runner de CI, o tempo de build exclusivo para Windows foi reduzido em 70%, e também foram corrigidos vários crashes que aconteciam em sites reais e erros BorrowError ligados ao GC do SpiderMonkey

Adição de recursos da plataforma web

  • Várias Web APIs e funcionalidades de CSS foram entrando gradualmente nas builds nightly do Servo
    • 2024-07-27: suporte básico a show() de HTMLDialogElement
    • 2024-07-29: propriedade type de HTMLFieldSetElement
    • 2024-07-31: renderização do texto digitado em <textarea>
    • 2024-07-31: propriedade CSS border-image
    • 2024-08-02: fontes CSP unsafe-eval, wasm-unsafe-eval
    • 2024-08-04: reprodução de arquivos de áudio WAV
    • 2024-08-09: API structuredClone()
    • 2024-08-12: IIRFilterNode do Web Audio
    • 2024-08-13: navegação com cross-origin redirect
    • 2024-08-23: API crypto.randomUUID()
    • 2024-08-29: propriedade CSS clip-path
      • exceto os valores path(), polygon(), shape() e url()

Mudanças nos componentes do motor e no comportamento padrão

  • O Servo atualizou seus principais componentes de dependência para versões mais recentes
    • SpiderMonkey 128

    • WebRender 0.65

    • wgpu 22.0

      • Rust 1.80.1
      • WebXR e flexbox passaram a vir ativados por padrão
      • Web APIs que retornam Promise agora fazem reject corretamente em caso de falha, em vez de lançar exceções

Melhorias em WebXR e flexbox

  • A API WebXR foi retrabalhada em várias interfaces e recursos de entrada para acompanhar a ativação por padrão
    • Foi adicionado suporte a Gamepad
    • Houve atualizações relacionadas a hand input, XRBoundedReferenceSpace, XRFrame, XRInputSource, XRPose, XRSession, XRTargetRayMode, XRView, XRWebGLLayer
    • makeXRCompatible() agora pode ser chamado não só em WebGLRenderingContext, mas também em WebGL2RenderingContext
  • O flexbox recebeu reforços em recursos de layout muito usados
    • propriedade gap
    • align-content: stretch
    • valores start e end de align-items e align-self
    • suporte básico a flex-direction: column e column-reverse
  • O cálculo de posicionamento e tamanho dos flex items também ficou mais preciso
    • position: relative passou a ser suportado em flex items
    • z-index de flex items sempre cria um stacking context
    • intrinsic size correto passou a ser aplicado a flex items e flex containers
  • O trabalho de suporte a texto bidirecional está em andamento
    • inclui mudanças na arquitetura da fragment tree e trabalho na interface writing-mode
    • as propriedades unicode-bidi e dir têm suporte parcial
    • o valor dir=auto ainda não é suportado

Navegador servoshell e qualidade no Windows

  • O Servo-the-browser recebeu nova barra de ferramentas e navegação por abas
  • A nova página de aba usa uma nova API que permite ao embedder do Servo registrar um custom protocol handler
  • A qualidade de execução no Windows também melhorou em várias áreas
    • a navegação por teclado foi corrigida
    • o comportamento de saída PNG de --output foi corrigido
    • bugs relacionados a fontes e GPU foram corrigidos
  • As correções ligadas ao Windows estão associadas a problemas em que glifos ficavam desalinhados e cores saíam erradas em servo.org e duckduckgo.com, e imagens apareciam quebradas em wikipedia.org

Ferramentas de desenvolvimento e fluxo de trabalho para desenvolvedores

  • O suporte a devtools ganhou mais recursos após o trabalho do último mês do projeto de estágio
    • o Servo agora oferece suporte a HTML tree
    • oferece suporte aos painéis Styles e Computed
  • No macOS, o processo de executar o servoshell logo após a build ficou alguns segundos mais rápido
  • No CI, o clippy agora roda em um job dedicado de linting, separado do tidy check existente
  • Graças a doações, foi adicionado um novo runner de CI para builds no Windows, e o tempo de build apenas no Windows caiu 70%
  • Um novo runner para builds Linux também deve ser adicionado em breve, e os builds de teste WPT deverão ficar mais rápidos
  • Está em andamento uma triage meeting para investigar issues do GitHub, e a próxima Servo issue triage meeting acontecerá em 2 de setembro às 10:00 UTC

Melhorias de estabilidade do motor

  • Em agosto, muitos bugs de crash que aconteciam em sites reais foram corrigidos
  • Casos importantes de correção abrangem renderização, reflow e comportamento do parser HTML
    • crash que ocorria durante a renderização de float perto de tabelas na HTML spec
    • crash causado por reflow explícito desnecessário em w3schools.com
    • tornar o parser HTML reentrante corrigiu crashes em vários sites, como kilonova.ro e tweakers.net
  • Além disso, houve redução de crashes em caminhos de plataforma, API e parsing
    • crash ao redimensionar a janela durante uso de WebGL no macOS
    • crash ao renderizar texto com grapheme clusters muito longos
    • crash ao renderizar o caractere tab em certas fontes
    • crash do parser após chamada de window.stop()
    • crash ao passar alguns valores para console.log()
    • crash ao fazer parsing de certos valores de <img srcset>
    • crash ao fazer parsing de certos valores de cabeçalhos HTTP
    • crash ao definir window.opener em determinadas situações
    • crash ao remover um iframe do documento
    • crash ao chamar new AudioContext() com opções não suportadas
    • crash intermitente em WRSceneBuilder durante o encerramento do Servo
  • Foram corrigidos vários crashes de BorrowError que aconteciam no GC do SpiderMonkey
  • Está em andamento um trabalho para impedir esse tipo de bug com análise estática
  • O objeto DOM Window não vaza mais durante a navegação
  • No Unix, o servoshell agora encerra de forma anormal em caso de panic, permitindo que testes web registrem corretamente o resultado como “CRASH”

Situação das doações

  • O Servo recebe atualmente US$ 3.077 por mês em doações recorrentes, um aumento de 4,1% em relação a julho
  • Isso inclui 12 doações via LFX, mas o Servo em breve deixará de aceitar doações pelo LFX
  • As doações recorrentes devem ser migradas para GitHub Sponsors ou Open Collective
  • O Servo também está cadastrado no thanks.dev, e 3 organizações no GitHub que dependem do Servo já estão patrocinando
  • Se você usa bibliotecas do Servo como url, html5ever, selectors e cssparser, pode contribuir com a comunidade via thanks.dev
  • O uso dos recursos é decidido de forma transparente pelo Technical Steering Committee, e mais detalhes estão na Sponsorship page

1 comentários

 
GN⁺ 2024-09-01
Comentários no Hacker News
  • Fico surpreso com o volume de patrocínio ser tão pequeno. Fico me perguntando se estão contabilizando apenas doações de pessoas físicas terceiras, fora grandes organizações.
    Vendo tanta gente dizendo em voz alta que os navegadores web foram dominados pelo Google por meio do chrom(ium)e, imaginei que mais pessoas ou empresas teriam interesse em fazer um concorrente surgir mais rápido.

    • Talvez exista algo como a tragédia dos comuns, em que ninguém acha que é sua responsabilidade financiar esse tipo de trabalho.
      Também havia a percepção de que criar um navegador completamente novo, com uma engine nova do zero, não era realista, então talvez tenha existido um clima de "por que eu patrocinaria isso?". Felizmente, talvez o Ladybird tenha mudado isso.
    • Acho que uma boa parte das pessoas que falam alto não é composta por gente com muito dinheiro. E talvez nem por organizações que tenham esse dinheiro.
      Além disso, algumas organizações que têm esse dinheiro já desistiram. A Microsoft, que mudou o Edge para Chromium alguns anos atrás, é um exemplo. E muita gente provavelmente preferiria doar para o Firefox, a alternativa estabelecida ao Chromium, embora na prática também seja bem difícil doar especificamente para o desenvolvimento do Firefox.
    • Carroça vazia faz barulho. Falar sobre um tema é barato; dedicar tempo ou dinheiro à causa, não.
    • É meio triste. Só o HN, se cada um doasse 5 dólares por mês, provavelmente conseguiria atingir a meta.
      A maioria das pessoas aqui parece apenas reclamar do estado terrível da web e, na prática, não fazer nada.
  • Vamos mostrar números fortes, pessoal.
    A comunidade do HN conseguiria facilmente passar de 100 mil dólares em um dia. Agora que apareceu um navegador novo que dá para realmente esperar algo, vamos fazer isso acontecer.

    • Espero mesmo que mostrem apoio com doações também. Se todos os usuários ativos do HN doassem só 10 dólares, já seria uma quantia enorme.
  • É interessante ver que o Servo continua vivo. Estou torcendo.

    • Concordo. Ainda há um longo caminho até ele se tornar uma alternativa real aos outros navegadores e engines.
      Mesmo assim, acho bom haver um esforço sério para desenvolver navegadores e engines alternativos. O navegador Ladybird está muito mais longe de virar um produto maduro, mas é um projeto cuja simples existência já é bem-vinda.
    • Além de torcer, vamos doar também :)
  • Peguei as mudanças mais recentes e, ao olhar a nova aba, fiquei surpreso ao ver que agora há suporte a RTL. Algumas semanas atrás não havia suporte.
    O PR mesclado está aqui: https://github.com/servo/servo/pull/33148

  • O Servo não tinha sido abandonado?

    • A Mozilla abandonou, mas, segundo a Wikipedia, a Linux Foundation assumiu o projeto.