Cover photo

Cómo hacer setup de Fe

Guía paso a paso para configurar tu entorno de desarrollo en Fe

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


Setup del cli

Para poder tener preparado tu entorno de desarrollo, es muy sencillo, como abrir tu consola de comandos y pegar esta instrucción.

curl -fsSL https://raw.githubusercontent.com/argotorg/fe/master/feup/feup.sh | bash

Esto hará que instale el compilador de fe y te agregue feup para futuras actualizaciones, además de agregar el directorio de Fe a tu PATH

Hecho esto solo tendremos que abrir y cerrar la consola y tendremos Fe listo para usar. Para comprobar que lo tenemos instalado tan solo debemos escribir:

fe --version

y nos lanzará la versión del compilador

Vamos a hacer un tour rápido por lo que puedes hacer con el comando Fe

Subcomando

Descripción

build

Compila código Fe a bytecode EVM. Genera los artifacts para deploy

check

Compila sin generar bytecode. Valida sintaxis y tipos rápidamente, útil para CI o pre-commit hooks.

doc

Genera la documentación del proyecto

tree

Muestra la estructura de dependencias del ingot (qué ingots depende de cuáles).

fmt

Formatea automáticamente el código Fe según el estilo oficial del lenguaje.

test

Ejecuta tests marcados con #[test]. Acepta filtros, paralelización, y flags de debug

new

Crea un nuevo proyecto Fe (ingot) o workspace con la estructura estándar

completion

Genera scripts de autocompletado para tu shell (bash, zsh, fish).

lsif

Genera índice LSIF (Language Server Index Format) para navegación de código en editores/IDEs

root

Encuentra la raíz del ingot o workspace desde cualquier subdirectorio. Útil para scripts.

lsp

Inicia el Language Server Protocol para integración con editores (VSCode, Neovim, etc.). Provee autocompletado, diagnostics, go-to-definition.

scip

Genera índice SCIP (Successors to LSIF) para navegación de código, formato más moderno que LSIF.

help

Muestra ayuda de comandos y subcomandos.

Set up en editor

Como ya tienes Fe en tu cli de preferencia, lo único que queda es hacer el set up en tu editor de código de preferencia, es opcional pero será una gran ayuda cuando estés creando código.

Hasta la fecha de creación de este post, las extensiones oficiales abarcan:

  • vs code

  • zed

  • neovim

  • emacs

Veamos cómo instalar cada uno de ellos o si lo prefieres salta hasta el que usas

vs code

  1. Descarga el .vsix desde la sección de releases del repositorio de github https://github.com/fe-lang/vscode-fe/releases

  2. Tienes dos opciones para instalarlo

    1. Abre VS Code y desde la command palette ejecuta "Extensions: Install from VSIX" y desde ahí escoge el archivo

    2. Desde el CLI, apuntando a la carpeta donde lo descargaste (generalmente es Downloads), ejecuta code --install-extension fe-language-*.vsix

zed

  1. Clona el repo usando git clone https://github.com/fe-lang/zed-fe

  2. En zed, ve a Extensions y Install Dev Extension y selecciona el directorio del repo clonado

neovim

Debe tener Neovim 0.9+ con un compilador de C (GCC o Clang), ya con esos requerimientos solo debe agregar en:

lazy.nvim

{
    "https://github.com/fe-lang/nvim-fe",
    config = function() require("nvim_fe").setup() end,
}

packer.nvim

use({
    "https://github.com/fe-lang/nvim-fe",
    config = function() require("nvim_fe").setup() end,
})

emacs

Debes tener Emacs 29.1+ junto con un compilador de C, una vez cumpleindo con los requerimientos solo se debe agregar:

(use-package fe
  :vc (:url "https://github.com/fe-lang/emacs-fe"
       :branch "main"))

Para iniciar automáticamente el servidor de lenguaje con Eglot:

(setq fe-mode-eglot-auto t)

Con el CLI y el editor listos, ya puedes crear ingots, compilar contratos y ejecutar tests localmente. En próximos posts exploraremos la sintaxis de Fe en profundidad y replicaremos contratos clásicos de Solidity para comparar ambos enfoques.