WebAssembly, ou wasm, é um formato de bytecode de baixo nível que roda no navegador assim como o JavaScript. Ele foi projetado para ser mais rápido de analisar do que JavaScript, bem como mais rápido de executar, o que o torna um alvo de compilação adequado para linguagens novas e existentes.
Este repositório contém uma lista de linguagens que atualmente compilam ou têm suas VMs em WebAssembly(wasm)
? - Em produção.
? - Estável para uso em produção.
? - Instável, mas utilizável.
? - Trabalho em andamento.
☠️ - Não mantido ou obsoleto
Unmaintained
Unmaintained
Unmaintained
Unmaintained
Unmaintained
Unmaintained
Unmaintained
Unmaintained
.NET Framework é uma estrutura de software desenvolvida pela Microsoft que roda principalmente no Microsoft Windows. Inclui uma grande biblioteca de classes chamada Framework Class Library (FCL) e fornece interoperabilidade de linguagens (cada linguagem pode usar código escrito em outras linguagens) em várias linguagens de programação.
Ada é uma linguagem de programação de alto nível estruturada, de tipo estaticamente, imperativa e orientada a objetos, inspirada em Pascal e outras linguagens. Possui suporte de linguagem integrado para design por contrato (DbC), digitação extremamente forte, simultaneidade explícita, tarefas, passagem síncrona de mensagens, objetos protegidos e não determinismo. Ada melhora a segurança e a manutenção do código usando o compilador para encontrar erros em favor de erros de tempo de execução.
AssemblyScript é um novo compilador direcionado ao WebAssembly enquanto utiliza a sintaxe do TypeScript e o vibrante ecossistema do nó. Em vez de exigir a configuração de conjuntos de ferramentas complexos, você pode simplesmente instalá-lo com npm - ou executá-lo em um navegador.
Astro é uma linguagem divertida e segura para prototipagem rápida e aplicações de alto desempenho.
Unmaintained
Ballerina é uma linguagem de programação de código aberto para nuvem que facilita o uso, a combinação e a criação de serviços de rede. O compilador WebAssembly é implementado para o compilador nativo Ballerina nBallerina.
BASIC (sigla para "Código de instrução simbólica multifuncional para iniciantes") é uma das primeiras linguagens de programação de uso geral e de alto nível. Ainda é uma das línguas mais simples e fáceis de aprender.
basic2wasm
que compila BASIC para WebAssembly usando binaryen.Brainfuck é uma linguagem de programação esotérica criada em 1993 por Urban Müller e notável por seu extremo minimalismo. A linguagem consiste em apenas oito comandos simples e um ponteiro de instrução. Embora seja totalmente Turing-completo, não se destina ao uso prático, mas para desafiar e divertir os programadores.
C é uma linguagem de programação de computador imperativa de uso geral, que suporta programação estruturada, escopo de variável lexical e recursão, enquanto um sistema de tipo estático evita muitas operações não intencionais. C foi originalmente desenvolvido por Dennis Ritchie entre 1969 e 1973 no Bell Labs,[6] e usado para reimplementar o sistema operacional Unix.
C# é uma linguagem de programação multiparadigma que abrange disciplinas de programação de tipagem forte, imperativa, declarativa, funcional, genérica, orientada a objetos (baseada em classe) e orientada a componentes. Sua equipe de desenvolvimento é liderada por Anders Hejlsberg. O suporte ao WebAssembly é obtido por meio do Blazor.
C++ é uma linguagem de programação de uso geral. Possui recursos de programação imperativos, orientados a objetos e genéricos, ao mesmo tempo que fornece recursos para manipulação de memória de baixo nível. Ele foi projetado com uma tendência para a programação de sistemas e sistemas embarcados, com recursos limitados e grandes, com desempenho, eficiência e flexibilidade de uso como destaques de seu design. O desenvolvimento da linguagem foi iniciado em 1979 por Bjarne Stroustrup como um "C com Classes".
C4wa ("C para Web Assembly") é um subconjunto do Padrão C voltado especificamente para compilação simples e eficiente de Web Assembly. Os arquivos WASM gerados não incluem sobrecarga, são compatíveis com qualquer tempo de execução do Web Assembly e suportam importação de funções de argumentos variáveis (como
printf
). Também existe a opção de criar arquivos WAT bem formatados e legíveis.
Clean é uma linguagem de programação funcional de uso geral, de última geração, pura e preguiçosa, projetada para criar aplicativos do mundo real. Alguns de seus recursos de linguagem mais notáveis são digitação exclusiva, digitação dinâmica e funções genéricas.
Uma linguagem de programação semelhante a Go e TypeScript.
COBOL é uma linguagem de programação compilada semelhante ao inglês, projetada para uso comercial. É imperativo, processual e orientado a objetos. COBOL é usado principalmente em sistemas comerciais, financeiros e administrativos.
Crystal é uma linguagem de programação com os seguintes objetivos:
- Ter uma sintaxe semelhante ao Ruby (mas a compatibilidade com ela não é um objetivo)
- Verificado o tipo estaticamente, mas sem precisar especificar o tipo de variáveis ou argumentos de método.
- Ser capaz de chamar o código C escrevendo ligações para ele no Crystal.
- Tenha avaliação em tempo de compilação e geração de código, para evitar código clichê.
- Compile em código nativo eficiente.
Scripting rápido, eficiente e simultâneo. Tipos dinâmicos e graduais; Simultaneidade com fibras; Multithread; Memória segura; FFI e incorporável.
D é uma linguagem de programação de uso geral com tipagem estática, acesso em nível de sistema e sintaxe semelhante a C.
Uma linguagem acessível, portátil e produtiva para aplicativos de alta qualidade em qualquer plataforma
Eclair é uma implementação mínima e rápida de Datalog que compila para LLVM IR e WASM.
Eel é uma pequena linguagem usada, entre outras coisas, para escrever "predefinições" de visualização para Milkdrop, o programa de visualização de música que acompanha o Winamp.
Elixir é uma linguagem dinâmica e funcional projetada para construir aplicativos escaláveis e de fácil manutenção. Elixir é baseado em Erlang e compartilha as mesmas abstrações para construir aplicativos distribuídos e tolerantes a falhas.
F# é uma linguagem de programação madura, de código aberto, multiplataforma e funcional. Ele capacita usuários e organizações a lidar com problemas de computação complexos com código simples, sustentável e robusto. O suporte ao WebAssembly é obtido por meio do Bolero, um conjunto de bibliotecas e ferramentas gratuitas e de código aberto construídas sobre o Blazor. O F# foi concebido principalmente por Don Syme da Microsoft Research, mas agora é mantido pela F# Foundation e sua comunidade.
Faust (Functional Audio Stream) é uma linguagem de programação funcional projetada especificamente para processamento e síntese de sinais em tempo real. Uma característica distintiva de Fausto é ser totalmente compilado.
Forest é uma linguagem de programação funcional que compila para WebAssembly. O repositório principal contém o compilador e as sintaxes principais, atualmente implementadas em Haskell.
Adiante é uma linguagem de programação interativa, extensível, imperativa, não tipada e baseada em pilha.
Go é uma linguagem compilada estaticamente tipada na tradição de C, com segurança de memória, coleta de lixo, tipagem estrutural e recursos de programação simultânea no estilo CSP adicionados.
Grain é uma linguagem de programação funcional fortemente tipada, construída para a web moderna.
Haskell é uma linguagem de programação puramente funcional padronizada e de uso geral, com semântica não estrita e forte tipagem estática. É nomeado em homenagem ao lógico Haskell Curry. O padrão mais recente do Haskell é o Haskell 2010. Em maio de 2016, um grupo está trabalhando na próxima versão, Haskell 2020.
Idris é uma linguagem de programação funcional pura de uso geral com tipos dependentes. Os tipos dependentes permitem que os tipos sejam baseados em valores, o que significa que alguns aspectos do comportamento de um programa podem ser especificados precisamente no tipo. É compilado, com avaliação ávida. Seus recursos são influenciados por Haskell e ML.
Unmaintained
Janet é uma boa linguagem de script de sistema ou uma linguagem para incorporar em outros programas. É como um "Lisp moderno", apresentando interoperabilidade C excelente e fácil e uma variedade de tipos de dados como arrays, estruturas, tabelas, etc.
Java é uma linguagem de programação de computador de uso geral que é simultânea, baseada em classes, orientada a objetos e projetada especificamente para ter o menor número possível de dependências de implementação. O objetivo é permitir que os desenvolvedores de aplicativos "escrevam uma vez, executem em qualquer lugar" (WORA), o que significa que o código Java compilado pode ser executado em todas as plataformas que suportam Java sem a necessidade de recompilação. Java foi originalmente desenvolvido por James Gosling na Sun Microsystems e lançado em 1995 como um componente central da plataforma Java da Sun Microsystems. A linguagem deriva grande parte de sua sintaxe de C e C++, mas possui menos recursos de baixo nível do que qualquer um deles.
JavaScript é uma linguagem de programação interpretada de alto nível que está em conformidade com a especificação ECMAScript. É uma linguagem que também se caracteriza como dinâmica, fracamente tipada, baseada em protótipos e multiparadigma.
Julia foi projetada desde o início para alto desempenho. Os programas Julia são compilados em código nativo eficiente para múltiplas plataformas via LLVM.
Unmaintained
KCL é uma linguagem funcional e de registro baseada em restrições usada principalmente em cenários de configuração e política.
Kotlin é uma linguagem de programação moderna, mas já madura, que visa deixar os desenvolvedores mais felizes. É conciso, seguro, interoperável com Java e outras linguagens e oferece muitas maneiras de reutilizar código entre múltiplas plataformas para programação produtiva.
Kotlin/Wasm é o novo alvo e conjunto de ferramentas da família Kotlin. Possui algumas propriedades especiais:
- Ele compila diretamente no Wasm, sem quaisquer camadas adicionais, para compilar o mais rápido possível, inclusive de forma incremental no futuro.
- Ele usa propostas experimentais/novas como GC, referências de funções digitadas, tratamento de exceções e Stringref.
Uma linguagem mínima compilada em bytecode wasm.
LabVIEW é um ambiente de desenvolvimento para a linguagem de programação gráfica de fluxo de dados G usada para aquisição de dados, controle de instrumentos e automação industrial.
Lisp (historicamente LISP) é uma família de linguagens de programação com uma longa história e uma notação de prefixo distinta e totalmente entre parênteses.
Lobster é uma linguagem de tipo estaticamente com inferência e especialização de tipo sensível ao fluxo, contagem de referência de tempo de compilação (análise de tempo de vida) que se parece um pouco com Python. Foi originalmente planejado especificamente para jogos. O Lobster tem seu próprio back-end Wasm que compila diretamente em arquivos .wasm vinculáveis (com LLD).
Lox é uma linguagem criada por Bob Nystrom, usada para ensinar compiladores no livro Crafting Interpreters. É digitado dinamicamente e oferece suporte a classes, encerramentos e funções de primeira classe.
Lua é uma linguagem de programação leve e multiparadigma projetada principalmente para sistemas embarcados e clientes.[2] Lua é multiplataforma, já que o interpretador é escrito em ANSI C e possui uma API C relativamente simples. Lua foi originalmente projetada em 1993 como uma linguagem para estender aplicativos de software para atender à crescente demanda por customização da época.
Lys é uma linguagem funcional digitada que compila diretamente para WebAssembly.
MoonBit é um conjunto de ferramentas de linguagem de programação ponta a ponta para computação em nuvem e de ponta usando WebAssembly. A linguagem é como Rust com suporte a GC. O compilador rápido é otimizado para produzir binários WASM muito compactos.
Linguagem de programação de sistemas mínima, simples, eficiente, tipada estaticamente, compilada, metaprogramável, segura e extensível com sabor Lua.
NerdLang é um substrato de JS com algumas adições, foco na eficiência. Nerd é um compilador nativo de JavaScript com o objetivo de tornar o JavaScript universal. Nerd é capaz de compilar aplicativos nativos para Windows, Mac, Linux, iOS, Android, Raspberry, STM32, Arduino, Web (incluindo WASM) e muito mais.
Never é uma linguagem de programação funcional simples. Tecnicamente, pode ser classificado como linguagem de programação funcional com escopo sintaticamente, fortemente tipada, chamada por valor.
Uma linguagem marginal com alguns belos padrões de design.
OCaml, originalmente denominado Objective Caml, é a principal implementação da linguagem de programação Caml, criada por Xavier Leroy, Jérôme Vouillon, Damien Doligez, Didier Rémy, Ascánder Suárez e outros em 1996. Membro da família de linguagens ML, OCaml estende o núcleo Linguagem Caml com construções de programação orientada a objetos.
Pascal é uma linguagem de programação de digitação estática imperativa, processual e orientada a objetos de uso geral. O compilador Free Pascal tem como alvo muitas arquiteturas de processador, incluindo wasm32; sistemas operacionais, incluindo WASI; e plataformas embarcadas.
Perl é uma linguagem de programação de uso geral desenvolvida originalmente para manipulação de texto e agora usada para uma ampla gama de tarefas, incluindo administração de sistemas, desenvolvimento web, programação de rede, desenvolvimento de GUI e muito mais.
PHP é uma linguagem de script de uso geral especialmente adequada para desenvolvimento web no lado do servidor, caso em que o PHP geralmente é executado em um servidor web. Qualquer código PHP em um arquivo solicitado é executado pelo tempo de execução do PHP, geralmente para criar conteúdo dinâmico de páginas da web ou imagens dinâmicas usadas em sites ou em outros lugares.
Plorth é uma linguagem de script funcional baseada em pilha, concatenativa e fortemente tipada, que é fácil de incorporar em aplicativos escritos em C++. É inspirado nas linguagens de programação Forth e Factor.
Poesia é uma linguagem de programação poeticamente dinâmica e simples que é compilada para WebAssembly. Possui uma sintaxe minimalista semelhante ao CoffeeScript e oferece controle total sobre as importações e exportações de wasm.
Python é uma linguagem de programação de alto nível interpretada de código aberto para programação de uso geral. Criado por Guido van Rossum e lançado pela primeira vez em 1991, Python tem uma filosofia de design que enfatiza a legibilidade do código, principalmente usando espaços em branco significativos. Ele fornece construções que permitem uma programação clara em escalas pequenas e grandes.
Prolog é uma linguagem de programação lógica de uso geral associada à inteligência artificial e à linguística computacional. O Prolog tem suas raízes na lógica de primeira ordem, uma lógica formal, e ao contrário de muitas outras linguagens de programação, o Prolog pretende ser principalmente uma linguagem de programação declarativa: a lógica do programa é expressa em termos de relações, representadas como fatos e regras. Uma computação é iniciada executando uma consulta sobre essas relações.
R é uma linguagem e ambiente para computação estatística e gráficos.
Open Policy Agent (OPA) é um mecanismo de política de código aberto e de uso geral que unifica a aplicação de políticas em toda a pilha. Rego é uma linguagem de política declarativa de alto nível desenvolvida especificamente para expressar políticas em estruturas de dados hierárquicas complexas.
Ring é uma linguagem multiparadigma de uso geral, simples, pequena e flexível, prática e de uso geral. Os paradigmas de programação suportados são programação imperativa, processual, orientada a objetos, funcional, metaprogramação, programação declarativa usando estruturas aninhadas e programação natural. A linguagem é portátil (MS-DOS, Windows, Linux, macOS, Android, WebAssembly, etc.) e pode ser usada para criar aplicativos de console, GUI, Web, jogos e dispositivos móveis.
Uma linguagem rápida, amigável e funcional. Compila em código de máquina ou WASM. Roc é um descendente direto da linguagem de programação Elm.
Ruby é uma linguagem de programação de alto nível interpretada de código aberto para programação de uso geral. Criado por Matz. Ruby tem uma filosofia de design que enfatiza a legibilidade do código, principalmente usando o mínimo possível de sigilos (caracteres especiais
:.{}%[]&=>;
).
Rust é uma linguagem de programação de sistemas patrocinada pela Mozilla Research, que a descreve como uma "linguagem prática, segura e simultânea", que suporta paradigmas funcionais e procedimentais imperativos. Rust é sintaticamente semelhante ao C++, mas seus projetistas pretendem fornecer melhor segurança de memória enquanto mantém o desempenho.
wasm32-unknown-unknown
target - Backend do compilador Rust para WebAssembly (sem a necessidade de Emscripten).Scheme é uma linguagem de programação que suporta múltiplos paradigmas, incluindo programação funcional e programação imperativa, e é um dos dois principais dialetos do Lisp. Ao contrário do Common Lisp, o outro dialeto principal, Scheme segue uma filosofia de design minimalista especificando um pequeno núcleo padrão com ferramentas poderosas para extensão de linguagem.
Scopes é uma linguagem de programação de uso geral e infraestrutura de compilador especificamente adequada para prototipagem de curto prazo e desenvolvimento de aplicativos de alto desempenho que precisam de compilação em vários estágios em tempo de execução.
Speedy.js é um compilador para um subconjunto bem considerado e livre de armadilhas de desempenho de JavaScript direcionado ao WebAssembly. Como o WebAssembly é digitado estaticamente, o projeto usa TypeScript como verificador de tipo e para resolver os tipos dos símbolos do programa.
Unmaintained
Swift é uma linguagem de programação compilada de uso geral e multiparadigma desenvolvida pela Apple Inc. para iOS, macOS, watchOS, tvOS, Linux e z/OS.
Tcl (Tool Command Language) é uma linguagem de programação dinâmica muito poderosa, mas fácil de aprender, madura, mas em evolução, altamente extensível e adequada para uma ampla gama de usos.
Theta é uma linguagem de programação moderna, de uso geral e funcional, com um sistema de tipos forte e sintaxe expressiva. Ele apresenta um design modular e suporta correspondência de padrões, sobrecarga de funções e outras vantagens.
TurboScript é uma linguagem de programação experimental para programação paralela para web que compila para JavaScript (asm.js) e WebAssembly (voltado para pós-MVP). A sintaxe é semelhante ao TypeScript e o compilador é de código aberto e escrito em TypeScript. TurboScript não tem dependências.
TypeScript é uma linguagem de programação de código aberto desenvolvida e mantida pela Microsoft. É um superconjunto sintático estrito de JavaScript e adiciona digitação estática opcional à linguagem.
V é uma linguagem de programação compilada estaticamente digitada projetada para a construção de software sustentável.
Uma linguagem de programação de sistemas com coleta de lixo rápida e leve e colecionada. Seu compilador produz executáveis nativos autônomos e otimizados, módulos WebAssembly ou frascos para a JVM.
O WA é uma linguagem de programação de uso geral projetada para desenvolver software de robustez e manutenção da WebAssembly. Em vez de exigir que as cadeias de ferramentas complexas sejam configuradas, você pode simplesmente instalá -lo - ou executá -lo em um navegador.
凹语言 ™ (凹读音 凹读音 “wa”) 是 针对 wasm 平台设计的的通用编程语言 , 支持 linux 、 macOS 和 Windows等主流操作系统和 Chrome 等浏览器环境 , 同时也支持作为独立 Shell 脚本和被嵌入脚本模式执行。
Wah é uma linguagem de nível ligeiramente mais alta que é um superconjunto da WebAssembly. O objetivo é tornar o formato de texto da WebAssembly um pouco mais amigável para os seres humanos, sem introduzir novos sintaxe ou dados de dados.
Unmaintained
Walt é uma sintaxe alternativa para o formato de texto WebAssembly. É um experimento para usar a sintaxe JavaScript para escrever o mais 'próximo ao metal' possível. É JavaScript com regras. Os arquivos .walt compilam diretamente para o formato binário WebAssembly.
Unmaintained
WebAssembly Macro Language: A sintaxe Wam é um superconjunto próximo da sintaxe do Waste, que é mais conveniente para os desenvolvedores humanos escreverem diretamente.
Unmaintained
WASE: WebAssembly facilitada. Wase é um idioma, que tenta facilitar a redação do WASM. O idioma mapeia de perto o WebAssembly e compila diretamente ao ByteCode WASM. Tem uma duração forte com inferência de tipo.
Sim, WebAssembly.
Wasm3
é o intérprete WebAssembly mais rápido, que permite o WebAssembly Auto-hospedeiro.
O WonKey é uma linguagem de programação fácil de aprender, orientada a objetos, moderna e de plataforma cruzada para criar videogames de plataforma cruzada, altamente inspirados na gama de idiomas "Blitzbasic".
Uma linguagem semelhante a Lisp que compila com a semestre de web, escrita na raquete
Unmaintained
Compilador de brinquedos C para x86-64 e wasm
O ZIG é uma linguagem de programação de uso geral projetado para robustez, otimização e manutenção.
Leia as diretrizes de contribuição se você deseja contribuir.
Na medida do possível, Steve Akinyemi renunciou a todos os direitos autorais e direitos relacionados ou vizinhos a este trabalho.