2 puntos por GN⁺ 2025-02-28 | 1 comentarios | Compartir por WhatsApp
  • Fish es un shell de línea de comandos fácil de usar para macOS, Linux y otros sistemas operativos tipo Unix
  • A partir de la versión 4.0.0, el código central de Fish fue portado a Rust desde C++
    • Esto trae cambios importantes en las dependencias y en la forma de compilación, pero no tiene un impacto directo para los usuarios
  • Cambios incompatibles:
    • Se introduce una nueva notación de teclas para el comando bind
    • ctrl-c ahora llama a clear-commandline, y el comportamiento anterior sigue disponible como cancel-commandline
    • Los resultados de la función random según el valor de semilla pueden ser distintos a los de versiones anteriores
    • Las variables en posición de comando ya no pueden expandirse como palabras clave de subcomandos
    • functions --handlers ahora enumera los handlers en el orden en que fueron definidos
    • La función qmark-noglob ahora está activada por defecto

Mejoras y correcciones

  • Protocolo de teclado: soporte para modifyOtherKeys de XTerm y el protocolo de teclado de kitty
  • Binarios auto-instalables: se puede compilar fish como un binario auto-instalable
  • Historial de comandos: la función fish_should_add_to_history permite decidir qué comandos se agregan al historial
  • Función de deshacer: el historial se conserva incluso después de ejecutar un comando
  • Restricción de abreviaturas: las abreviaturas pueden expandirse solo para comandos específicos

Funciones obsoletas y eliminadas

  • commandline --tokenize fue reemplazado por commandline --tokens-expanded
  • El uso de nombres de teclas mediante la sintaxis bind -k quedó obsoleto
  • Se eliminó el modo de pegado

Mejoras de scripting

  • Nuevo comando de historial: history append permite agregar comandos al historial sin ejecutarlos
  • Nueva redirección: `

1 comentarios

 
GN⁺ 2025-02-28
Comentarios de Hacker News
  • Lo más interesante de Fish 4.0 es que ahora está escrito en Rust
    • Me gustaría comprobar con pruebas si hay alguna diferencia perceptible
  • Dicen que no habrá un impacto directo para los usuarios
    • Reescribieron el núcleo de Fish, pero casi todo funciona igual
  • Me pregunto cuál es la mayor desventaja para quienes se cambiaron al shell Fish
    • Cuando, después de acostumbrarte en tu sistema, tienes que usar Bash o Zsh en los servidores de la empresa
    • Si vas a cambiarte de Bash a Fish, también valdría la pena considerar cambiarte a Nushell
  • Como usuario de Zsh, quiero probar Fish
    • Estoy agregando plugins a Zsh para que funcione como Fish
  • Si usas Homebrew, Fish todavía no está disponible
    • Está previsto que lo agreguen
  • He usado Fish durante varios años, principalmente por su excelente autocompletado
    • El sistema simplificado de temas/prompts y la gestión de plugins de oh-my-fish también son buenos, pero secundarios
  • El resto de las funciones de Fish que no son compatibles con Bash resultan incómodas
    • En particular, la gestión de variables de entorno es un problema
    • En principio, tiene un mejor diseño que Bash, pero la diferencia no es tan grande y, como se usa poco, tengo que reaprenderlo cada vez
    • Es incómodo cuando copias y pegas instrucciones de configuración desde la documentación
  • Me pregunto cómo se hicieron los ajustes de desarrollo para la migración a Rust
    • Solo se ve un único PR (#9512)
  • Me pregunto cuánto creció el binario después de reescribirlo en Rust
  • clear-commandline es una función interesante
    • Hay dificultades para mantener la consistencia entre Windows y macOS
    • No logro usar Karabiner correctamente
    • Voy a revisar la configuración predeterminada de cancel-commandline