Buck es un sistema de compilación en varios idiomas desarrollado y utilizado por Facebook . Fue diseñado para construir módulos pequeños y reutilizables que constan de código y recursos dentro de un monorepo . [4] Es compatible con C ++ ( Objective-C , Swift ), Shell , Java ( Kotlin , Groovy ), Python , Lua , OCaml , Rust , Go y otros lenguajes como entrada de código fuente. Puede producir salidas binarias para una variedad de plataformas de destino, incluidos IOS , Android, .NET y Java VM runtimes . Buck tiene la licencia Apache License 2.0 . [3]
Desarrollador (es) | |
---|---|
Versión inicial | 17 de abril de 2013 [1] |
Lanzamiento estable | 2021.01.12.01 / 12 de enero de 2021 [2] |
Repositorio | |
Escrito en | Java |
Sistema operativo | Multiplataforma |
Licencia | Licencia de Apache 2.0 [3] |
Sitio web | buck |
Buck requiere la declaración explícita de dependencias y la impone mediante un árbol de enlace simbólico . Debido a que todas las dependencias son explícitas y Buck tiene un gráfico acíclico dirigido de todos los archivos de origen y los objetivos de compilación, Buck puede realizar una recompilación incremental, solo reconstruyendo los objetivos después de los archivos que han cambiado. Buck calcula una clave para cada objetivo que es un hash del contenido de los archivos de los que depende. Almacena una asignación de esa clave al destino de la compilación en una caché de compilación. Si los destinos son funciones deterministas del contenido de sus dependencias, entonces esta caché de compilación se puede compartir entre los desarrolladores y la integración continua (CI), ya que Buck admite una API de caché HTTP .
Ver también
Referencias
- ^ Bolin, Michael (14 de mayo de 2013). "Buck: Cómo creamos aplicaciones de Android en Facebook" . Notas. Facebook . Ingeniería de Facebook . Consultado el 16 de julio de 2019 .
- ^ "Lanzamientos · facebook / buck" . GitHub .
- ^ a b "dólar / licencia" . 29 de abril de 2013 . Consultado el 20 de octubre de 2017 .
- ^ "Resumen" . Buck: una herramienta de construcción . Consultado el 16 de julio de 2018 .
Buck está diseñado para crear múltiples entregables desde un único repositorio, es decir, un monorepo, en lugar de hacerlo desde varios repositorios.