Яндекс начал формирование коллекции своих открытых проектов

Компания Яндекс, с целью привлечения внимания к своим открытым проектам, начала наполнение в сервисе GitHub группы репозиториев Yandex-OpenSource. По утверждению представителя Яндекс, в компании развивается много открытых приложений, библиотек и готовых решений, которые как правило остаются в тени и особо не афишируются. Теперь, подобные проекты будут постепенно переноситься в репозитории GitHub и их можно будет окинуть взглядом через группу Yandex-OpenSource.

В настоящее время в GitHub перенесены следующие проекты:

  • PIRE (Perl Incompatible Regular Expressions) - библиотека с реализацией регулярных выражений, оптимизированных для выполнения большого числа проверок для огромных объемов текста. Код PIRE был разработан для поискового робота и отличается очень высокой производительностью. Библиотека также прекрасно справляется с очень длинными регулярными выражениями, обработка которых не приводит к заметному понижению производительности.

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

    При выполнении регулярного выражения ".*$" для файла размером 500Гб скорость обработки данных в PIRE составляет 756,32 МБ/сек, в то время как библиотека RE2 от компании Google обрабатывает данные со скоростью 242,28 МБ/сек, а классическая библиотека pcre - 31,67 МБ/сек. При проходе более сложным регулярным выражением "ABCDEFGHIJKLMNOPQRSTUVWXYZ$" разрыв по скорости с RE2 уменьшается: PIRE - 755,98 МБ/сек, RE2 - 653,76 МБ/сек, pcre - 153,67 МБ/сек. При использовании выражения "(\d{3}-|\(\d{3}\)\s+)(\d{3}-\d{4})$": PIRE - 775,89 МБ/сек, RE2 - 423,76 МБ/сек.

  • Xiva - компактный и быстрый асинхронный HTTP-сервер для реализации серверной части протокола WebSockets, используемого для инициирования определенных действий по сигналу с сервера. В настоящее время проект используется для обеспечения работы уведомлений о новых письмах в web-интерфейсе ЯндексПочты. Xiva достаточно узкоспециализированный сервер, оптимизированный для выполнения только определенного круга задач (например, не поддерживает POST-запросы). В комплекте поставляется небольшое демонстрационное приложение на языке Python с реализацией web-чата.
  • NwSMTP - быстрый SMTP прокси-сервер, принимающий на себя нагрузку и осуществляющий первичную фильтрацию перед передачей почты на основной почтовый сервер. Сервер может обеспечивать поддержку SSL, производить фильтрацию по черным спискам и DNSBL, управлять таймаутами, отфильтровывать сообщения по размеру и числу получателей, удалять и править заголовки, проверять SPF-записи, выполнять DKIM-верификацию, производить антиспам и антивирусные проверки. В Яндексе NwSMTP задействован в ЯндексПочте. Пример файла конфигурации можно посмотреть здесь.
  • Серия дополнений к Python-фреймворку Django:
    • django_dust - реализация системы для одновременного сохранения загружаемых файлов на нескольких серверах (Distributed Upload STorage);
    • django_errorlog - обеспечение сохранения логов о работе сервера в стандартном для Python виде;
    • django_replicated - модуль с реализацией master-slave репликации между несколькими серверами всех SQL-операций.

    ©  OpenNet