Cover photo

Introducción a Fe

Fundamentos del lenguaje Fe: Estructura y características únicas para el desarrollo en EVM

Importante

  • El lenguaje es muy reciente, así que puede existir discrepancias después de la publicación de este post.

  • NO ESTÁ LISTO PARA PRODUCCIÓN: Aún existen ciertos errores y limitantes dentro; a menos que el equipo detrás de Fe notifique lo contrario, recomiendo usarlo local o en testnet

Que es Fe

Si describimos de una manera más técnica el lenguaje, diríamos que es un lenguaje estático para EVM con una sintaxis similar a Rust; lo que significa con ello es que Fe verifica los tipos de datos (como enteros, cadenas, booleanos) durante la compilación, antes de ejecutar el programa, garantizando una mejor detección temprana de errores. Junto con la sintaxis rust-like, nos permite tener una mejor expresividad y seguridad. crear contratos inteligentes. El lenguaje de programación ha sido desarrollado por el argot collective, los mismos responsables de proyectos como Solidity, Sourcify, entre otros, lo cual nos asegura una compatibilidad total del lenguaje con EVM.

Si has utilizado o entiendes un poco de la sintaxis (escritura) en solidity notaras una extrema diferencia en como se declaran funciones variables y como es su estructura en general, estos son algunos de los mas importantes:

  1. Todo es inmutable por defecto:
    Cada variable, campo de storage y parámetro por defecto es inmutable, lo que significa que una vez declarada no puede ser reescrita. Para que sea mutable (que se pueda escribir), es necesario declararla antes de la declaración.

  2. Posee un sistema de efectos:
    O sea, que cada handler o función debe declarar qué recursos del contrato puede leer o modificar, no hay efectos ocultos.

  3. Sistema de paso de mensajes:
    Los contratos no exponen funciones directamente. Definen un buzón de mensajes (msg) y los procesan mediante handlers (recv). Esto refleja fielmente cómo la EVM ejecuta transacciones.

  4. Proyectos como lingotes (ingots):
    En Fe tu proyecto se llama ingot, algo parecido a una app que contiene varios contratos inteligentes. Es decir, como un crate en Rust o un package en npm, el ingot es la unidad de proyecto, pudiendo contener múltiples contratos, funciones comunes y dependencias. Esto permite una mejor organización lógica, encapsulación y reusabilidad del código.

  5. Toolchain completa incluida:
    Fe trae todo listo sin dependencias externas: gestor de paquetes (ingots), formateador de código (fe fmt), servidor de lenguaje para IDEs, generador de documentación (fe doc), y testing con simulación EVM integrada (fe test).

  6. Diseñado para EVM, no adaptado:
    A diferencia de lenguajes que añadieron soporte blockchain como capa extra, Fe fue construido específicamente para la Ethereum Virtual Machine. Entiende nativamente tipos como address y u256, genera bytecode eficiente y mantiene compatibilidad ABI con herramientas y contratos existentes.

  7. Pattern matching:
    Control de flujo que descompone datos y verifica todos los casos posibles. Similar a un switch inteligente que el compilador comprueba exhaustivamente — no puedes olvidar manejar una variante.

    El objetivo de Fe es prevenir bugs antes de que lleguen a producción, ofreciendo garantías fuertes sobre lo que el código puede y no puede hacer una vez compilado.