Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Compilarlo desde el código fuente

Para usar Ferrous Lineup alcanzan las descargas ya preparadas (ver Instalarlo, en el manual). Para leer su código con este libro, cambiarlo y ejecutar sus tests, compílalo tú. Son unos pocos comandos en Linux, macOS o Windows.

1. Instalar Rust

Rust se instala con rustup, una pequeña herramienta que descarga el compilador (rustc) y la herramienta de compilación (cargo) y los mantiene al día:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

En Windows, descarga y ejecuta en cambio rustup-init.exe desde https://rustup.rs. Después reinicia la terminal y comprueba que funcionó:

cargo --version
rustc --version

Ferrous Lineup necesita Rust 1.95 o más nuevo, como dice rust-version en el Cargo.toml raíz: usa la edición 2024 del lenguaje (ver Ediciones), las cadenas de if let, que llegaron en Rust 1.88, y los bloqueos de archivos, que llegaron en 1.89, y egui y eframe, que dibujan la ventana, necesitan 1.95. Si tu Rust es más viejo, rustup update lo arregla.

2. Instalar las herramientas de compilación del sistema

Rust descarga sus propias bibliotecas, los crates, por su cuenta, pero necesita un enlazador del sistema, y en Linux algunos crates hablan con bibliotecas que trae el sistema: ALSA para el sonido, y X11 o Wayland para las ventanas.

Debian o Ubuntu:

sudo apt install build-essential pkg-config libasound2-dev \
    libxkbcommon-dev libxkbcommon-x11-0 libwayland-dev

Fedora:

sudo dnf install gcc pkgconf-pkg-config alsa-lib-devel \
    libxkbcommon-devel libxkbcommon-x11 wayland-devel

Los diálogos de archivos usan el portal del escritorio, que GNOME y KDE ya tienen; en un gestor de ventanas sin escritorio, instala xdg-desktop-portal-gtk. El MIDI pasa por el secuenciador de ALSA, que los sistemas de escritorio ya cargan; si el menú MIDI de la aplicación dice que MIDI no está disponible, cárgalo con sudo modprobe snd-seq.

macOS: las herramientas de línea de comandos de Apple traen el enlazador y las bibliotecas del sistema:

xcode-select --install

Windows: cuando rustup-init.exe lo pregunte, deja que instale las Visual Studio Build Tools; Rust usa su enlazador. Después usa los comandos de abajo en PowerShell o en el Símbolo del sistema.

3. Conseguir el código y ejecutarlo

Clona el repositorio (Git viene con las herramientas de compilación en macOS y Linux; en Windows, instálalo desde https://git-scm.com) y compila:

git clone https://github.com/naelolaiz/ferrous-lineup
cd ferrous-lineup
cargo run --release

La primera compilación tarda unos minutos, porque Cargo compila cada dependencia; las siguientes compilan solo lo que cambió. --release activa las optimizaciones, que el código de audio necesita para llegar a tiempo. Mientras trabajas en el código, cargo run solo compila más rápido, y conserva la consola donde aparecen los mensajes y los pánicos.

La primera vez, una ventana encima ofrece sonidos de instrumentos reales; SoundFonts y General MIDI dice qué hace.

La ventana principal, en el manual, dice para qué sirve cada parte.

4. Desde la línea de comandos

El programa acepta algunos argumentos propios. Después de cargo run, -- dice que lo que sigue es para el programa, no para Cargo:

cargo run --release -- my-song.lineup                       # open a project
cargo run --release -- --demos                              # list the demos
cargo run --release -- --trace "Frère Jacques" --out round.tsv   # play a demo headless, note by note
cargo run --release -- --help

--trace es la traza de reproducción: toca un proyecto o una demostración como lo hace Archivo > Exportar WAV…, sin ventana ni tarjeta de sonido, y escribe en una tabla cada nota que empieza.

5. Ejecutar los tests

cargo test

ejecuta cada test de cada crate del workspace. Cómo se prueba el código dice qué tipos hay y cómo ejecutar algunos de ellos.

6. Construir los libros

Los libros se escriben con mdBook, una herramienta de Rust. Instálalo una vez, en la versión que usa el flujo de trabajo, y construye:

cargo install mdbook --version 0.5.4 --locked
cd book-es
mdbook serve --open

mdbook serve construye el sitio web, lo abre, y lo vuelve a construir cada vez que guardas una página. book/, manual/ y manual-es/ funcionan igual. Cómo se construyen los libros también imprime el PDF.

Comandos útiles

ComandoQué hace
cargo buildCompila todo, en modo de depuración
cargo runCompila y arranca la aplicación
cargo testEjecuta todos los tests
cargo fmtDa formato a todo el código en el estilo estándar de Rust
cargo clippyEjecuta el linter, que sugiere mejores maneras de escribir las cosas
cargo doc --openConstruye la documentación de la API a partir de los comentarios /// y la abre