Linus Torvalds, el jefe supremo del núcleo Linux, ha hecho más ambiguo el uso de la sangría en los archivos de configuración del núcleo, intencionadamente para eliminar a los analizadores inferiores.
Ayer se publicó Kernel 6.9-rc4, la última versión candidata de la próxima versión del núcleo de Linux. Entre los controladores habituales y correcciones de errores, que contiene algunos ajustes más para bcachefs, así como algunas mitigaciones contra el recientemente descubierto Spectre estilo Native Branch History Injection fugas de datos.
Puede leer también | Linus Torvalds anuncia la primera versión candidata del núcleo Linux 6.9
Sin embargo, el cambio que ha hecho más gracia al escritorio de Reg FOSS es un cambio en el archivo de configuración del propio Linus, titulado "Kconfig: añadir algunas pestañas ocultas a propósito". Cambió una sangría de espacio por una sangría de tabulación para atrapar a los analizadores de mala calidad.
En concreto, en este bloque de texto del código fuente del kernel...
default 12 if PAGE_SIZE_4KB default 13 if PAGE_SIZE_8KB default 14 if PAGE_SIZE_16KB default 15 if PAGE_SIZE_32KB default 16 if PAGE_SIZE_64KB default 18 if PAGE_SIZE_256KB
...el carácter entre default y el valor entero es ahora una sangría de tabulación de ocho caracteres de ancho. Sucede que cae al final de un tabulador, por lo que aparece como un carácter de espacio.
Si bien Torvalds es famoso por su enfoque robusto para dar retroalimentación en público, ha estado trabajando en ello, y en 2018 se tomó un descanso para ayudarlo a controlar mejor las emociones en sus correos electrónicos.
Puede leer también | Linus Benedict Torvalds: Héroe de la comunidad del código abierto
Este cambio podría ser un ejemplo de ello. El comandante del núcleo detectó un cambio de código en particular, el commit d96c36004e31 que tenía un único propósito:
Arreglar la entrada FTRACE_RECORD_RECURSION_SIZE, sustituir el tabulador por un carácter de espacio. Ayuda a los analizadores de Kconfig a leer el archivo sin errores.
Kconfig es el lenguaje de configuración utilizado para controlar el sistema de construcción del núcleo, y como muchos otros lenguajes de reglas fuera de lado, utiliza sangría para delimitar bloques. Sí, espacios en blanco significativos, como en Python, YAML y muchos otros lenguajes de programación y configuración. Lo ames o lo odies, no puedes escapar de él.
Con este cambio, está complicando intencionadamente el uso de la sangría en los archivos de configuración de construcción del núcleo, para forzar a los autores de las herramientas que analizan dichos archivos a mejorar su juego. Como él explica:
Asegurémonos de que se arregla. Porque si no puedes parsear tabuladores como espacios en blanco, no deberías estar parseando los ficheros Kconfig del kernel.
Esto nos parece un ejemplo de la Ley de Postel, que Postel consagró en el RFC 761 en 1980: Sé liberal en lo que aceptas, y conservador en lo que envías. Muchos lenguajes marcados con sangría tienen un estilo recomendado, como el PEP-008 de Python, que dice muy clara y distintamente:
Use 4 espacios por nivel de sangría.
Pero de hecho, aunque la especificación es estricta, el intérprete aceptará sin problemas diferentes números de espacios, o tabuladores en algunas líneas y espacios en otras, siempre que los desarrolladores sean coherentes en su uso. Esto es lo que Linus quiere ver, y con razón considera que la herramienta de análisis sintáctico que fallaba cuando encontraba tabuladores en lugar de espacios no funcionaba.
Así que, en lugar de una respuesta por correo electrónico salvajemente crítica, está utilizando a sabiendas y con alevosía una sangría más complicada con el fin de exponer las herramientas que no pueden manejarla. Esto debería eliminar las herramientas más débiles, dejando sólo las más aptas y mejor adaptadas... sin herir públicamente los sentimientos de nadie.