Un núcleo, varias interfaces
Ferrox es un explorador de archivos en Rust que parte de una separación concreta: las operaciones del sistema de archivos no deberían depender de cómo se muestran al usuario. Un mismo núcleo puede servir a una línea de comandos y, más adelante, a una interfaz de terminal interactiva.
El proyecto está en v0.1.0-alpha, según su README. La implementación actual es una aplicación de espacio de usuario con un backend local basado en std::fs. No es un sistema operativo, una GUI terminada ni una herramienta con rendimiento comparativo demostrado.
Arquitectura
El workspace de Cargo contiene tres crates con responsabilidades distintas:
| Componente | Responsabilidad | Estado documentado |
|---|---|---|
ferrox-core |
Contrato VFS, modelos y backend local | Implementado, API alfa |
ferrox-cli |
Argumentos, comandos y presentación en consola | Implementado |
ferrox-tui |
Futura interfaz interactiva de terminal | Placeholder |
El trait FileSystem define read_dir, metadata, exists, create_dir, remove, rename y find. LocalFileSystem implementa esas operaciones sobre el sistema de archivos del equipo. Los modelos VfsEntry, VfsMetadata y NodeType representan entradas, metadatos y tipos de nodo.
ferrox-cli
│
▼
FileSystem → LocalFileSystem → std::fs
▲
│
ferrox-tui (prevista; aún no integrada)
La CLI usa clap para interpretar argumentos. El núcleo mantiene separadas las operaciones y la presentación: por ejemplo, ordenar directorios primero y formatear tamaños son tareas de la CLI.
Qué está implementado
- Listado con
ls, colocando directorios antes que archivos y ordenando nombres sin distinguir mayúsculas. - Consulta de metadatos con
stat. - Creación de directorios con
mkdir, movimiento o renombrado conmvy eliminación conrm. - Búsqueda recursiva con
find, mediante una pila explícita y coincidencia de subcadenas sensible a mayúsculas. - Tamaños legibles en B, KB, MB y GB en el listado.
- Ocho pruebas unitarias del backend local presentes en el código revisado, usando directorios temporales.
La presencia de pruebas es evidencia de trabajo de verificación, no una afirmación de que se hayan ejecutado ni de cobertura exhaustiva en esta revisión del portfolio.
Probar la CLI
Se necesita un entorno de desarrollo Rust y Cargo. Estos comandos compilan desde el repositorio y muestran operaciones de consulta; no son una demo ejecutándose en esta web.
git clone https://github.com/fabricioarce/ferrox.git
cd ferrox
cargo build --release
cargo run -p ferrox-cli -- --help
cargo run -p ferrox-cli -- ls .
cargo run -p ferrox-cli -- stat README.md
cargo run -p ferrox-cli -- find main .
En el código revisado, find recibe primero el patrón y después la ruta opcional: find <pattern> [path]. Esta ficha sigue la definición de argumentos de la CLI, aunque un ejemplo del README invierte ese orden.
Ferrox es software alfa.
rmelimina directorios recursivamente y no implementa una papelera o confirmación en el código revisado. Para explorar operaciones de escritura, usa únicamente datos de prueba prescindibles.
Limitaciones y próximos pasos
La TUI aún imprime un mensaje de placeholder. El VFS actual es síncrono; la E/S asíncrona, la búsqueda aproximada y la interfaz de tres paneles son planes del roadmap, no funciones disponibles.
La búsqueda actual omite directorios cuya lectura falla, sin reportar esos errores al llamador. La revisión tampoco demuestra un manejo exhaustivo de enlaces simbólicos, permisos, árboles grandes o fallos de operaciones. Son aspectos que conviene verificar antes de recomendar un uso más amplio.
La GUI, los plugins y la posible adaptación a un entorno de sistema operativo propio pertenecen a la visión de largo plazo. Las metas de latencia del roadmap son objetivos, no benchmarks alcanzados.
Evidencia y referencias
Esta ficha describe una instantánea revisada el 7 de septiembre de 2026, basada en el commit f8661c3, fechado el 6 de septiembre de 2026. No se actualiza automáticamente al cambiar el repositorio.