Construção Zano: um tempo de execução do Node.js

Do conceito a Crates.io – Como eu construí um tempo de execução compatível com JavaScript que traz padrões familiares Node.js ao ecossistema de ferrugem que a jornada começa como um desenvolvedor que ama a expressividade de JavaScript e o desempenho de Rust garante, sempre me perguntei: “e se poderíamos ter o melhor dos dois mundos?” Hoje, estou animado para compartilhar o Zano v0.1.1 – um tempo de execução do tipo node.js, construído inteiramente em ferrugem que torna esse sonho uma realidade. Experimente agora: Cargo Install Zanocrates.io: O que é Zano? O Zano é um tempo de execução de back-end de alto desempenho que fornece uma experiência familiar de desenvolvimento Node.js, alavancando a segurança da memória da Rust e as abstrações de custo zero. Pense nisso como “Sintaxe do Node.js com o desempenho da ferrugem”. // Este é o código Zano válido! const fs = requer (‘fs’) tente {fs.writefile (‘hello.txt’, ‘hello de zano!’) Let Content = fs.readfile (‘hello.txt’) console.log (‘file content:’ content)} catch (error) {console.error (‘operação falhou:’, erro)} Em Rust, apresentou vários desafios fascinantes: 1. Design de idiomas, criando um analisador que entende a sintaxe do JavaScript, mantendo a segurança do tipo de ferrugem, exigia decisões cuidadosas de design cuidadosas. Eu construí um alcatrão de descendência recursivo personalizado que lida com: variáveis (let, const, var) funcione com parâmetros e retornar valores objetos e matrizes com padrões familiares de controle fluxo (se/else, enquanto, tente/capturar) 2. Assync Runtime Architecture Node.js O evento de eventos é lendário por seu desempenho. Eu repliquei isso usando Tokio: Pub Struct Zanoruntime {Globals: Arc>>, funções: arco>>>, módulos: arco>>,} Digite o modo de saída do modo de tela full. Recursos de tecla do modo de tela cheia que tornam a sintaxe familiar especial de Zano, deixe o usuário = {nome: “Alice”, idade: 30} Deixe números = [1, 2, 3, 4, 5]

Função CalculateAge (BirthYear) {Retorno 2025 – BirtYear} Console.log (“Usuário:”, User.name, “Age:”, Calculateage (1995)) Digite o modo de tela completa Sair da tela cheia do modo de tela robusta “, lidando com o tratamento de erros. } catch (error) {console.error (“capturado:”, error)} console.log (“Programa continua com segurança!”) Digite o modo de tela cheia de saída de tela cheia gerenciamento de pacote zanO init # cria package.json zanO Install lodash # instalações zano -e “console.log (‘hi’)” # avaliação direta zano -i # interativo repl enter enter uma tela cheia saída de tela cheia comparação de desempenho aspecto zano node.js Segurança da memória ✅ Compile-tempo ❌ Erros de tempo de execução Possível tempo de inicialização do tempo de base 🐌 🐌 ~ 50ms de memória 📦 Minimal 📊 Minimald Bestily Time parakio parakiOn cupurncy tokio parakiOn cupurencurncy parakiOn cupurencurncy parakiOn, que se baseia no tempo da linha de base. FILE- Processor.zn const fs = requer (‘fs’) console.log (“Pipeline de processamento de arquivos”) tente {let data = “user1, admin \ nUser2, membro \ nUser3, hóspedes” fs.writefile (‘users.csv’, data) let = fs.readfile (‘…..csv ‘) let’csv’, dados) let = fs.readfile (‘….cs) Let’Csv ‘, Data) let = fs.readfile (‘….cs. fs.WriteFile (‘processado.txt’, processado) console.log (“✅ Processamento completo!”)} catch (error) {console.error (“❌ Processamento falhou:”, erro)} digite fullcreen Mode Exit. Vendas: 1200, Custos: 900} Função CalcularProfit (Record) {return {mês: registro.month, lucro: registro.sales – registro.Costs}} Let Results = [calculateProfit(jan), calculateProfit(feb)]
Deixe Totalprofit = Resultados[0].Profit + Resultados[1].Profit Console.log (“Lucro total: $” + totalProfit) // Saída: Lucro total: US $ 500 Digite o modo de tela cheia Saia do modo de tela cheia Arquitetura técnica Implementação de um analisador profundo, o coração de zano é seu relógio, construído como uma expressão de descendência recursiva, a atenção cuidadosa a javscript semntics: pubra. Esquerda: caixaoperador: binaryop, direita: caixa }, Ligue para {callee: caixaArgs: Vec }, Membro {objeto: caixapropriedade: string}, Array (VEC), Objeto (vec<(String, Expression)>), // … mais variantes} Digite o modo de tela fullcreen Sair do modo de execução do modo de tela completa Execução O tempo de execução usa os recursos de assíncrona do Tokio para lidar {Match Expression {Expression :: Call {Callee, args} => {// manipula chamadas de função, incluindo funções de membro como console.log let function_name = self.resolve_function_name (callee)?; Seja func = self.functions.read (). func.call (args) .await} // … manuseie outros tipos de expressão}} Digite o modo de tela cheia Sair da tela cheia Lições de desenvolvimento de desenvolvimento aprendidas 1. Inicie simples, iterar Eu comecei com aritmético básico e gradualmente adicionou recursos. Essa abordagem impediu a complexidade esmagadora e permitiu testes completos em cada estágio. 2. Abrace o sistema do tipo Rust inicialmente, lutei contra o verificador de empréstimos de Rust. Eventualmente, aprendi a projetar com a propriedade em mente, levando a um código mais limpo e com desempenho. 3. O feedback da comunidade são exemplos de testes de ouro do ReadMe, revelaram casos de borda que eu não considerava. A perspectiva do usuário é inestimável. 4. Exemplos de redação de desenvolvimento orientado por documentação para o ReadMe me ajudou a entender como a API deveria ser da perspectiva de um usuário. Benefícios de desempenho na prática Aqui está uma referência simples comparando Zano com Node.js para uma tarefa intensiva em CPU: // fibonacci.zn / fibonacci.js função fibonacci (n) {if (n <= 1) return n
return fibonacci(n – 1) + fibonacci(n – 2)
}

console.log(“Fibonacci(35):”, fibonacci(35))

Enter fullscreen mode

Exit fullscreen mode

Results (on my machine):

Zano: ~1.2s with instant startup

Node.js: ~1.8s + 50ms startup overhead

Note: This is a synthetic benchmark. Real-world performance varies.

What’s Next for Zano?

The v0.1.1 release is just the beginning! Here’s what’s planned:

Version 1.1.0

[ ] Full async/await support with proper Promise handling
[ ] HTTP server implementation with routing
[ ] Module bundling system
[ ] Package registry integration

Version 1.2.0

[ ] Class syntax support
[ ] Destructuring assignment
[ ] Template literals with interpolation
[ ] JSON parsing utilities
[ ] Comprehensive standard library

Version 2.0.0

[ ] TypeScript-like static typing (optional)
[ ] WebAssembly module support
[ ] Built-in testing framework
[ ] Advanced debugging tools

Contributing and Community

Zano is open source and welcomes contributions! Whether you’re:

Finding bugs (please report them!)
Suggesting features (what would make Zano more useful?)
Improving documentation (clarity is key!)
Contributing code (PRs welcome!)

Get involved:

Installation and Getting Started

Ready to try Zano? Here’s how to get started:

# Install Zano
cargo install zano

# Create your first project
zano init
echo ‘console.log(“Hello, Zano!”)’ > Olá.zn zano hello.zn # tente o repl zano -i # avaliação rápida zano -e ‘let x = 5; Seja y = 10; Console.log (“Sum:”, x + y) ‘Digite o modo de tela cheia Sair da tela cheia Conclusão do Building Zano tem sido uma jornada incrível que reforçou minha crença de que o ecossistema de ferrugem pode acomodar diversos paradigmas de programação, mantendo seus principais valores de segurança e desempenho. Zano prova que você não precisa escolher entre sintaxe familiar e benefícios de programação de sistemas. Você pode ter os dois. O futuro do desenvolvimento de back -end é brilhante, e acredito que ferramentas como Zano que preenchem diferentes comunidades de programação desempenharão um papel crucial nesse futuro. Experimente Zano hoje! Carga Instale o Zano Digite Links do modo de tela cheia de tela cheia: O que você pensa em trazer a sintaxe do tipo JavaScript à ferrugem? Você já experimentou Zano? Eu adoraria ouvir seus comentários e experiências nos comentários! Tags: #Rust #javascript #NodeJS #OPensource #Programming #WebDev #PerFormFormance #MemorySafety #Async #Runtime Siga -me para obter mais atualizações sobre o desenvolvimento de Zano e outros projetos de ferrugem!

Fonte

Publicar comentário

Você pode ter perdido