Ada 2.* - быстрая C++ библиотека для парсинга URL
31-го марта и 17-го апреля состоялись выпуски 2.0.0 и 2.1.0 быстрой библиотеки парсинга URL для языка C++ (стандарт C++17).
( читать дальше... )
>>> Подробности
Всего сообщений: 224
31-го марта и 17-го апреля состоялись выпуски 2.0.0 и 2.1.0 быстрой библиотеки парсинга URL для языка C++ (стандарт C++17).
( читать дальше... )
>>> Подробности
rapidfuzz-cpp - быстрая, SIMD-оптимизированная библиотека на языке C++, реализующая несколько алгоритмов нечёткого сравнения строк и вычисления метрик:
RapidFuzz - основанная на rapidfuzz-cpp библиотека для языка Python.
Лицензия: MIT.
( читать дальше... )
>>> Подробности
Вышла новая версия Boost, набора кроссплатформенных библиотек C++. Некоторые крупные изменения:
А также множество улучшений и исправлений в Core, Asio, Filesystem, JSON, Math, URL и других библиотеках.
>>> Подробности
Вышла новая версия LLVM. Проект LLVM включает в себя оптимизатор и кодогенератор с LLVM IR во многие процессорные архитектуры, который используется многими проектами для реализации своих языков программирования, а также:
( читать дальше... )
>>> Подробности
Состоялся выпуск 5.3.4 редактора текста SciTE и сопутствующих библиотек парсинга и редактирования кода.
( читать дальше... )
>>> Подробности
Вышла новая версия msgpack for C/C++ — библиотеки сериализации двоичных данных на основе формата MessagePack.
Важные изменения:
msgpack-c
;msgpack-cxx
;>>> Подробности
SEZEII — программа-видеоконвертор для Linux и Windows с поддержкой плагинов, накладывающая видеоэффекты без использования видеоредактора.
( читать дальше... )
>>> Подробности
Компания Qt Company опубликовала релиз фреймворка Qt 6.4, в котором продолжена работа по стабилизации и наращиванию функциональности ветки Qt 6. В Qt 6.4 обеспечена поддержка платформ Windows 10+, macOS 10.15+, Linux (Ubuntu 20.04, CentOS 8.2, openSUSE 15.3, SUSE 15 SP2), iOS 14+, Android 6+ (API 23+), webOS, WebAssembly, INTEGRITY и QNX. Исходные тексты компонентов Qt поставляются под лицензиями LGPLv3 и GPLv2.
( читать дальше... )
Интернет, 29 июля 2022 года. Яндекс опубликовал исходный код и документацию фреймворка userver. Это первый открытый набор инструментов, который позволяет создавать высоконагруженные приложения на языке С++ и протестирован на масштабах уровня Яндекса. Userver используют в Яндекс Go, Лавке, Доставке, Маркете, финтех-проектах и многих других сервисах компании. Фреймворк предоставляется по открытой лицензии Apache 2.0.
Userver лучше всего подходит для разработки приложений с микросервисной архитектурой. Изначально фреймворк разрабатывался в Такси, с его помощью команда перешла с монолитного приложения на архитектуру, которая позволяет разрабатывать отдельные независимые компоненты (микросервисы) и использовать их в разных приложениях.
Микросервисы автономны, поэтому приложение на подобной архитектуре легко обновлять и добавлять в него новые функции. Так, микросервис поиска водителя на заказы в Такси можно использовать для схожей задачи — например поиска курьера для выполнения заказов Яндекс Доставки. То же самое можно проделать и с расчетом времени прибытия водителя или курьера и многими другими задачами.
«Когда мы переходили на микросервисы, мы понимали, что новый фреймворк должен быть как можно проще для разработчиков и бизнеса. Поэтому userver создавали с акцентом на надёжность и удобство, а внутри него есть всё необходимое для разработки, диагностики, мониторинга, отладки и экспериментов. Например, userver подсказывает как исправить ошибки ещё на этапе компиляции, умеет работать с разными базами данных, менять параметры на лету и так далее. Он хорошо подходит для разработки приложений как в небольших, так и в крупных компаниях. И с помощью userver даже новичок может за неделю написать новый микросервис», — говорит Антон Полухин, один из авторов фреймворка и руководитель группы бэкенд-разработки решений для продуктовых команд RideTech и eCom.
Яндекс выкладывает в опенсорс и другие свои ключевые технологии — например, распределенную систему управления базами данных YDB, способную обрабатывать миллионы запросов в секунду, а также библиотеку машинного обучения CatBoost, которую Яндекс применяет в Поиске и других сервисах.
>>> Подробности
В видеоконвертер SEZEII добавлен новый эффект, имитирующий тайловую палитровую графику компьютеров ZX Spectrum и MSX. Обработать можно видео в любом формате, и в результате вы получите стилизованное видео в lossless -качестве. Имитируется стандартная конфигурация Spectrum с областями 8x8 и стандартной палитрой, но эффект настраиваемый: можно выбирать любую палитру, размер блоков и дизеринг.
( читать дальше... )
>>> Паблик программы
Компания AMD заявила об открытии исходных кодов технологии суперсэмплинга FidelityFX Super Resolution 2.0 для увеличения качества изображения в играх с низким разрешением при преобразовании в более высокое разрешение. Код проекта написан на C++ и рапространяется под лицензией MIT. Кроме базового API, реализована поддержка таких графических API как Vulkan и DirectX 12, а также шейдерных языков HLSL и GLSL. Также доступен набор примеров и документация.
>>> Источник
За последние несколько лет мне пришлось столкнуться с множеством вопросов, которые были сформулированы примерно так: «мой проект не открывается в среде CLion». В свою очередь, это приводило к необходимости из раза в раз объяснять разным людям примерно одно и то же. Статья имеет целью сохранить тот опыт, который был накоплен в процессе анализа десятков разных проектов.
( читать дальше... )
GCC - это набор компиляторов языков программирования от GNU.
Релиз GCC 12.1 ожидается в апреле 2022.
GCC 12 уже является системным компилятором Fedora 36. Также GCC 12 доступен в Red Hat Enterprise Linux в Red Hat Developer Toolset (версии 7) или Red Hat GCC Toolset (версии 8 и 9).
В GCC 12
улучшили поддержку OpenMP 5.0
реализовали поддержку ADA 2022 (флаг -gnat2022
)
реализовали некоторые возможности следующего стандарта С: C2X (флаг -std=c2x
или -std=gnu2x
)
реализовали часть возможностей С++23.
Более подробное описание реализованного только про новые возможности компилятора С++ без учёта стандартной библиотеки.
В GCC 12 реализовали часть возможностей C++23. Без указания флага стандарта в g++-12 используется -std=gnu++17
, чтобы использовать возможности описываемые далее нужно компилировать с флагами -std=c++23
или -std=gnu++23
.
Реализованные возможности C++23:
if consteval
Хотя уже в C++20 появились consteval
функции, которые могут выполнятся только во время компиляции и был std::is_constant_evaluated ()
, но была проблема их совместного использования
#include <type_traits>
int slow (int);
consteval int fast (int n) { return n << 1; }
constexpr int fn (int n)
{
if (std::is_constant_evaluated ())
return fast (n); // 'n' is not a constant expression
else
return slow (n);
}
constexpr int i = fn (10);
https://godbolt.org/z/Yhbqq6K36
P1938R3 представил if consteval
который позволяет использовать consteval
функции внутри constexpr
:
#include <type_traits>
int slow (int);
consteval int fast (int n) { return n << 1; }
constexpr int fn (int n)
{
if consteval {
return fast (n); // OK
} else {
return slow (n);
}
}
constexpr int i = fn (10);
https://godbolt.org/z/Kxs6Wjfq6
Заметьте что if consteval
требует {}
в отличие от обычного if, и что if consteval
может быть в обычной не constexpr
функции.
auto(x)
GCC 12 реализовал P0849 который позволяет auto
каст в prvalue
struct A {};
void f(A&); // #1
void f(A&&); // #2
A& g();
void h()
{
f(g()); // calls #1
f(auto(g())); // calls #2 with a temporary object
}
https://godbolt.org/z/x7hn5GKEx
Заметьте что и auto(x) и auto{x} допустимы, хотя decltype(auto)(x) остаётся неверным.
Non-literal
переменные в constexpr
функциях
GCC 12 реализовал P2242R3, который позволяет non-literal
переменным, goto
, и меткам быть в constexpr
функциях если выполнение во время компиляции не доходит до этих мест.#include <type_traits>
template<typename T> constexpr bool f() {
if (std::is_constant_evaluated()) {
return true;
} else {
T t; // OK when T=nonliteral in C++23
return true;
}
}
struct nonliteral { nonliteral(); };
static_assert(f<nonliteral>());
https://godbolt.org/z/6xnzM46Ej
constexpr int
foo (int i)
{
if (i == 0)
return 42;
static int a;
thread_local int t;
goto label;
label:
return 0;
}
static_assert(foo(0) == 42);
https://godbolt.org/z/PGsErnE4n
struct S {
int a[64];
constexpr S () : a {} {};
constexpr S (int x, int y, int z) : a {x, y, z} {};
constexpr int &operator[] () { return a[0]; }
constexpr int &operator[] (int x) { return a[x]; }
constexpr int &operator[] (int x, long y) { return a[x + y * 8]; }
};
void g ()
{
S s;
s[] = 42;
s[5] = 36;
s[3, 4] = 72;
}
https://godbolt.org/z/nnGead631
Заметьте что operator[]
сейчас не поддерживает аргументов по умолчанию. Рабочая группа рассматривает CWG2507 , и если она примет предложенное решение проблемы, то в будущем такой код будет валиден:
struct X {
int a[64];
constexpr int& operator[](int i = 0) { return a[i]; }
};
#ifdef
и #ifndef
это синтаксический сахар для #if defined(something)
и #if !defined(something)
. Для вариантов с else не было такого синтаксического сахара. Так что его добавили в С++23(и в С2X) и GCC 12: P2334R1#ifdef __STDC__
/* ... */
#elifndef __cplusplus
#warning "not ISO C"
#else
/* ... */
#endif
https://godbolt.org/z/z4hbj6M7q
if
, for
, switch
) позволяя им содержать объявление псевдонимов. На практике это означает что теперь валиден подобный код:for (using T = int; T e : v)
{
// use e
}
Также можете ознакомиться с описанием исправлений и новыми предупреждениями в GCC 12 в оригинальной статье
Спустя совсем немного времени после Дня космонавтики состоялся релиз библиотеки ReSGP4.
Библиотека представляет собой расширение для Python 3, которое позволяет симулировать движение космических объектов по орбитам вокруг Земли.
( читать дальше... )
>>> Подробности
Разработчики Overgrowth опубликовали на Github исходники игры под лицензией Apache 2.0.
При этом в опубликованные исходники не входят ассеты игры. Для доступа к ассетам необходимо купить оригинальную игру в Humble Bundle или Steam.
Pgfe (PostGres FrontEnd) - продвинутый и многофункциональный драйвер для PostgreSQL, написанный на C++. Разработка нацелена на простоту использования и надёжность, учитывая производительность.
Pgfe можно скачать на странице Github.
>>> Оригинал
SRELL – это std::regex-like library.
Особенности:
std::regex
;char8_t
, char16_t
и char32_t
для C++11 и более поздних версий стандарта.( читать дальше... )
>>> Подробности
Кроссплатформенный порт Super Mario Bros. X, фанатской игры по мотивам вселенной Марио, созданной в 2009 году американцем Эндрю Спинксом, полностью написанный на С++. Проект получил название TheXTech по принципу: «The Super Mario Bros. X Tech». Он полностью воспроизводит старый движок SMBX 1.3 (кроме редактора), исправлены критические ошибки, приводящие к сбою или зависанию игры.
Несмотря на полное прекращение разработки игры в 2011 году, она была востребована и продолжала широко использоваться сообществом. Игра привлекла внимание разработчиков-энтузиастов, которые создавали для неё вспомогательные инструменты, а также делали попытки модифицировать и расширить игру. Самыми известными из них являются набор разработки из тулкита Moondust Project (изначально называвшимся PGE Project) и библиотека LunaLua (изначально известная как LunaDll), расширяющая функционал игры посредством dll-инъекции. Исходный код игры долгое время был закрытым. Однако всё изменилось, когда 2 февраля 2020 года на форуме были опубликованы исходные коды игры.
В игре возможно играть за одного из 5-и персонажей: Марио, Пич, Луиджи, Линк и Тоад. Присутствуют три режима игры: одиночный, вдвоем в кооперативном режиме и режим битвы, в котором игроки должны побить друг друга, пользуясь различными подручными средствами.
Сама игра является неким подобием песочницы для сообщества, в которой игроки могут создавать свои уровни и целые эпизоды. Есть возможность добавления в игру собственных ресурсов.
Подробности технической реализации TheXTech (habr.com)
Вышла новая версия cppcheck — статического анализатора исходного кода для языков C и C++.
В этом выпуске представлены новые проверки:
return
в функции;return std::move(local)
;( читать дальше... )
Помимо этого, была завершена проверка соответствия исходного кода стандарту MISRA C 2012: реализованы все правила MISRA C 2012, кроме 1.1, 1.2 (должны обеспечиваться компилятором) и 17.3 (может обеспечиваться компилятором), включая правила в поправках 1 и 2.
Исходный код анализатора распространяется по лицензии GPLv3.
>>> Подробности
Вышла новая версия статического анализатора для С и С++.
В новой версии:
В парсере:
Также анализатор теперь:
Добавлены новые проверки:
throw;
.Примеры кода, которые демонстрируют новые проверки:
void f(std::string s) {
if (s = "123") {
}
}
Assignment in condition should probably be comparison
void func1(const bool flag) { try{ if(!flag) throw; } catch (int&) { ; } }
Rethrowing current exception with 'throw;', it seems there is no current exception to rethrow.
If there is no current exception this calls std::terminate(). More: https://isocpp.org/wiki/faq/exceptions#throw-without-an-object
>>> Подробности
← предыдущие | следующие → |