Executando verificação de segurança...
2

Tem alguma diferença técnica do Native php com a sua solução pra esse problema? começei a estudar um pouco com o laravel e queria tenta montar algo com o desktop

Carregando publicação patrocinada...
2

Boa pergunta! As duas resolvem o mesmo problema mas de formas diferentes.

O NativePHP empacota um binário PHP compilado nativamente pra cada plataforma, e usa Electron como shell o que resulta em apps mais pesados (~150MB) mas com acesso total ao PHP nativo, incluindo extensões.

O NativeBlade roda o PHP dentro de WebAssembly, empacotado num shell Tauri em Rust o binário fica bem menor (~15MB), funciona em Windows, macOS, Linux, Android e iOS com o mesmo código, e não precisa compilar binário por plataforma. A troca é que algumas features do PHP não estão disponíveis no WASM.

Pra quem está começando com Laravel e quer fazer algo desktop, o NativeBlade é bem direto 4 comandos e já tem um app rodando. Qualquer dúvida pode abrir uma issue no repositório! 😄

1

Quão pesado seria se o NativeBlade fizesse o mesmo processo do NativePHP de usar um PHP compilado nativamente pra cada plataforma? Mas ao invés de usar o Electron, usar o Tauri? Chegou a testar isso?

1

Bom, praticamente ficaria bem mais leve em termo de espaço em disco, mas do meu lado como mantenedor do código, eu perderia muito tendo que compilar o binário toda vez que sair e vocês teriam todo acesso ao que laravel oferece, mas como single thread, eu estaria indo no mesmo caminho que o nativephp e não faria muito sentido, o fato da proposta ser diferente é que faz a comunidade tentar pra sentir qual das duas faz mais sentido, lembrando que esse projeto é algo feito por uma pessoa e a comunidade, enquanto nativephp tem todo eco sistema laravel e o time por trás

1

Em relação a dificuldade da compilação eu entendi, mas não entendi sobre o single thread, para solucionar isso não seria só usar o PHP Thread Safe?

1

O PHP Thread Safe (ZTS) permite múltiplas threads rodando PHP simultaneamente, mas cada thread ainda executa PHP de forma síncrona por dentro, você ganha paralelismo entre requests, não dentro de uma request.

No contexto de um app desktop/mobile isso não muda muito na prática, porque geralmente é um único usuário usando o app. O gargalo real não é concorrência entre usuários, é operações bloqueantes como I/O, chamadas a APIs externas e queries pesadas.

E aí é onde a abordagem WASM + bridge assíncrona do NativeBlade resolve diferente, o PHP sinaliza a operação, o Rust/JS executa de forma assíncrona, e o PHP re-executa com o resultado em cache. Não é threading, é cooperativo. 😄