Казуар (программное обеспечение)

Набор инструментов для решения инкрементальных ограничений

Cassowary — это набор инструментов для решения инкрементальных ограничений , который эффективно решает системы линейных равенств и неравенств . Ограничения могут быть как требованиями, так и предпочтениями. Клиентский код указывает ограничения, которые необходимо поддерживать, а решатель обновляет ограниченные переменные, чтобы они имели значения, удовлетворяющие ограничениям.

Cassowary был разработан Грегом Дж. Бадросом, Аланом Борнингом и Питером Дж. Стаки и был оптимизирован для приложений пользовательского интерфейса. [1] Бадрос использовал Cassowary среди прочего для реализации каскадных таблиц стилей Constraint Cascading Style Sheets (CCSS), расширения каскадных таблиц стилей (CSS). CCSS добавляет поддержку ограничений макета . Они позволяют дизайнерам описывать макет веб-страницы более гибко. Cassowary используется для решения этих ограничений и расчета окончательного макета.

Первоначальный дистрибутив, [2] не поддерживаемый с 2000 года, включал реализации Smalltalk , C++ и Java , а также привязки для GNU Guile , Python и STk. Существуют сторонние реализации для JavaScript , [3] Dart , [4] Squeak , [5] Python , [6] [7] .NET Framework , [8] и Rust . [9]

Приложения

  • По состоянию на сентябрь 2014 года GSS, язык и движок макетов для веб-сайтов, разрабатывается The Grid. [10] Это современное расширение CCSS. [11]
  • Layx — язык верстки для веб-сайтов, разработанный с учетом простоты использования. [12]
  • Scwm — менеджер окон ограничений схемы.
  • С 2011 года Cassowary используется в качестве алгоритма в движке макета для Mac OS X (Lion и выше) и iOS (6 и выше). [ необходима ссылка ]
  • Механизм компоновки Enaml создан на основе оптимизатора линейных ограничений Cassowary. [13] [14] [15] [16]

Ссылки

  1. ^ Алгоритм решения линейных арифметических ограничений Cassowary, авторы: Грег Дж. Бадрос, Алан Борнинг и Питер Дж. Стаки
  2. ^ «Cassowary Constraint Solving Toolkit». Вашингтонский университет.
  3. ^ cassowary.js на GitHub
  4. ^ google/cassowary.dart, Google, 2020-08-12 , получено 2020-12-08
  5. ^ Казуар
  6. ^ казуар на GitHub
  7. ^ киви на GitHub
  8. ^ Вермюлен, Джо. «Казуар.Нет». jovermeulen.com . Проверено 10 декабря 2020 г.
  9. ^ cassowary-rs на GitHub
  10. ^ "История разработки таблиц стилей сетки". GitHub .
  11. ^ "О CCSS". Архивировано из оригинала 2014-09-11 . Получено 2014-09-22 .
  12. ^ "Домашняя страница сайта Layx".
  13. ^ "Casuarius предоставляет привязки Python к реализации алгоритма Cassowary на C++". Архивировано из оригинала 2017-08-14 . Получено 2017-09-19 .
  14. ^ casuarius на GitHub
  15. ^ Kiwi, замена Casuarius/Cassowary. Новый решатель устраняет это узкое место. Он по-прежнему использует тот же алгоритм Cassowary, но это реализация алгоритма с нуля, основанная на статье Cassowary, а не на существующем исходном коде Cassowary. Хотя алгоритм Cassowary хорош, существующая реализация C++ имеет много неэффективностей. Новый решатель где-то в 12–500 раз быстрее в зависимости от задачи (обычно в 40 раз) и использует примерно в 5 раз меньше памяти. И, как я обычно делаю, я решил написать привязки Python вручную на C++, а не использовать Cython. Результирующий код быстрее, и теперь у нас на одну внешнюю зависимость меньше.
  16. ^ киви на GitHub
Взято с "https://en.wikipedia.org/w/index.php?title=Cassowary_(software)&oldid=1265302629"