A plataforma Bun em JavaScript agora suporta a chamada de código em C.

Na plataforma Bun, desenvolvida como uma alternativa ao Node.js e projetada para a execução isolada de aplicações escritas em JavaScript, JSX e TypeScript, uma funcionalidade experimental foi implementada para compilar e executar manipuladores escritos em C. Anteriormente, para chamar código de baixo nível, era necessário criar complementos N-API ou compilar o código em formato WebAssembly (WASM/WASI), o que complicava o desenvolvimento e impunha certas limitações. Agora, o código em C pode ser incorporado diretamente no JavaScript e compilado em tempo real usando o compilador TinyCC, além de permitir a vinculação dinâmica de bibliotecas. import { cc } from "bun:ffi"; export const { symbols: { hello }, } = cc({ source: "./hello.c", symbols: { hello: { returns: "void", args: [], }, }, }); hello();

Para trabalhar com a linguagem C, utiliza-se a camada bun:ffi, que compila o código-fonte em instruções de máquina, o insere na memória durante a execução e garante a conversão automática de tipos de dados entre JavaScript e C. Observa-se que as despesas gerais ao acessar o código C compilado são minimizadas e resultam em um atraso na casa de cerca de 2 nanossegundos para cada chamada de funções externas em C. Como exemplo, é demonstrado como acessar diretamente bibliotecas FFmpeg para a conversão de vídeos curtos — ao evitar operações como ramificação de um processo separado e alocação de memória para cada vídeo, o tempo total de execução da tarefa de teste ao usar bun:ffi foi reduzido em três vezes.

Além disso, na versão Bun 1.1.29, suporte ao N-API (napi) foi adicionado para o código escrito em C, permitindo que manipuladores escritos em C retornem objetos, strings, arrays e outros valores não primitivos do JavaScript, além dos tipos nativos da linguagem C, como int e float. O mecanismo de chamada para manipuladores em C também funciona ao carregar dinamicamente qualquer biblioteca com C ABI, independentemente de qual linguagem tenham sido originalmente escritas (C++, Rust, Zig, etc.), permitindo a chamada de funções oferecidas por estas bibliotecas a partir do código JavaScript sem a necessidade de uma fase separada de recompilação. Por exemplo, agora é possível chamar APIs do sistema a partir do JavaScript.

Lembramos que o projeto Bun está em desenvolvimento com o objetivo de garantir compatibilidade com aplicativos de servidor escritos para Node.js, e suporta a maior parte da API do Node.js. A plataforma inclui um conjunto de ferramentas para criar e executar aplicativos nas linguagens JavaScript e TypeScript, além de um runtime para executar aplicativos JavaScript sem navegador, gerenciador de pacotes (compatível com NPM), ferramentas para execução de testes e um sistema de build de pacotes autossuficientes. Em termos de desempenho, o Bun supera notavelmente o Deno e o Node.js (em testes baseados no framework React, a plataforma Bun é duas vezes mais rápida que o Deno e quase cinco vezes mais rápida que o Node.js). O código do Bun é escrito em Zig e C++, e é distribuído sob a licença MIT. Para a execução de JavaScript, utiliza-se o motor JavaScript JavaScriptCore e componentes do projeto WebKit com patches adicionais.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster