Kit de herramientas para la resolución de restricciones incrementales
Cassowary es un conjunto de herramientas de resolución de restricciones incrementales que resuelve de manera eficiente sistemas de igualdades y desigualdades lineales . Las restricciones pueden ser requisitos o preferencias. El código del cliente especifica las restricciones que se deben mantener y el solucionador actualiza las variables restringidas para que tengan valores que satisfagan las restricciones.
Cassowary fue desarrollado por Greg J. Badros, Alan Borning y Peter J. Stuckey, y fue optimizado para aplicaciones de interfaz de usuario. [1] Badros utilizó Cassowary, entre otros, para implementar Constraint Cascading Style Sheets (CCSS), una extensión de Cascading Style Sheets (CSS). CCSS agrega soporte para restricciones de diseño . Estas permiten a los diseñadores describir el diseño de una página web de una manera más flexible. Cassowary se utiliza para resolver estas restricciones y calcular el diseño final.
La distribución original, [2] sin mantenimiento desde 2000, incluía implementaciones de Smalltalk , C++ y Java , junto con enlaces para GNU Guile , Python y STk. Existen implementaciones de terceros para JavaScript , [3] Dart , [4] Squeak , [5] Python , [6] [7] .NET Framework , [8] y Rust . [9]
Aplicaciones
- A partir de septiembre de 2014, The Grid está desarrollando GSS, un lenguaje de diseño y motor de diseño para la web. [10] Es una extensión moderna de CCSS. [11]
- Layx, un lenguaje de diseño para la web diseñado teniendo en mente la facilidad de uso. [12]
- Scwm , el administrador de ventanas de restricciones de esquema.
- A partir de 2011, Cassowary se utiliza como algoritmo en el motor de diseño para Mac OS X (Lion y superiores) e iOS (6 y superiores). [ cita requerida ]
- El motor de diseño de Enaml está construido sobre el optimizador de restricciones lineales Cassowary. [13] [14] [15] [16]
Referencias
- ^ Algoritmo de resolución de restricciones aritméticas lineales de Cassowary, Autores: Greg J. Badros, Alan Borning y Peter J. Stuckey
- ^ "Kit de herramientas para la resolución de restricciones de casuario". Universidad de Washington.
- ^ cassowary.js en GitHub
- ^ google/cassowary.dart, Google, 12 de agosto de 2020 , consultado el 8 de diciembre de 2020
- ^ Casuario
- ^ Casuario en GitHub
- ^ kiwi en GitHub
- ^ Vermeulen, Jo. "Casuario.Net". jovermeulen.com . Consultado el 10 de diciembre de 2020 .
- ^ cassowary-rs en GitHub
- ^ "Historial de desarrollo de hojas de estilo de cuadrícula". GitHub .
- ^ "Acerca de CCSS". Archivado desde el original el 11 de septiembre de 2014. Consultado el 22 de septiembre de 2014 .
- ^ "Página de inicio del sitio web de Layx".
- ^ "Casuarius proporciona enlaces de Python a una implementación en C++ del algoritmo Cassowary". Archivado desde el original el 14 de agosto de 2017. Consultado el 19 de septiembre de 2017 .
- ^ casuarius en GitHub
- ^ Kiwi, un reemplazo para Casuarius/Cassowary. El nuevo solucionador elimina ese cuello de botella. Sigue utilizando el mismo algoritmo Cassowary, pero es una implementación desde cero del algoritmo basada en el artículo de Cassowary, no en el código fuente de Cassowary existente. Si bien el algoritmo Cassowary es bueno, la implementación de C++ existente tiene muchas ineficiencias. El nuevo solucionador es entre 12 y 500 veces más rápido según el problema (40 veces típico) y utiliza alrededor de 5 veces menos memoria. Y como suelo hacer, elegí escribir los enlaces de Python a mano en C++ en lugar de usar Cython. El código resultante es más rápido y ahora tenemos una dependencia externa menos.
- ^ kiwi en GitHub