Состоялся выпуск 1.11.0 консольных утилит вывода системной информации fastfetch и flashfetch. Эти программы можно считать быстрыми аналогами neofetch, в отличие от последнего, они написаны на языке C (стандарт C11).
Ричард Столлман опубликовал электронную книгу «Введение и справочное руководство по 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.
В случае неудачи, переход будет отложен на один из следующих выпусков.
Помимо этого, была завершена проверка соответствия исходного кода стандарту 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.
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
Сегодня (10.04.2021) состоялся первый релиз библиотеки YAFL.
YAFL - это библиотека, написанная на Си, содержащая несколько алгоритмов Калмановской фильтрации, распространяемая под лицензией Apache-2.0.
Библиотека ориентирована на применение во встраиваемых системах на базе микроконтроллеров с аппаратной поддержкой вычислений с плавающей точкой.
Для прототипирования алгоритмов обработки сигналов с использованием YAFL предполагается использовать Python 3.5+ и написанное на Cython расширение yaflpy.
Отличительные особенности библиотеки:
библиотека нацелена на преимущественное использование статического выделения памяти;
по мере возможности использованы алгоритмы, минимизирующие кеш-промахи;
в YAFL реализованы квадратнокорневые варианты алгоритмов фильтрации на основе UDU-разложения;
применены численно-стабильные методы вычислений, а так же регуляризация;
библиотека содержит алгоритмы, в которых применены меры для:
устранения расходимости фильтров
взвешивания результатов измерений с целью снижения влияния промахов/помех.
YAFL находится на ранней стадии разработки, код и документация могут содержать ошибки. Текущая версия библиотеки: 0.10.0.
Вышел перевод книги о легендарной эпохе, когда компьютеры были большими и тяжёлыми, частота измерялась в мегагерцах, а программы писали бородатые дядьки на зелёных терминалах, и происходило зарождение Си и UNIX.
ZenMake — ещё одна система сборки для C/C++ и ряда других языков программирования с декларативными конфигурационными файлами.
ZenMake написан на python с использованием Waf в качестве фреймворка. Основная цель проекта — быть простым в использовании насколько это возможно, но оставаться достаточно гибким.
Вышла новая версия luastatus, универсального генератора данных для панелей состояния, поддерживающего i3bar, dwm, lemonbar и др. Программа написана на C и распространяется под лицензией GNU LGPL v3.
Большинство генераторов данных для панелей состояния тайловых WM либо обновляют информацию по таймеру (например, conky), либо требуют сигнал для перерисовки (например, i3status). Панели же в составе окружений рабочего стола, как правило, обновляют информацию мгновенно и автоматически, как и luastatus.
luastatus позволяет пользователю определять логику обработки данных от плагинов, написанных на Си и поставляющихся с luastatus, с помощью виджетов, написанных на Lua. Также виджеты могут обрабатывать события, такие как щелчки по панели состояния.
Арифметика указателей в C и C++ разрешается только в пределах массивов, в соответствии со стандартами. Добавлены соответствующие проверки в Undefined Behavior Sanitizer.
Улучшена поддержка OpenCL и OpemMP 5.0.
Поведение в ряде случаев приближено к поведению GCC.
Вышла новая версия популярной системы сборки CMake 3.16.0 и сопутствующих утилит CTest и CPack, облегчающих тестирование и сборку пакетов соответственно.
Вышла новая версия системной библиотеки glibc – 2.30.
Некоторые обновления:
Кодировка символов, информация о типах символов и таблицы транслитерации обновлены и теперь поддерживают Unicode версии 12.1.0.
Динамический компоновщик принимает аргумент --preload для предварительной загрузки объектов в дополнение к переменной окружения LD_PRELOAD.
Добавлена функция twalk_r. Она похожа на уже имеющуюся функцию twalk, но она может передавать дополнительный аргумент в функцию обратного вызова.
В Linux были добавлены функции 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, будучи при этом быстрым, легковесным и минималистичным.
Из особенностей можно выделить:
Vim-like управление.
Использует w3imgdisplay или Überzug для предпросмотра картинок на выбор пользователя.
Использует atool для предпросмотра архивов.
Использует mediainfo для просмотра информации о медиа-файлах и размеров файлов.