LINUX.ORG.RU

Regexp


40

0

Всего сообщений: 11

STC 5.0

STC 5.0
Группа Разработка

После почти двух лет разработки состоялся выпуск 5.0 библиотеки STC (header-only), написанной на языке C (стандарт C11) и распространяемой по лицензии MIT.
Библиотека предоставляет большой набор структур данных и алгоритмов, основанных на макросах C и свою реализацию регулярных выражений и форматированного вывода.

( читать дальше... )

>>> Список изменений версии 5.0 на GitHub

 , , , ,

dataman
()

SRELL 4.056 — библиотека ECMAScript-совместимых регулярных выражений

Группа Разработка

11 сентября состоялся выпуск 4.056 C++ библиотеки SRELL (Std::RegEx-Like Library), реализующей ECMAScript-совместимые регулярные выражения.

Список изменений:

  • поддержка Unicode 16.0.0;
  • другие небольшие изменения.

Особенности библиотеки:

  • header-only;
  • ECMAScript-совместимые регулярные выражения;
  • дизайн а-ля std::regex;
  • поддержка типов char8_t, char16_t и char32_t для C++11 и более поздних версий стандарта.

Более подробное описание доступно на сайте автора.

История изменений: англ./яп..
Постоянная ссылка на актуальную версию: https://www.akenotsuki.com/misc/srell/srell-latest.

>>> Подробности

 , , , ,

dataman
()

SRELL 4.038 — библиотека ECMAScript-совместимых регулярных выражений

Группа Разработка

24 января состоялся выпуск 4.038 C++ библиотеки SRELL (Std::RegEx-Like Library), реализующей ECMAScript-совместимые регулярные выражения.
Список изменений:

  • исправлена ошибка, из-за которой по выражению /(?:ab)+|cd/ находилась строка «ababcd»;
  • небольшие улучшения.

Особенности библиотеки:

  • header-only;
  • ECMAScript-совместимые регулярные выражения;
  • дизайн а-ля std::regex;
  • поддержка типов char8_t, char16_t и char32_t для C++11 и более поздних версий стандарта.

Более подробное описание доступно на сайте автора.

История изменений: англ./яп..
Постоянная ссылка на актуальную версию: https://www.akenotsuki.com/misc/srell/srell-latest.

>>> Подробности

 , , , ,

dataman
()

STC 4.2 - библиотека алгоритмов и контейнеров для Си

Группа Open Source

10 апреля состоялся выпуск версии 4.2 библиотеки STC (Smart Template Containers), написанной на языке C (C99) и распространяемой по лицензии MIT.

Изменения:

  • изменён адрес проекта;
  • улучшена документация;
  • добавлены Coroutines и сопутствующая документация;
  • добавлен новый crand.h. Предыдущий crandom.h объявлен устаревшим;
  • добавлен макрос c_const_cast;
  • макросы RAII удалены из примеров использования;
  • макрос c_foreach_r переименован в c_foreach_rv;
  • макрос c_flt_count переименован в c_flt_counter;
  • макрос c_flt_last переименован в c_flt_getcount;
  • макрос c_ARRAYLEN переименован в c_arraylen;
  • удалён устаревший макрос c_ARGSV();
  • удалён макрос c_PAIR.

По утверждениям разработчиков, STC — это современная быстрая типо-безопасная небольшая библиотека контейнеров и алгоритмов для языка Си (стандарт C99). Библиотека создана под влиянием C++ STL, а также некоторых идей из Rust и Python.

Пример использования:

#define i_extern // include external cstr, utf8, cregex functions implementation.
#include <stc/cregex.h>

int main() {
    const char* input = "start date is 2023-03-01, end date 2025-12-31.";
    const char* pattern = "\\b(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)\\b";

    cregex re = cregex_from(pattern);

    // Lets find the first date in the string:
    csview match[4]; // full-match, year, month, date.
    if (cregex_find(&re, input, match) == CREG_OK)
        printf("Found date: %.*s\n", c_SV(match[0]));
    else
        printf("Could not find any date\n");

    // Lets change all dates into US date format MM/DD/YYYY:
    cstr us_input = cregex_replace(&re, input, "$2/$3/$1");
    printf("%s\n", cstr_str(&us_input));

    // Free allocated data
    cstr_drop(&us_input);
    cregex_drop(&re);
}

>>> Подробности

 , , , ,

dataman
()

grex 1.4.0 — генератор регулярных выражений

grex 1.4.0 — генератор регулярных выражений
Группа Разработка

Обновилась утилита для создания регулярных выражений — grex 1.4.0. В новой версии исправлены ошибки, обновлена поддержка Unicode 14, крупным изменением стала возможность компиляции в WebAssembly и теперь grex можно использовать в браузере и Node.js (автор собрал NPM-пакет).

Посмотреть работу grex без установки можно на демо-странице: https://pemistahl.github.io/grex-js/

>>> Подробности

 , ,

dotcoder
()

Выпущены Ruby 2.6.10, 2.7.6, 3.0.4, 3.1.2 с исправлениями уязвимостей

Группа Безопасность

А именно:

  • CVE-2022-28738: двойное высвобождение памяти в регулярных выражениях. Проявляется на специально созданных входных строках. Хоть в целом и не следует создавать регулярные выражения из строк, полученных из недоверенных источников — уязвимость подтверждена и исправлена. Затронутые ветки: 3.0 и 3.1, ветки 2.6 и 2.7 не затронуты.

  • CVE-2022-28739: чтение данных за пределами буфера при конвертации строк в числа с плавающей точкой. Присутствует во внутренней функции, использующейся, например, в Kernel#Float и String#to_f. Обычно приводит к ошибке сегментации и краху процесса, но в определённых условиях может использоваться для чтения памяти за пределами буфера. Затронуты ветки 2.6, 2.7, 3.0 и 3.1.

Спасибо piao за обнаружение уязвимостей.

Также следует отметить, что, начиная с этих выпусков, поддержка ветки 2.6 прекращается и исправлений новых уязвимостей не будет — возможны исправления только очень серьёзных регрессий. Ветка 2.7 же переходит из фазы полноценной поддержки в фазу обновлений безопасности, которая будет длиться год. Рекомендуется уже сейчас начать перевод проектов на использование версий Ruby 3.0 или 3.1.

Скачать:

>>> 3.1.2

>>> 3.0.4

>>> 2.7.6

>>> 2.6.10

 , , ,

bodqhrohro_is_back
()

CVE-2021-41817: DoS-уязвимость обработки дат в Ruby

Группа Безопасность

Выпущены обновлённые версии 3.2.1, 3.1.2, 3.0.2 и 2.0.1 гема date, содержащие исправление безопасности, связанное с уязвимостью типа ReDoS (отказ от обслуживания в регулярных выражениях) в методах разбора дат. С её помощью можно совершить реальную DoS-атаку.

( читать дальше... )

Спасибо svalkanov за обнаружение уязвимости.

>>> Источник

 , , , ,

mertvoprog
()

SRELL 2.930 — библиотека для С++, реализующая работу ECMAScript-совместимых регулярных выражений

Группа Разработка

SRELL – это std::regex-like library.

Особенности:

  • header-only;
  • ECMAScript-совместимые регулярные выражения;
  • дизайн а-ля std::regex;
  • поддержка типов char8_t, char16_t и char32_t для C++11 и более поздних версий стандарта.

( читать дальше... )

>>> Подробности

 , , , ,

dataman
()

grex 1.2.0 — генератор регулярных выражений

grex 1.2.0 — генератор регулярных выражений
Группа Разработка

Вышла новая версия библиотеки и командной утилиты grex 1.2.0, которая позволяет создавать регулярное выражение из предоставленных пользователем тестовых данных. Созданное регулярное выражение имеет синтаксис PCRE.

grex начинался как порт JavaScript-утилиты regexgen и написан на языке программирования Rust.

>>> Подробности

 , , ,

dotcoder
()

re2c 1.0

Группа Разработка

RE2C — генератор лексических анализаторов для языков C и C++, созданный в 1993 году Питером Бамбулисом в качестве альтернативы небезызвестному Flex. Основной целью RE2C является генерация очень быстрых лексеров: по скорости исполнения они должны не уступать коду, написанному и оптимизированному вручную (в пределах разумного). В отличие от Flex, RE2C не использует табличную модель лексера: он кодирует конечный автомат прямо в виде программы на С, состоящей из меток и условных переходов. Полученный лексер оказывается не только быстрее, но часто ещё и меньше [1] (RE2C минимизирует конечный автомат и применяет ряд других оптимизаций). Другая особенность RE2C — отсутствие жёсткого интерфейса: в отличие от Flex, он не генерирует код «обвязки» между лексером и внешним миром. Ответственность за написание этого кода остаётся на пользователе, что даёт большую свободу и позволяет приспосабливать лексеры к уже существующему программному окружению.

Смена мажорной версии (впервые за всю историю проекта) объясняется не поломкой обратной совместимости, а нетривиальным расширением возможностей генератора: кроме обычного распознавания регулярных грамматик (англ. recognition) RE2C теперь умеет частичный синтаксический разбор (англ. submatch extraction). Эта возможность легко реализуема на основе недетерминированных автоматов, и поэтому давно присутствует во многих утилитах (grep, sed), библиотеках регулярных выражений (RE2) и языках (Perl, JS). А вот в генераторах лексеров эта возможность обычно отсутствует (Lex, Flex, Quex), корректно работает только на малой части случаев (Ragel) или реализована путём серьёзного усложнения модели (Tlex). Одно из следствий невозможности синтаксического разбора средствами детерминированных конечных автоматов — изначально поломанный оператор предпросмотра в Lex и Flex.

Алгоритм разбора, заложенный в основе RE2C, был предложен Вилле Лаурикари в 2000 году [2]. Этот алгоритм хорош тем, что усложняет модель вычислений ровно настолько, насколько того требует детализация синтаксического разбора в каждом конкретном случае: для обычных задач распознавания модель Лаурикари соответствует простому детерминированному автомату. RE2C использует «улучшенную и дополненную» версию алгоритма, предложенную автором сего поста [3].

[1] Cтатья 1993 года, в которой проведён сравнительный анализ RE2C, Flex и других генераторов

[2] Статья 2000 года, которая описывает быстрый алгоритм разбора

[3] Статья 2017 года, которая описывает новый ещё более быстрый алгоритм разбора

>>> Подробности

 , , ,

skvadrik
()

6-й номер журнала «Практика функционального программирования»

Группа Документация

После долгого перерыва вышел 6-й номер журнала «Практика функционального программирования», который также стал доступен и в печатном виде.

В номере вы можете найти:

  • эксклюзивные интервью с титанами функционального мира, создателями языков Haskell и Erlang: Саймон Пейтон Джонс и Джо Армстронг поделятся мыслями и ответят на вопросы о своих детищах и обо всем остальном, от работы в Microsoft Research до творчества Тарковского (обсуждение: Саймон Пейтон-Джонс, Джо Армстронг);
  • сравнение Node.js и Erlang (Дмитрий Демещук);
  • обзор языка Scala (Влад Патрышев);
  • перевод статьи Дэна Пипони о быстром сопоставлении с регулярными выражениями при помощи моноидов;
  • статью Евгения Кирпичёва, в которой идеи Дэна Пипони реализованы в коде

Кроме этого, начат проект «Библиотечка ПФП» в рамках которого будут публиковаться переводы известных статей на тему функционального программирования.

>>> Официальный анонс

 , , , , , , , ,

ott
()