// Simple predicates
'tacocat'.startsWith('taco')

// Parameterized predicates over structured data
account.balance >= transaction.withdrawal

// JSON objects
{'sub': '12345678',
 'aud': 'example2.cel.dev',
 'iss': 'https://example1.cel.dev/jwt-issuer'}

// Strongly typed objects
common.GeoPoint{ latitude: 10.0, longitude: -5.5 }

Common Expression Language (CEL) — это быстрый, переносимый и безопасный язык выражений для приложений, где производительность критична. CEL предназначен для встраивания в приложение с расширениями, специфичными для приложения, и идеально подходит для расширения декларативных конфигураций, которые ваши приложения уже могут использовать.

Используйте CEL для таких вещей, как фильтры списков для вызовов API, ограничения проверки буферов протокола и правила авторизации для запросов API.

Ускоренная оценка экспрессии на критически важных для производительности путях от наносекунд до микросекунд.
Удобный для разработчиков, легкий, с общим синтаксисом для нескольких Google и внешних систем.
Поддерживает подмножества и расширения, легко встраивается и адаптируется к требованиям конфигурации и политики.
Не является полным по Тьюрингу и обращается только к данным, предоставленным ведущим приложением.

CEL идеально подходит для приложений, критичных к производительности, поскольку он был разработан для безопасной и быстрой оценки (от наносекунд до микросекунд) с предсказуемыми затратами. Выражения CEL особенно полезны для логики предикатов и простых преобразований данных.

CEL наиболее эффективно используется в приложениях, где выражения часто вычисляются, но редко изменяются. Например, оценка HTTP-запроса на соответствие политике безопасности — отличный вариант использования CEL. Выражение политики безопасности CEL будет иметь единовременную стоимость настройки для проверки выражения, а затем очень часто оцениваться с незначительными затратами.

Все еще не уверены? Ознакомьтесь с обзором CEL и определением языка или просто спросите нас! Мы рады помочь.

Хотите помочь проекту CEL? Вносите свой вклад в наш открытый исходный код и документацию. Мы будем рады вашей помощи!