Ir al contenido principal

AssemblyScript: de Typescript a WebAssembly

 

AssemblyScript es un lenguaje que permite escribir código en TypeScript/JavaScript y compilarlo a WebAssembly. Su principal ventaja es la familiaridad para desarrolladores web, mientras que sus desventajas incluyen menor rendimiento comparado con Rust o C++ y un ecosistema aún limitado.

Es ideal para proyectos que requieren optimización moderada sin salir del mundo JavaScript.

  • Basado en TypeScript que compila a WebAssembly.
  • Diseñado para que desarrolladores web puedan aprovechar Wasm sin aprender C, C++ o Rust. 
  • Usa un subconjunto de TypeScript, lo que facilita la transición para quienes ya trabajan con JavaScript.

Ventajas de AssemblyScript:

  • Familiaridad: Los desarrolladores web que conocen TypeScript pueden empezar rápidamente. 
  • Integración sencilla: Se comunica bien con JavaScript, ideal para proyectos web híbridos. 
  • Curva de aprendizaje baja: No requiere aprender un lenguaje nuevo como Rust. 
  • Rapidez relativa: Aunque no alcanza el rendimiento de C++/Rust, es más rápido que JavaScript puro en cálculos intensivos.
  • Ecosistema web-friendly: Orientado a quienes ya trabajan con Node.js y frameworks modernos.

Desventajas de AssemblyScript

  • Menor rendimiento: No iguala la eficiencia de Rust o C++ en cálculos pesados. 
  • Subconjunto limitado de TypeScript: No todas las características del lenguaje están disponibles. 
  • Ecosistema joven: Menos librerías y soporte que Rust o C++. 
  • Depuración más difícil: El debugging de Wasm sigue siendo más complejo que en JavaScript.

AssemblyScript es útil en proyectos donde:

  • Se necesita optimizar partes críticas de una aplicación web sin abandonar JavaScript. 
  • Se desarrollan juegos ligeros o simulaciones en navegador. 
  • Se crean herramientas interactivas como editores de imágenes, audio o visualizaciones. 
  • Se busca experimentar con WebAssembly sin invertir en aprender Rust o C++.

AssemblyScript en un ejemplo

1. Creamos un proyecto:

$ mkdir mi-proyecto-wasm
$ cd mi-proyecto-wasm
$ npm init -y

2. Instalamos AssemblyScript:

$ npm install --save-dev assemblyscript

3. Editamos el archivo ``package.json``:

{
  "name": "mi-proyecto-wasm",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "type": "module",
  "devDependencies": {
    "assemblyscript": "^0.28.13"
  }
}

4. Inicializamos el proyecto:

$ npx asinit .

5. Editamos el archivo ``assembly/index.ts``:

export function suma(a: i32, b: i32): i32 {
  return a + b;
}

6. Compilamos:

$ npm run asbuild

Esto genera archivos .wasm en la carpeta build/.

7. Creamos este archivo ``main.js```:

import { createRequire } from "module";
const require = createRequire(import.meta.url);

const fs = require("fs");
const wasmBuffer = fs.readFileSync("./build/debug.wasm");

(async () => {
  const wasmModule = await WebAssembly.instantiate(wasmBuffer);
  console.log("La suma de 5 y 7 da: ", wasmModule.instance.exports.suma(5, 7)); 
})();

8. Ejecutamos con Node:

$ node main.js

Salida:

La suma de 5 y 7 da:  12

¡Hemos compilado código Typescript a WebAssembly!

AssemblyScript es una puerta de entrada práctica a WebAssembly para desarrolladores web.

Si tu objetivo es optimizar aplicaciones web sin salir del ecosistema JavaScript/TypeScript, es una gran opción. Pero si buscas máxima eficiencia y seguridad en memoria, Rust sigue siendo la mejor elección.

Enlaces:

https://www.assemblyscript.org/
https://alquimistadecodigo.blogspot.com/2026/04/teavm-convertir-codigo-java-webassembly.html

Comentarios

Entradas populares de este blog

Odin language: el lenguaje de programación orientado a datos para un desarrollo de software sensato

En esta serie sobre lenguajes de programación hablamos de Odin , un lenguaje orientado a datos. Un nuevo lenguaje de programación que nos podrá recordar a lenguajes como C++, Python, Golang o hasta Rust. Instalación (Windows): 1 2 3 4 $ git clone https://github.com/odin-lang/Odin $ cd Odin $ git pull $ build.bat release Debemos asegurarnos de crear la variable de entorno: Nombre: ODIN_HOME Valor: C:\Users\HP\Documents\pruebasOdin\Odin Ejemplo 1. Como primer programa tendremos al clásico "Hola, mundo". holamundo.odin package holamundo import " core:fmt " main : : proc ( ) { fmt . println ( " ¡Hola, mundo desde Odin! " ) } Construimos: $ odin build holamundo . odin - file Ejecutamos: $ holamundo .exe Recordar que si usamos Visual Studio Code podemos instalar el plugin de Odin Language: https://marketplace.visualstudio.com/items?itemName=DanielGavin.ols Ejemplo 2. Programa que muestre las variables que pod...

Programación Windows Batch (CMD) parte 3

Crear ciclos para efectuar operaciones tediosas nos ahorrará tiempo para realizar otras tareas. En está ocasión veremos ciclos con FOR . ¿Cuál es la síntaxis de bucle FOR en Windows Batch? Si está dentro de un archivo *.bat : FOR %%variable IN (seq) DO operaciones Si lo ejecutamos en una terminal: FOR %variable IN (seq) DO operaciones Ejemplo 1 . Recorrer una secuencia de números del 0 al 5: recorrer.bat @ echo off FOR %%i in ( 0 1 2 3 4 5 ) DO echo Hola no. %%i pause Nos imprimirá en pantalla: Hola no. 0 Hola no. 1 Hola no. 2 Hola no. 3 Hola no. 4 Hola no. 5 ¿Puedo usar contadores? Si, se pueden usar. Ejemplo 2 . Uso de contadores: contador.bat @ echo off set numeros = 1 2 3 4 5 6 7 8 9 10 set cont = 0 for %%a in ( %numeros% ) do ( echo Hola no. %%a :: Contador set /a cont+ = 1 ) echo Total: %cont% Este código nos imprimirá, además de los mensajes Hola no. 0 ..., el total de valores conta...

z/OS, ¿Qué es? y ¿Cuáles son sus herramientas?

  En este post veremos las herramientas de z/OS de IBM. z/OS es un sistema operativo de mainframe desarrollado por IBM.  Es parte de la serie IBM z Systems (anteriormente conocida como System z), que se utiliza en los sistemas mainframe de IBM. z/OS es uno de los sistemas operativos más utilizados en el mundo empresarial para ejecutar aplicaciones críticas y procesar grandes volúmenes de datos. Características clave de z/OS: Escalabilidad : z/OS es conocido por su capacidad para manejar grandes cargas de trabajo y escalabilidad vertical, lo que permite agregar recursos de hardware para satisfacer las demandas de procesamiento. Confiabilidad y disponibilidad : z/OS está diseñado para ofrecer alta disponibilidad y confiabilidad. Incorpora características como redundancia y recuperación ante fallas para garantizar la continuidad de las operaciones. Seguridad : Proporciona una amplia gama de funciones de seguridad, como autenticación, autorización y auditoría, para proteger los...