vivo toyota motos korea japan hyundai español brasil sbt

toyota - ¿Por qué sbt anteriormente(versión ≤ 0.13.6) requería líneas en blanco entre las configuraciones de los archivos.sbt?



sbt korea (1)

A partir de sbt 0.13.7, las líneas en blanco ya no son necesarias. Así que lo siguiente es ahora información histórica.

La respuesta corta es que las líneas en blanco hacen que el archivo sea legible por la máquina y se pueda escribir en la máquina .

Vamos a desempacar esto.

En primer lugar, tenga en cuenta que es común que las configuraciones usen varias líneas, por ejemplo, una Seq larga o un cuerpo de tarea que contenga código.

En segundo lugar, tenga en cuenta que las configuraciones son expresiones, no declaraciones. Así que sbt no puede inferir puntos y coma entre ellos. En Scala, los puntos y coma solo se infieren entre las afirmaciones.

Por lo tanto, se necesitan líneas en blanco para que sbt sepa dónde termina una configuración y comienza la siguiente.

En teoría, ¿podría determinar eso de todos modos? Quizás. En 2011, Mark Harrah (el creador de sbt) wrote :

El uso del compilador para separar expresiones [...] puede suceder en algún momento, pero trato de evitar introducir la sobrecarga de iniciar un compilador siempre que sea posible

Así que resulta que una preocupación clave aquí es el rendimiento . El compilador de Scala es notoriamente lento. Quizás te preguntes, bueno, la configuración tendrá que compilarse de todos modos, ¿no es así? Sí, pero pocas personas se dan cuenta de que para mejorar el rendimiento, cada configuración en un archivo .sbt se compila por separado y el resultado de la compilación se almacena en caché , incluso entre invocaciones de sbt. Por lo tanto, si edita su compilación y cambia una configuración, solo se recompilará esa configuración .

Anteriormente, dije que los archivos .sbt se pueden escribir en la máquina, no solo en la máquina. Puede cambiar la configuración sobre la marcha y luego guardar los cambios con la session save . En 2014 Jason Zaugg (de Typesafe) wrote :

La decisión [en líneas en blanco] originalmente vino de la restricción de que build.sbt debería ser editable por máquina. En una sesión SBT, puede ejecutar set foo := bar , y eso se guardará en el archivo.

En la práctica, las personas no tienden a usar esta característica tanto, y podríamos revisar esta decisión [...]

Para obtener más detalles sobre las consideraciones de diseño detrás de las líneas en blanco y cómo esto podría cambiar en el futuro, vea github.com/sbt/sbt/wiki/Improving-.sbt-format-(take-2) de Josh Suereth (también de Typesafe).

Entonces, por ejemplo, no podrías escribir:

a := 3 b := 4

Tenías que separarlos, así:

a := 3 b := 4

No puedo pensar en otro formato de archivo con un requisito similar. Definitivamente fue sorprendente para los recién llegados. Incluso algunos usuarios sbt de larga data consideraron objetable.

En mi experiencia, esta fue la pregunta más frecuente acerca de sbt, antes de que se modificara.