LINUX.ORG.RU

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

 ,


6

4

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);
}

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

★★★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 2)

вызывающее 4.2, если вы понимаете о чем я

shty ★★★★★
()

Не знал про такое. Спасибо, поставил звездочку на гитхабе, вдруг когда пригодится...

gns ★★★★★
()
Ответ на: комментарий от gns

Я в development уже пару раз упоминал, но затерялось. :)

dataman ★★★★★
() автор топика
Ответ на: комментарий от dataman

Не исправил, а добавил абзац… а вот теперь исправил. :)

hobbit ★★★★★
()

Мля, ну нейминг, конечно, огонь.

С ходу понять что c_SV - это получение Си стринг виев - это не каждому дано. Нафига ТАК делать?

У любителей сишечки действительно мозги наизнанку вывернуты?

Xintrea ★★★★★
()
Ответ на: комментарий от Xintrea

Любители сишечки пишут без IDE и вмещают строки в 80 символов. Ньюфагам не понять.

filosofia
()

макросы RAII удалены из примеров использования;

А что так, что случилось?

slackwarrior ★★★★★
()
Ответ на: комментарий от Xintrea

У любителей сишечки действительно мозги наизнанку вывернуты?

Они живут около начала системной эпохи. На стыке. И пох. Яростно экономят и «оптимизируют» ничего.

slackwarrior ★★★★★
()
Последнее исправление: slackwarrior (всего исправлений: 1)

макрос переименован

макрос переименован

...

добавлен новый crand.h. Предыдущий crandom.h объявлен устаревшим;

Обнаружено влияние «некоторых идей» из rust.

slackwarrior ★★★★★
()
Последнее исправление: slackwarrior (всего исправлений: 1)
Ответ на: комментарий от slackwarrior

Из имени переменной не очевидно, для чего она, тут авторам явно есть над чем поработать.
Но камень от вас в огород сишников по поводу оптимизации непонятен.

sirius
()
Ответ на: комментарий от sirius

Экономия буковок, экономия строк. Примерно такого же уровня микробенчмарки для обоснуя микрооптимизаций с нулевым выигрышем в прикупе.

slackwarrior ★★★★★
()
Последнее исправление: slackwarrior (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.