LINUX.ORG.RU

C


346

4

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

cppcheck 2.6

 , , ,

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

Вышла новая версия cppcheck — статического анализатора исходного кода для языков C и C++.

В этом выпуске представлены новые проверки:

  • пропущенный return в функции;
  • запись перекрывающихся (overlapping) данных, обнаружение UB;
  • сравнение с значением вне допустимого диапазона типов;
  • отключение copy elision из-за использования return std::move(local);
  • открытие файла на чтение и запись в разных потоках (streams).

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

Помимо этого, была завершена проверка соответствия исходного кода стандарту MISRA C 2012: реализованы все правила MISRA C 2012, кроме 1.1, 1.2 (должны обеспечиваться компилятором) и 17.3 (может обеспечиваться компилятором), включая правила в поправках 1 и 2.

Исходный код анализатора распространяется по лицензии GPLv3.

>>> Подробности (sourceforge.net)

Siborgium
()

Новая книга «Linux Kernel Programming»

 , , ,

Группа Ядро Linux

Много воды утекло с момента выхода LDD3 (LDD4 мы, видимо, уже не дождёмся), безнадёжно устарел фундаментальный труд Бовета и Чезати, Роберт Лав давно не радовал нас своими прекрасными творениями. Казалось бы, в мире литературы о программировании ядра Linux наметилась устойчивая стагнация…

Но нет! Ситуацию спасает замечательный индийский программист со звучным именем Кайван Биллимория. Он написал книгу о программировании ядра, аж в двух томах.

Об авторе

Кайван программирует с 1983 года. В то время он самостоятельно научился программировать на бейсике, затем освоил Си и ассемблер под MS-DOS, а потом открыл для себя мир UNIX и Linux. Занимался программированием ядра и драйверов, участвовал в коммерческих и свободных проектах, занимался преподавательской деятельностью.

Повествование в книге ведётся на основе Ubuntu 18.04 LTS и ядра версии 5.4.

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

>>> Том 1 на Amazon

>>> Том 2 на Amazon

x-signal
()

Cppcheck 2.5

 , , ,

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

Вышла новая версия статического анализатора для С и С++.

В новой версии:

В парсере:

  • различные исправления;
  • теперь поддерживаются все возможности c++11, c++14, c++17;
  • частичная поддержка с++20.

Также анализатор теперь:

  • знает больше об API;
  • показывает меньше ненужных предупреждений;
  • находит больше багов;
  • исправлены вылеты и ложные срабатывания в Misra.

Добавлены новые проверки:

  • подозрительное присваивание контейнера/итератора в условии;
  • повторное пробрасывание текущего исключения с помощью 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

>>> Подробности (github.com)

fsb4000
()

Zig 0.8

 , ,

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

После 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

>>> Официальный сайт (ziglang.org)

fsb4000
()

zlib-ng 2.0.3

 ,

Группа Open Source

zlib-ng – совместимый форк zlib с модернизированной кодовой базой и оптимизациями.

Изменения с версии 2.0.2:

  • улучшена документация;
  • устранено падение на ARMv7;
  • исправление ошибок компиляции для FreeBSD, RISC-V, Musl и ARM;
  • доступны для загрузки Windows ARM dll;
  • улучшена совместимость с zlib.

Известные проблемы:

  • пока не исправлена ошибка компиляции с mpicc.

>>> Подробности (github.com)

dataman
()

Вышла библиотека YAFL

 , ,

Группа Open Source

Сегодня (10.04.2021) состоялся первый релиз библиотеки YAFL.

YAFL - это библиотека, написанная на Си, содержащая несколько алгоритмов Калмановской фильтрации, распространяемая под лицензией Apache-2.0.

Библиотека ориентирована на применение во встраиваемых системах на базе микроконтроллеров с аппаратной поддержкой вычислений с плавающей точкой.

Для прототипирования алгоритмов обработки сигналов с использованием YAFL предполагается использовать Python 3.5+ и написанное на Cython расширение yaflpy.

Отличительные особенности библиотеки:

  • библиотека нацелена на преимущественное использование статического выделения памяти;
  • по мере возможности использованы алгоритмы, минимизирующие кеш-промахи;
  • в YAFL реализованы квадратнокорневые варианты алгоритмов фильтрации на основе UDU-разложения;
  • применены численно-стабильные методы вычислений, а так же регуляризация;
  • библиотека содержит алгоритмы, в которых применены меры для:
    • устранения расходимости фильтров
    • взвешивания результатов измерений с целью снижения влияния промахов/помех.

YAFL находится на ранней стадии разработки, код и документация могут содержать ошибки. Текущая версия библиотеки: 0.10.0.

>>> Подробности (github.com)

shkolnick-kun
()

Вышел перевод книги Брайана Кернигана «UNIX: A History And A Memoir»

 , , ,

Вышел перевод книги Брайана Кернигана «UNIX: A History And A Memoir»
Группа Документация

Вышел перевод книги о легендарной эпохе, когда компьютеры были большими и тяжёлыми, частота измерялась в мегагерцах, а программы писали бородатые дядьки на зелёных терминалах, и происходило зарождение Си и UNIX.

Содержание:

  • Глава 1. Bell Labs
  • Глава 2. Зарождение Unix (1969)
  • Глава 3. Первая редакция (1971)
  • Глава 4. Шестая редакция (1975)
  • Глава 5. Седьмая редакция (1976–1979)
  • Глава 6. По ту сторону исследований
  • Глава 7. Коммерческая реализация
  • Глава 8. Потомки
  • Глава 9. Наследие

>>> Подробности (piter.com)

x-signal
()

ZenMake 0.10.0

 , ,

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

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

Способы использования:

  1. Установить в систему через pip install zenmake и использовать на манер CMake, Meson и др., вызывая zenmake в корне проекта.
  2. Скачать zipapp-форму zenmake.pyz отсюда или сгенерировать самостоятельно через команду zipapp и использовать как встроенную систему сборки.

>>> Подробности (gitlab.com)

Vark
()

luastatus v0.5.0

 , , , ,

Группа Open Source

Вышла новая версия luastatus, универсального генератора данных для панелей состояния, поддерживающего i3bar, dwm, lemonbar и др. Программа написана на C и распространяется под лицензией GNU LGPL v3.

Большинство генераторов данных для панелей состояния тайловых WM либо обновляют информацию по таймеру (например, conky), либо требуют сигнал для перерисовки (например, i3status). Панели же в составе окружений рабочего стола, как правило, обновляют информацию мгновенно и автоматически, как и luastatus.

luastatus позволяет пользователю определять логику обработки данных от плагинов, написанных на Си и поставляющихся с luastatus, с помощью виджетов, написанных на Lua. Также виджеты могут обрабатывать события, такие как щелчки по панели состояния.

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

>>> Страница проекта на GitHub

>>> Страница релиза (github.com)

shdown
()

LLVM 10.0

 , , ,

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

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.

>>> Подробности (llvm.org)

anonymous
()

Вышла новая версия CMake 3.16.0

 , ,

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

Вышла новая версия популярной системы сборки CMake 3.16.0 и сопутствующих утилит CTest и CPack, облегчающих тестирование и сборку пакетов соответственно.

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

>>> Подробности (kitware.com)

a1batross
()

GNU C Library v2.30

 , ,

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

Вышла новая версия системной библиотеки 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.

>>> Больше изменений и подробности (sourceware.org)

anonymous
()

cfiles 1.3

 , cfiles, , ,

Группа Open Source

Представлен новый выпуск консольного файлового менеджера cfiles, написанный на C и нацеленный на то, чтобы предоставить функционал файлового менеджера ranger, будучи при этом быстрым, легковесным и минималистичным.

Из особенностей можно выделить:

  • Vim-like управление.
  • Использует w3imgdisplay или Überzug для предпросмотра картинок на выбор пользователя.
  • Использует atool для предпросмотра архивов.
  • Использует mediainfo для просмотра информации о медиа-файлах и размеров файлов.
  • Использует fzf, написаный на Go, для поиска.

>>> GitHub проекта (github.com)

Deleted
()

luastatus 0.4.0

 , , , ,

Группа Open Source

Вышла новая версия luastatus, универсального генератора данных для панелей состояния, поддерживающего i3bar, dwm, lemonbar и другие. Программа написана на C и распространяется под лицензией GNU LGPL v3.

Большинство генераторов данных для панелей состояния тайловых WM либо обновляют информацию по таймеру (например, conky), либо требуют сигнал для перерисовки (например, i3status). Панели же в составе окружений рабочего стола, как правило, обновляют информацию мгновенно и автоматически, как и luastatus.

luastatus позволяет пользователю определять логику обработки данных от плагинов, написанных на Си и поставляющихся с luastatus, с помощью виджетов, написанных на Lua. Также виджеты могут обрабатывать события, такие как щелчки по панели состояния.

Нововведения релиза:

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

>>> Страница проекта на GitHub

>>> Информация о релизе (github.com)

shdown
()

Новый стандарт языка C: C18

 , c18, ,

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

Международная Организация по Стандартизации (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.

Последний черновик стандарта

Статья на en.wikipedia.org

>>> Подробности (iso-9899.info)

neon1ks
()

GNU OrgaDoc 1.0

 , , , ,

Группа GNU's Not Unix

OrgaDoc предназначен для простого сопровождения и копирования набора документов между компьютерами. Набор документов можно синхронизировать с помощью rsync или unison. Не нужно устанавливать СУБД типа MySQL или PostgreSQL, HTTP-сервер, скриптовый язык типа PHP или Perl — достаточно установить OrgaDoc и генерировать им документы в HTML или других форматах.

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

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

Изменения с версии 0.9:

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

>>> Скачать: HTTP, FTP, зеркало GNU

>>> Источник (gnu.org)

bodqhrohrojkeeee228
()

luastatus 0.3.0

 , , , ,

Группа Open Source

Вышла новая версия luastatus, универсального генератора данных для панелей состояния, поддерживающего i3bar, dwm и lemonbar (также есть экспериментальная поддержка dzen/dzen2, xmobar, wmii и других). Программа написана на C и распространяется под лицензией GNU LGPL v3.

Большинство генераторов данных для панелей состояния тайловых WM либо обновляют информацию по таймеру (например, conky), либо требуют сигнал для перерисовки (например, i3status). Панели же в составе окружений рабочего стола, как правило, обновляют информацию мгновенно и автоматически, как и luastatus.

luastatus позволяет пользователю определять логику обработки данных от плагинов, написанных на Си и поставляющихся с luastatus, с помощью виджетов, написанных на Lua. Также виджеты могут обрабатывать события, такие как щелчки по панели состояния.

Нововведения релиза:

  • Поддержка так называемых “derived plugins” — плагинов, написанных на Lua.

  • Новые плагины:
    • dbus;

    • udev;

    • backlight-linux;

    • battery-linux;

    • cpu-usage-linux;

    • file-contents-linux;

    • imap;

    • mem-usage-linux;

    • pipe.

  • При ошибке в виджете теперь печатается стек-трейс.

>>> Страница проекта на GitHub

>>> Страница релиза (github.com)

shdown
()

Релиз nEMU 2.0.0

 , ,

Релиз nEMU 2.0.0
Группа Open Source

Состоялся релиз nEMU версии 2.0.0.

nEMU — это ncurses-интерфейс к QEMU, упрощающий создание, настройку и управление виртуальными машинами. Код написан на языке C и распространяется под лицензией BSD-2.

В этом релизе был полностью переписан пользовательский интерфейс, т.к. старый был изначально странен и неудобен.

Видео с новым интерфейсом доступно по ссылке

Для Gentoo Linux данный релиз уже доступен через live-ebuild (app-emulation/nemu-9999).

Deb-пакеты для Debian и Ubuntu можно взять тут (спасибо Sergei Eremenko (SmartFinn)).

Файл локализации для ru.RU требует полной переработки. У меня проблема с временем и я буду рад pull-реквестам.

>>> Подробности (bitbucket.org)

pascal
()

Новая версия библиотеки plibsys 0.0.4

 , , , ,

Группа Open Source

Вышла новая версия библиотеки plibsys 0.0.4. plibsys - это системная библиотека, написанная на С, и портированная на большое количество систем и компиляторов. Библиотека обеспечивает работу с потоками, межпроцессное взаимодействие, сокеты и много чего полезного. Так как ранее она уже была представлена здесь сообществу, то подробное описание можно прочитать из соответствующей новости.

Во-первых, хочется выразить благодарность ЛОРу за конструктивную критику и пожелания. Это помогает переосмысливать некоторые вещи. Во-вторых, спасибо тем, кто создал пакеты под разные системы и дистрибутивы, помог с распространением. И спасибо тем, кто помогал в некоторых моментах с тестированием (особенно на ПК «Эльбрус»).

Теперь к изменениям в новой версии. Возможно, некоторые из изменений уже были отражены в прошлой новости частично, но я дам полный список для простоты.

( Что же изменилось за прошедший год? )

>>> Репозиторий на GitHub (github.com)

HardCode
()

SDL 2.0.7

 , ,

Группа Игры

Simple DirectMedia Layer (SDL) — это свободная кроссплатформенная мультимедийная библиотека, реализующая единый программный интерфейс к графической подсистеме, звуковым устройствам и средствам ввода для широкого спектра платформ. Она активно используется при написании кроссплатформенных мультимедийных программ (в основном игр).

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

>>> Подробности (libsdl.org)

a1batross
()