Brush v0.4.0

Brush v0.4.0

Brush es un shell de comandos escrito en Rust, que combina compatibilidad con POSIX y Bash con garantías de seguridad de memoria y rendimiento. El proyecto tiene como objetivo convertirse en una alternativa completa a los shells tradicionales, permitiendo la ejecución de scripts existentes y el uso de .bashrc prácticamente sin cambios. Esta versión amalgama varios meses de trabajo y más de 200 solicitudes de extracción combinadas, impulsando significativamente el shell hacia un reemplazo completo de Bash y entornos compatibles con POSIX.

Principales áreas de desarrollo en esta versión:

  • compatibilidad con Bash: se han añadido set -e, set -u, pipefail, failglob, manejador ERR, coprocessos y mucho más;
  • fiabilidad: se ha mejorado el manejo de excepciones - canales cerrados, salida corrupta, historial no UTF-8 y otros;
  • plataformas: se ha ampliado el soporte para macOS (funcionando como shell de inicio), mejorado el rendimiento en Windows, FreeBSD, Android y sistemas de 32 bits;
  • interactividad: se han añadido configuraciones opcionales TOML, ganchos preexec/precmd, mejorado el soporte de macros readline y más.

Principales mejoras en la compatibilidad con Bash

Las actualizaciones más significativas de esta versión incluyen una ampliación considerable del soporte de las funcionalidades de Bash. Manejo de errores:

  • set -e (errexit) - salida inmediata en caso de error;
  • set -u (nounset) - error al referirse a una variable no declarada;
  • pipefail - el código de retorno de la tubería se determina por el último comando fallido;
  • failglob - la ausencia de coincidencias para una expresión glob ahora resulta en un error.

Manejadores (Traps) y coprocessos:

  • manejador ERR - permite ejecutar comandos cuando ocurre un error;
  • coprocessos (coproc) - iniciando procesos en segundo plano con comunicación bidireccional.

Comandos internos:

  • se ha mejorado el manejo de muchas construcciones aritméticas, incluidos literales con bases altas, desbordamientos y operadores de asignación;
  • se han realizado correcciones y mejoras en comandos internos: caller, read, getopts, printf y otros.

Ampliación del soporte de plataformas:

La versión v0.4.0 hace que el shell esté disponible en una gama más amplia de dispositivos:

  • macOS: se ha solucionado un problema que hacía que el shell se bloquease al iniciar sesión. Ahora brush se puede usar como shell de inicio (login shell);
  • Windows: mejoras en el manejo de rutas, se ha añadido la emulación de /dev/null, lo que mejora significativamente la usabilidad en Windows;
  • FreeBSD y Android: se soporta una compilación para estas plataformas;

Funciones interactivas y API

  • Configuración: se ha añadido soporte para un archivo de configuración TOML opcional (~/.config/brush/config.toml) para ajustes específicos de brush;
  • Personalización: se implementaron estilos zsh preexec/precmd hooks (bajo una bandera experimental), útiles para crear invitaciones personalizadas y herramientas de medición de tiempo;
  • API para desarrolladores: el tipo Shell ahora está parametrizado por extensiones (ShellExtensions), lo que permite a los desarrolladores agregar sus propios comandos integrados y modificar el comportamiento de las variables sin necesidad de bifurcar el proyecto;
  • Varios:
    • se mejoró el soporte de macros readline para compatibilidad con starship, atuin y fzf (github.com);
    • se añadieron capacidades de serialización de AST y estado de la shell a través de serde;
    • ahora en brush-parser y brush-core se encuentran funciones serde para permitir la serialización de AST y estado de la shell.

Fuente: linux.org.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster