WebAssembly, o wasm para abreviar, es un formato de código de bytes de bajo nivel que se ejecuta en el navegador como JavaScript. Está diseñado para ser más rápido de analizar que JavaScript, así como también más rápido de ejecutar, lo que lo convierte en un objetivo de compilación adecuado para lenguajes nuevos y existentes.
Este repositorio contiene una lista de lenguajes que actualmente se compilan o tienen sus máquinas virtuales en WebAssembly (wasm).
? - En Producción.
? - Estable para uso en producción.
? - Inestable pero utilizable.
? - Trabajo en progreso.
☠️ - Sin mantenimiento o en desuso
Unmaintained
Unmaintained
Unmaintained
Unmaintained
Unmaintained
Unmaintained
Unmaintained
Unmaintained
.NET Framework es un marco de software desarrollado por Microsoft que se ejecuta principalmente en Microsoft Windows. Incluye una gran biblioteca de clases llamada Framework Class Library (FCL) y proporciona interoperabilidad de lenguajes (cada lenguaje puede usar código escrito en otros lenguajes) en varios lenguajes de programación.
Ada es un lenguaje de programación de alto nivel estructurado, de tipo estático, imperativo y orientado a objetos, inspirado en Pascal y otros lenguajes. Tiene soporte de lenguaje incorporado para diseño por contrato (DbC), escritura extremadamente segura, concurrencia explícita, tareas, paso de mensajes sincrónico, objetos protegidos y no determinismo. Ada mejora la seguridad y el mantenimiento del código mediante el uso del compilador para encontrar errores a favor de los errores de tiempo de ejecución.
AssemblyScript es un nuevo compilador dirigido a WebAssembly que utiliza la sintaxis de TypeScript y el vibrante ecosistema de nodos. En lugar de requerir la configuración de cadenas de herramientas complejas, simplemente puede instalarlo mediante npm o ejecutarlo en un navegador.
Astro es un lenguaje divertido y seguro para la creación rápida de prototipos y aplicaciones de alto rendimiento.
Unmaintained
Ballerina es un lenguaje de programación de código abierto para la nube que facilita el uso, la combinación y la creación de servicios de red. El compilador WebAssembly está implementado para el compilador nativo de Ballerina nBallerina.
BASIC (acrónimo de "Código de instrucción simbólica multiusos para principiantes") es uno de los primeros lenguajes de programación de alto nivel y de propósito general. Sigue siendo uno de los idiomas más simples y fáciles de aprender.
basic2wasm
que compila BASIC en WebAssembly mediante binarios.Brainfuck es un lenguaje de programación esotérico creado en 1993 por Urban Müller y que destaca por su minimalismo extremo. El lenguaje consta de sólo ocho comandos simples y un puntero de instrucción. Si bien es totalmente Turing completo, no está destinado a un uso práctico, sino a desafiar y divertir a los programadores.
C es un lenguaje de programación de computadoras imperativo y de propósito general, que admite programación estructurada, alcance de variables léxicas y recursividad, mientras que un sistema de tipo estático evita muchas operaciones no deseadas. C fue desarrollado originalmente por Dennis Ritchie entre 1969 y 1973 en Bell Labs,[6] y utilizado para volver a implementar el sistema operativo Unix.
C# es un lenguaje de programación multiparadigma que abarca disciplinas de programación de tipificación fuerte, imperativa, declarativa, funcional, genérica, orientada a objetos (basada en clases) y orientada a componentes. Su equipo de desarrollo está dirigido por Anders Hejlsberg. La compatibilidad con WebAssembly se logra a través de Blazor.
C++ es un lenguaje de programación de propósito general. Tiene características de programación genéricas, imperativas y orientadas a objetos, al mismo tiempo que proporciona funciones para la manipulación de memoria de bajo nivel. Fue diseñado con un sesgo hacia la programación de sistemas y sistemas integrados, de gran tamaño y con recursos limitados, con el rendimiento, la eficiencia y la flexibilidad de uso como puntos destacados de su diseño. El desarrollo del idioma lo inició en 1979 Bjarne Stroustrup como "C con clases".
C4wa ("C para Web Assembly") es un subconjunto del estándar C destinado específicamente a la compilación de Web Assembly simple y eficiente. Los archivos WASM generados no incluyen gastos generales, son compatibles con cualquier tiempo de ejecución de Web Assembly y admiten la importación de funciones de argumentos variables (como
printf
). También existe una opción para crear archivos WAT bien formateados y legibles.
Clean es un lenguaje de programación funcional puro, de última generación, de propósito general y diseñado para crear aplicaciones del mundo real. Algunas de sus características de lenguaje más notables son la escritura única, la escritura dinámica y las funciones genéricas.
Un lenguaje de programación similar a Go y TypeScript.
COBOL es un lenguaje de programación compilado similar al inglés diseñado para uso empresarial. Es imperativo, procedimental y orientado a objetos. COBOL se utiliza principalmente en sistemas comerciales, financieros y administrativos.
Crystal es un lenguaje de programación con los siguientes objetivos:
- Tener una sintaxis similar a Ruby (pero la compatibilidad con él no es un objetivo)
- Con verificación de tipo estática pero sin tener que especificar el tipo de variables o argumentos del método.
- Ser capaz de llamar al código C escribiéndole enlaces en Crystal.
- Tener evaluación y generación de código en tiempo de compilación, para evitar el código repetitivo.
- Compile en código nativo eficiente.
Scripting rápido, eficiente y concurrente. Tipos dinámicos y graduales; Concurrencia con fibras; multiproceso; Memoria segura; FFI e integrable.
D es un lenguaje de programación de propósito general con escritura estática, acceso a nivel de sistemas y sintaxis similar a C.
Un lenguaje accesible, portátil y productivo para aplicaciones de alta calidad en cualquier plataforma
Eclair es una implementación de registro de datos mínima y rápida que se compila en LLVM IR y WASM.
Eel es un pequeño lenguaje utilizado, entre otras cosas, para escribir "ajustes preestablecidos" de visualizador para Milkdrop, el programa de visualización de música que viene con Winamp.
Elixir es un lenguaje dinámico y funcional diseñado para crear aplicaciones escalables y mantenibles. Elixir se basa en Erlang y comparte las mismas abstracciones para crear aplicaciones distribuidas y tolerantes a fallos.
F# es un lenguaje de programación maduro, de código abierto, multiplataforma y funcional. Permite a los usuarios y organizaciones abordar problemas informáticos complejos con un código simple, mantenible y robusto. La compatibilidad con WebAssembly se logra a través de Bolero, un conjunto de bibliotecas y herramientas gratuitas y de código abierto creadas sobre Blazor. F# fue concebido principalmente por Don Syme de Microsoft Research, pero ahora lo mantiene la Fundación F# y su comunidad.
Faust (Functional Audio Stream) es un lenguaje de programación funcional diseñado específicamente para el procesamiento y síntesis de señales en tiempo real. Una característica distintiva de Fausto es que está completamente compilada.
Forest es un lenguaje de programación funcional que se compila en WebAssembly. El repositorio principal contiene el compilador y las sintaxis principales, actualmente implementadas en Haskell.
Forth es un lenguaje de programación interactivo, extensible, imperativo, sin tipo y basado en pilas.
Go es un lenguaje compilado de tipo estático en la tradición de C, con características agregadas de seguridad de memoria, recolección de basura, tipado estructural y programación concurrente estilo CSP.
Grain es un lenguaje de programación funcional fuertemente tipado creado para la web moderna.
Haskell es un lenguaje de programación puramente funcional, de propósito general y estandarizado, con una semántica no estricta y una tipificación estática fuerte. Lleva el nombre del lógico Haskell Curry.[1] El último estándar de Haskell es Haskell 2010. En mayo de 2016, un grupo está trabajando en la próxima versión, Haskell 2020.
Idris es un lenguaje de programación funcional puro de propósito general con tipos dependientes. Los tipos dependientes permiten que los tipos se basen en valores, lo que significa que algunos aspectos del comportamiento de un programa se pueden especificar con precisión en el tipo. Está compilado, con evaluación entusiasta. Sus características están influenciadas por Haskell y ML.
Unmaintained
Janet crea un buen lenguaje de secuencias de comandos para sistemas o un lenguaje para integrar en otros programas. Es como un "Lisp moderno", que presenta una excelente y sencilla interoperabilidad de C y una variedad de tipos de datos como matrices, estructuras, tablas, etc.
Java es un lenguaje de programación informática de propósito general concurrente, basado en clases, orientado a objetos y diseñado específicamente para tener la menor cantidad de dependencias de implementación posible. Su objetivo es permitir a los desarrolladores de aplicaciones "escribir una vez, ejecutar en cualquier lugar" (WORA), lo que significa que el código Java compilado puede ejecutarse en todas las plataformas que admitan Java sin necesidad de volver a compilarlo. Java fue desarrollado originalmente por James Gosling en Sun Microsystems y lanzado en 1995 como un componente central de la plataforma Java de Sun Microsystems. El lenguaje deriva gran parte de su sintaxis de C y C++, pero tiene menos funciones de bajo nivel que cualquiera de ellos.
JavaScript es un lenguaje de programación interpretado de alto nivel que cumple con la especificación ECMAScript. Es un lenguaje que también se caracteriza por ser dinámico, débilmente tipado, basado en prototipos y multiparadigma.
Julia fue diseñada desde el principio para un alto rendimiento. Los programas de Julia se compilan en código nativo eficiente para múltiples plataformas a través de LLVM.
Unmaintained
KCL es un lenguaje funcional y de registros basado en restricciones que se utiliza principalmente en escenarios de configuración y políticas.
Kotlin es un lenguaje de programación moderno pero ya maduro cuyo objetivo es hacer más felices a los desarrolladores. Es conciso, seguro, interoperable con Java y otros lenguajes y proporciona muchas formas de reutilizar código entre múltiples plataformas para una programación productiva.
Kotlin/Wasm es el nuevo objetivo y cadena de herramientas de la familia Kotlin. Tiene algunas propiedades especiales:
- Se compila en Wasm directamente sin capas adicionales, para compilar lo más rápido posible, incluso de forma incremental en el futuro.
- Utiliza propuestas experimentales/nuevas como GC, referencias de funciones escritas, manejo de excepciones y Stringref.
Un lenguaje mínimo compilado en código de bytes wasm.
LabVIEW es un entorno de desarrollo para el lenguaje de programación gráfica de flujo de datos G utilizado para la adquisición de datos, control de instrumentos y automatización industrial.
Lisp (históricamente LISP) es una familia de lenguajes de programación con una larga historia y una notación de prefijo distintiva y completamente entre paréntesis.
Lobster es un lenguaje de tipado estático con especialización e inferencia de tipos sensibles al flujo, recuento de referencias de tiempo de compilación (análisis de vida útil) que se parece un poco a Python. Originalmente estaba destinado específicamente a juegos. Lobster tiene su propio backend Wasm que compila directamente en archivos .wasm vinculables (con LLD).
Lox es un lenguaje creado por Bob Nystrom, utilizado para enseñar a los compiladores en el libro Crafting Interpreters. Está escrito dinámicamente y admite clases, cierres y funciones de primera clase.
Lua es un lenguaje de programación liviano y multiparadigma diseñado principalmente para clientes y sistemas integrados.[2] Lua es multiplataforma, ya que el intérprete está escrito en ANSI C y tiene una API C relativamente simple. Lua se diseñó originalmente en 1993 como un lenguaje para ampliar las aplicaciones de software para satisfacer la creciente demanda de personalización en ese momento.
Lys es un lenguaje funcional escrito que se compila directamente en WebAssembly.
MoonBit es una cadena de herramientas de lenguaje de programación de extremo a extremo para computación en la nube y en el borde que utiliza WebAssembly. El lenguaje es como Rust con soporte GC. El compilador rápido está optimizado para producir archivos binarios WASM muy compactos.
Lenguaje de programación de sistemas mínimo, simple, eficiente, tipado estáticamente, compilado, metaprogramable, seguro y extensible con sabor a Lua.
NerdLang es un substrato de JS con algunas adiciones, enfocadas en la eficiencia. Nerd es un compilador nativo de JavaScript que tiene como objetivo hacer que JavaScript sea universal. Nerd puede compilar aplicaciones nativas para Windows, Mac, Linux, iOS, Android, Raspberry, STM32, Arduino, Web (incluido WASM) y más.
Never es un lenguaje de programación funcional simple. Técnicamente, puede clasificarse como lenguaje de programación funcional, de alcance sintáctico, fuertemente tipado, de llamada por valor.
Un lenguaje marginal con algunos patrones de diseño hermosos.
OCaml, originalmente llamado Objective Caml, es la implementación principal del lenguaje de programación Caml, creado por Xavier Leroy, Jérôme Vouillon, Damien Doligez, Didier Rémy, Ascander Suárez y otros en 1996. Miembro de la familia de lenguajes ML, OCaml extiende el núcleo Lenguaje Caml con construcciones de programación orientada a objetos.
Pascal es un lenguaje de programación de tipificación estática orientado a objetos, imperativo y procedimental de propósito general. El compilador Free Pascal apunta a muchas arquitecturas de procesador, incluido wasm32; sistemas operativos, incluido WASI; y plataformas integradas.
Perl es un lenguaje de programación de propósito general desarrollado originalmente para la manipulación de texto y ahora utilizado para una amplia gama de tareas que incluyen administración de sistemas, desarrollo web, programación de redes, desarrollo de GUI y más.
PHP es un lenguaje de programación de propósito general que es especialmente adecuado para el desarrollo web del lado del servidor, en cuyo caso PHP generalmente se ejecuta en un servidor web. El tiempo de ejecución de PHP ejecuta cualquier código PHP en un archivo solicitado, generalmente para crear contenido dinámico de una página web o imágenes dinámicas utilizadas en sitios web o en otros lugares.
Plorth es un lenguaje de programación funcional fuertemente tipado, concatenativo y basado en pilas que es fácil de integrar en aplicaciones escritas en C++. Está inspirado en los lenguajes de programación Forth y Factor.
Poetry es un lenguaje de programación simple y poéticamente dinámico que se compila en WebAssembly. Tiene una sintaxis minimalista similar a CoffeeScript y le brinda control total sobre las importaciones y exportaciones de wasm.
Python es un lenguaje de programación de alto nivel interpretado de código abierto para programación de propósito general. Creado por Guido van Rossum y lanzado por primera vez en 1991, Python tiene una filosofía de diseño que enfatiza la legibilidad del código, en particular utilizando espacios en blanco significativos. Proporciona construcciones que permiten una programación clara tanto a pequeña como a gran escala.
Prolog es un lenguaje de programación lógica de propósito general asociado con la inteligencia artificial y la lingüística computacional. Prolog tiene sus raíces en la lógica de primer orden, una lógica formal, y a diferencia de muchos otros lenguajes de programación, Prolog está pensado principalmente como un lenguaje de programación declarativo: la lógica del programa se expresa en términos de relaciones, representadas como hechos y reglas. Un cálculo se inicia ejecutando una consulta sobre estas relaciones.
R es un lenguaje y entorno para gráficos y computación estadística.
Open Policy Agent (OPA) es un motor de políticas de propósito general y código abierto que unifica la aplicación de políticas en toda la pila. Rego es un lenguaje de políticas declarativas de alto nivel diseñado específicamente para expresar políticas sobre estructuras de datos jerárquicas complejas.
Ring es un lenguaje multiparadigma práctico de uso general, simple, pequeño y flexible. Los paradigmas de programación admitidos son programación imperativa, procedimental, orientada a objetos, funcional, metaprogramación, programación declarativa utilizando estructuras anidadas y programación natural. El lenguaje es portátil (MS-DOS, Windows, Linux, macOS, Android, WebAssembly, etc.) y se puede utilizar para crear aplicaciones de consola, GUI, web, juegos y móviles.
Un lenguaje rápido, amigable y funcional. Se compila en código de máquina o WASM. Roc es un descendiente directo del lenguaje de programación Elm.
Ruby es un lenguaje de programación de alto nivel interpretado de código abierto para programación de propósito general. Creado por Matz. Ruby tiene una filosofía de diseño que enfatiza la legibilidad del código, en particular utilizando la menor cantidad posible de sigilos (caracteres especiales
:.{}%[]&=>;
).
Rust es un lenguaje de programación de sistemas patrocinado por Mozilla Research, que lo describe como un "lenguaje práctico, concurrente y seguro", que admite paradigmas funcionales y de procedimientos imperativos. Rust es sintácticamente similar a C++, pero sus diseñadores pretenden que proporcione una mayor seguridad de la memoria manteniendo el rendimiento.
wasm32-unknown-unknown
target: backend del compilador Rust para WebAssembly (sin necesidad de Emscripten).Scheme es un lenguaje de programación que admite múltiples paradigmas, incluida la programación funcional y la programación imperativa, y es uno de los dos dialectos principales de Lisp. A diferencia de Common Lisp, el otro dialecto principal, Scheme sigue una filosofía de diseño minimalista que especifica un pequeño núcleo estándar con potentes herramientas para la extensión del lenguaje.
Scopes es un lenguaje de programación de propósito general y una infraestructura de compilador específicamente adecuado para la creación de prototipos y el desarrollo de aplicaciones de alto rendimiento que necesitan una compilación de varias etapas en tiempo de ejecución.
Speedy.js es un compilador para un subconjunto de JavaScript bien considerado y sin problemas de rendimiento dirigido a WebAssembly. Debido a que WebAssembly tiene un tipo estático, el proyecto utiliza TypeScript como verificador de tipo y para resolver los tipos de símbolos del programa.
Unmaintained
Swift es un lenguaje de programación compilado de propósito general, multiparadigma, desarrollado por Apple Inc. para iOS, macOS, watchOS, tvOS, Linux y z/OS.
Tcl (Tool Command Language) es un lenguaje de programación dinámico muy potente pero fácil de aprender, maduro pero en evolución, altamente extensible y adecuado para una amplia gama de usos.
Theta es un lenguaje de programación funcional, moderno y de propósito general con un sistema de tipos sólido y una sintaxis expresiva. Presenta un diseño modular y admite coincidencia de patrones, sobrecarga de funciones y otras ventajas.
TurboScript es un lenguaje de programación experimental para programación paralela para web que se compila en JavaScript (asm.js) y WebAssembly (orientado a post-MVP). La sintaxis es similar a TypeScript y el compilador es de código abierto y está escrito en TypeScript. TurboScript no tiene dependencias.
TypeScript es un lenguaje de programación de código abierto desarrollado y mantenido por Microsoft. Es un superconjunto sintáctico estricto de JavaScript y agrega escritura estática opcional al lenguaje.
V es un lenguaje de programación compilado estáticamente escrito diseñado para crear software mantenible.
Un lenguaje de programación de sistemas recolectados de basura rápidos y livianos. Su compilador produce ejecutables nativos optimizados y independientes, módulos WebAssembly o frascos para el JVM.
WA es un lenguaje de programación de uso general diseñado para desarrollar el software de aspersencia de robustez y mantenimiento websembly. En lugar de requerir que se configuren las capas de herramientas complejas, simplemente puede instalarlo, o ejecutarlo en un navegador.
凹语言 ™ (凹读音 “WA” )是 针对 Wasm 平台设计的的通用编程语言 , 支持 Linux 、 MacOS 和 Windows等主流操作系统和 Chrome 等浏览器环境 , 同时也支持作为独立 shell 脚本和被嵌入脚本模式执行。
Wah es un lenguaje de nivel ligeramente más alto que es un superconjunto de websembly. Su objetivo es hacer que el formato de texto de WebAssembly sea un poco más amigable para los humanos, sin introducir nuevas sintaxis o tipos de datos.
Unmaintained
Walt es una sintaxis alternativa para el formato de texto WebAssembly. Es un experimento para usar la sintaxis de JavaScript para escribir lo más 'cerca del metal' posible. Es JavaScript con reglas. Los archivos .walt se compilan directamente al formato binario de WebAssembly.
Unmaintained
WebAssembly Macro Language: la sintaxis WAM es un superconjunto cercano a la sintaxis de WAST que es más conveniente para que los desarrolladores humanos escriban directamente.
Unmaintained
WASE: WebAssembly es fácil. WASE es un idioma, que trata de hacer que Wasm sea fácil de escribir. El lenguaje se mapea estrechamente a WebAssembly y se compila directamente con WASM Bytecode. Tiene una tipificación fuerte con inferencia de tipo.
Sí, websembly.
Wasm3
es el intérprete WebAssembly más rápido, que permite que el auto-anfitrión de WebAssembly.
Wonkey es un lenguaje de programación fácil de aprender, orientado a objetos, moderno y multiplataforma para crear videojuegos multiplataforma, altamente inspirados en la gama de idiomas "Blitzbasic".
Un lenguaje similar a Lisp que se compila en WebAssembly, escrito en Racket
Unmaintained
Toy C Compiler para x86-64 y wasm
Zig es un lenguaje de programación de uso general diseñado para robustez, optimización y capacidad de mantenimiento.
Lea las pautas de contribución si desea contribuir.
En la medida de lo posible según la ley, Steve Akinyemi ha renunciado a todos los derechos de autor y derechos relacionados o vecinos sobre este trabajo.