Zstandard 1.5.4
После более года разработки и 650 коммитов состоялся выпуск 1.5.4 библиотеки быстрого сжатия данных и консольной утилиты Zstandard.
( читать дальше... )
>>> Подробности
Всего сообщений: 169
После более года разработки и 650 коммитов состоялся выпуск 1.5.4 библиотеки быстрого сжатия данных и консольной утилиты Zstandard.
( читать дальше... )
>>> Подробности
Ричард Столлман опубликовал электронную книгу «Введение и справочное руководство по GNU C».
Труд за авторством Столлмана, Трэвиса Ротвелла и Нэльсона Биба распространяется по лицензии GFDL-1.3 и позиционируется одновременно и как введениие в язык C, и как справочник непосредственно по диалекту GNU C (т.е. включающему gnu-расширения gcc).
RMS просит сообщать о найденных ошибках, неточностях и непонятных, либо неоднозначно написанных пассажах.
>>> Подробности
Сегодня, в День знаний 2022 г., состоялся второй релиз библиотеки YAFL.
YAFL — это библиотека, написанная на Си, содержащая несколько алгоритмов Калмановской фильтрации, распространяемая под лицензией Apache-2.0.
Библиотека ориентирована на применение во встраиваемых системах на базе микроконтроллеров с аппаратной поддержкой вычислений с плавающей точкой.
В новом релизе:
Все фильтры библиотеки стали адаптивными, т.к. добавлена возможность коррекции UDU-разложений матриц корреляции шумов измерения и процесса во время выполенения:
Для вариантов обобщенного фильтра Калмана поддерживается коррекция матриц корреляции шумов процесса и измерения.
Для вариантов сигма-точечного фильтра Калмана поддерживается только коррекция матрицы корреляции шума измерения. Что связано с нестабильной работой фильтров при включенной коррекции марицы корреляции шума процесса.
Добавлены AB-тесты для регрессионного тестирования а так же для сравнения поведения функций из YAFL с и прототипами на Pyhton (numpy, FilterPy).
Добавлены тестовые проекты на Си.
Выполнено ручное тестирование библиотеки, исправлены выявленные ошибки.
Таким образом, теперь пользователь может ошибаться не только с моделями процесса и наблюдения, но и с оценками матриц корреляции шумов процесса и измерения.
Репозитории библиотеки доступны на:
Поздравляем всех школьников и студентов с профессиональным праздником!
>>> Подробности
За последние несколько лет мне пришлось столкнуться с множеством вопросов, которые были сформулированы примерно так: «мой проект не открывается в среде CLion». В свою очередь, это приводило к необходимости из раза в раз объяснять разным людям примерно одно и то же. Статья имеет целью сохранить тот опыт, который был накоплен в процессе анализа десятков разных проектов.
( читать дальше... )
Во время обсуждения набора патчей, связанных с исправлением уязвимостей класса Spectre в коде для работы со связанными списками, стало ясно, что проблему удалось бы решить более изящно, если бы в ядро допускался код, использующий стандарт старше C89. Сейчас код в ядре должен соответствовать С89 (с GNU расширениями) на основе спецификации, сформированной ещё в 1989 году. Связанная со Spectre проблема была в том, что для перебора элементов списка используется макрос. Так как переменная цикла передаётся в этот макрос, то она определяется вне самого цикла и остаётся доступна после цикла. Использование более новых стандартов языка C позволит определять переменные для цикла прямо в блоке for.
В связи с этим, Линус Торвальдс предложил попробовать перейти в ядре 5.18 на стандарт C99, который был опубликован в 1999 году, на что получил встречное предложение перейти сразу на C11. При проверке сборки в GCC и Clang с новым стандартом проблем пока не возникло и, если при более тщательном тестировании ситуация не изменится, в сборочных скриптах ядра 5.18 опция --std=gnu89 будет заменена на --std=gnu11 -Wno-shift-negative-value.
В случае неудачи, переход будет отложен на один из следующих выпусков.
>>> Подробности
Вышла новая версия cppcheck — статического анализатора исходного кода для языков C и C++.
В этом выпуске представлены новые проверки:
return в функции;return std::move(local);( читать дальше... )
Помимо этого, была завершена проверка соответствия исходного кода стандарту MISRA C 2012: реализованы все правила MISRA C 2012, кроме 1.1, 1.2 (должны обеспечиваться компилятором) и 17.3 (может обеспечиваться компилятором), включая правила в поправках 1 и 2.
Исходный код анализатора распространяется по лицензии GPLv3.
>>> Подробности
Много воды утекло с момента выхода LDD3 (LDD4 мы, видимо, уже не дождёмся), безнадёжно устарел фундаментальный труд Бовета и Чезати, Роберт Лав давно не радовал нас своими прекрасными творениями. Казалось бы, в мире литературы о программировании ядра Linux наметилась устойчивая стагнация…
Но нет! Ситуацию спасает замечательный индийский программист со звучным именем Кайван Биллимория. Он написал книгу о программировании ядра, аж в двух томах.
Об авторе
Кайван программирует с 1983 года. В то время он самостоятельно научился программировать на бейсике, затем освоил Си и ассемблер под MS-DOS, а потом открыл для себя мир UNIX и Linux. Занимался программированием ядра и драйверов, участвовал в коммерческих и свободных проектах, занимался преподавательской деятельностью.
Повествование в книге ведётся на основе Ubuntu 18.04 LTS и ядра версии 5.4.
( читать дальше... )
>>> Том 1 на Amazon
>>> Том 2 на Amazon
Вышла новая версия статического анализатора для С и С++.
В новой версии:
В парсере:
Также анализатор теперь:
Добавлены новые проверки:
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
>>> Подробности
После 7 месяцев работы и 2711 коммитов вышла новая версия Zig: 0.8
Zig это:
Современный компилятор С
Современный компилятор С++
Компилятор языка Zig
Сборочная система для C, C++, языка Zig
(Планируется) Пакетный менеджер для С, C++, языка Zig
Zig разрабатывается под лицензией MIT: https://github.com/ziglang/zig/blob/master/LICENSE
Язык Zig – это язык общего назначения, который старается быть простым. Нет макросов, скрытых аллокаций, скрытого потока управления.
( читать дальше... )
Полный список изменений: https://ziglang.org/download/0.8.0/release-notes.html
>>> Официальный сайт
zlib-ng – совместимый форк zlib с модернизированной кодовой базой и оптимизациями.
>>> Подробности
Сегодня (10.04.2021) состоялся первый релиз библиотеки YAFL.
YAFL - это библиотека, написанная на Си, содержащая несколько алгоритмов Калмановской фильтрации, распространяемая под лицензией Apache-2.0.
Библиотека ориентирована на применение во встраиваемых системах на базе микроконтроллеров с аппаратной поддержкой вычислений с плавающей точкой.
Для прототипирования алгоритмов обработки сигналов с использованием YAFL предполагается использовать Python 3.5+ и написанное на Cython расширение yaflpy.
Отличительные особенности библиотеки:
YAFL находится на ранней стадии разработки, код и документация могут содержать ошибки. Текущая версия библиотеки: 0.10.0.
>>> Подробности
Вышел перевод книги о легендарной эпохе, когда компьютеры были большими и тяжёлыми, частота измерялась в мегагерцах, а программы писали бородатые дядьки на зелёных терминалах, и происходило зарождение Си и UNIX.
Содержание:
>>> Подробности
ZenMake — ещё одна система сборки для C/C++ и ряда других языков программирования с декларативными конфигурационными файлами.
ZenMake написан на python с использованием Waf в качестве фреймворка. Основная цель проекта — быть простым в использовании насколько это возможно, но оставаться достаточно гибким.
Зачем еще одна система сборки? Подробности (на английском): https://zenmake.readthedocs.io/en/latest/why.html
Основной репозиторий: https://gitlab.com/pustotnik/zenmake
Документация: https://zenmake.readthedocs.io/
Примеры использования: https://gitlab.com/pustotnik/zenmake/tree/master/demos
Способы использования:
pip install zenmake и использовать на манер CMake, Meson и др., вызывая zenmake в корне проекта.>>> Подробности
Вышла новая версия luastatus, универсального генератора данных для панелей состояния, поддерживающего i3bar, dwm, lemonbar и др. Программа написана на C и распространяется под лицензией GNU LGPL v3.
Большинство генераторов данных для панелей состояния тайловых WM либо обновляют информацию по таймеру (например, conky), либо требуют сигнал для перерисовки (например, i3status). Панели же в составе окружений рабочего стола, как правило, обновляют информацию мгновенно и автоматически, как и luastatus.
luastatus позволяет пользователю определять логику обработки данных от плагинов, написанных на Си и поставляющихся с luastatus, с помощью виджетов, написанных на Lua. Также виджеты могут обрабатывать события, такие как щелчки по панели состояния.
( читать дальше... )
>>> Страница проекта на GitHub
>>> Страница релиза
LLVM – платформа для разработки компиляторов и тулчейнов под лицензией Apache 2.0 с исключениями.
Некоторые изменения в clang:
Теперь по умолчанию компиляция не запускается в новом процессе как раньше.
Поддерживаются концепты C++20.
Арифметика указателей в C и C++ разрешается только в пределах массивов, в соответствии со стандартами. Добавлены соответствующие проверки в Undefined Behavior Sanitizer.
Улучшена поддержка OpenCL и OpemMP 5.0.
Поведение в ряде случаев приближено к поведению GCC.
Некоторые общие изменения в LLVM:
Новые intrinsics для генерации оптимизированных векторных инструкций.
Значительно расширены возможности межпроцедурной оптимизации в экспериментальном фреймворке Attractor.
Множество улучшений в поддержке различных архитектур (AArch64, ARM, MIPS, PowerPC, SystemZ, X86, WebAssembly, RISC-V).
А также различные улучшения в libclang, clangd, clang-format, clang-tidy, Static Analyzer, LLDB.
>>> Подробности
Вышла новая версия популярной системы сборки CMake 3.16.0 и сопутствующих утилит CTest и CPack, облегчающих тестирование и сборку пакетов соответственно.
( читать дальше... )
>>> Подробности
Вышла новая версия системной библиотеки glibc – 2.30.
Некоторые обновления:
--preload для предварительной загрузки объектов в дополнение к переменной окружения LD_PRELOAD.twalk_r. Она похожа на уже имеющуюся функцию twalk, но она может передавать дополнительный аргумент в функцию обратного вызова.getdents64, gettid и tgkill.malloc, calloc, realloc, reallocarray, valloc, pvalloc, memalign и posix_memalign теперь не работают с объектами, размер которых больше, чем PTRDIFF_MAX. Это сделано для того, чтобы избежать переполнения типа ptrdiff_t.pthread_cond_clockwait, pthread_mutex_clocklock, pthread_rwlock_clockrdlock, pthread_rwlock_clockwrlock и sem_clockwait. Они эквивалентны timed, но также могут принимать параметр clockid_t, чтобы определить время ожидания. Все функции позволяют ожидать CLOCK_MONOTONIC и CLOCK_REALTIME. Решение о том, какие часы использовать, принимается во время ожидания (в отличие от pthread_condattr_setclock, который требует выбора часов во время инициализации).AArch64 распознаватель GNU IFUNC вызова ABI изменился: старые распознаватели все еще работают, а новые могут использовать второй аргумент, который может быть расширен в будущем. В настоящее время он содержит значение AT_HWCAP2.Представлен новый выпуск консольного файлового менеджера cfiles, написанный на C и нацеленный на то, чтобы предоставить функционал файлового менеджера ranger, будучи при этом быстрым, легковесным и минималистичным.
Из особенностей можно выделить:
w3imgdisplay или Überzug для предпросмотра картинок на выбор пользователя.
atool для предпросмотра архивов.
mediainfo для просмотра информации о медиа-файлах и размеров файлов.
fzf, написаный на Go, для поиска.
>>> GitHub проекта
Вышла новая версия luastatus, универсального генератора данных для панелей состояния, поддерживающего i3bar, dwm, lemonbar и другие. Программа написана на C и распространяется под лицензией GNU LGPL v3.
Большинство генераторов данных для панелей состояния тайловых WM либо обновляют информацию по таймеру (например, conky), либо требуют сигнал для перерисовки (например, i3status). Панели же в составе окружений рабочего стола, как правило, обновляют информацию мгновенно и автоматически, как и luastatus.
luastatus позволяет пользователю определять логику обработки данных от плагинов, написанных на Си и поставляющихся с luastatus, с помощью виджетов, написанных на Lua. Также виджеты могут обрабатывать события, такие как щелчки по панели состояния.
Нововведения релиза:
( читать дальше... )
Международная Организация по Стандартизации (ISO) опубликовала новый международный стандарт языка программирования C: ISO/IEC 9899:2018, его также называют C17 и C18.
Новый стандарт не вносит никаких новых возможностей, а лишь исправляет дефекты, сообщенные для C11. Значение макроса __STDC_VERSION__ увеличено до 201710L.
Поддержка C18 у GCC появилась, начиная с 8 версии, а у LLVM Clang — с 6.0. Чтобы указать во время компиляции использование стандарта C18 у GCC и LLVM Clang используются флаги -std=c17 и -std=gnu17. В GCC можно также указать новый стандарт флагами -std=c18 и -std=gnu18.
>>> Подробности
| ← предыдущие | следующие → |