LINUX.ORG.RU

Сообщения dataman

 

RSS Guard 4.7.4

Новости — Open Source
RSS Guard 4.7.4
Группа Open Source

Состоялся выпуск 4.7.4 кроссплатформенного RSS-клиента RSS Guard, написанного на языке C++ с использованием фреймворка Qt (5 или 6) и распространяемого по лицензии GPL 3.0.

Список изменений:

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

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

 , ,

dataman
()

Stellarium 24.3

Новости — Open Source
Stellarium 24.3
Группа Open Source

22 сентября состоялся выпуск 24.3 популярного свободного планетария Stellarium, визуализирующего реалистичное ночное небо так, как если бы вы смотрели на него невооружённым глазом, либо через бинокль или телескоп.

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

>>> Подробности для версии 24.3 на GitHub

 , , , ,

dataman
()

fastfetch 2.25

Новости — Open Source
fastfetch 2.25
Группа Open Source

Состоялся выпуск 2.25.0 кроссплатформенных консольных утилит fastfetch и flashfetch, написанных на языке C и распространяемых по лицензии MIT. Утилиты предназначены для вывода информации о системе. Поддерживаются Linux, Android, FreeBSD, macOS, SunOS и Windows 7+.
В отличие от fastfetch, flashfetch не поддерживает расширенные возможности вывода информации.

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

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

 , , , ,

dataman
()

SRELL 4.056 — библиотека ECMAScript-совместимых регулярных выражений

Новости — Разработка
Группа Разработка

11 сентября состоялся выпуск 4.056 C++ библиотеки SRELL (Std::RegEx-Like Library), реализующей ECMAScript-совместимые регулярные выражения.

Список изменений:

  • поддержка Unicode 16.0.0;
  • другие небольшие изменения.

Особенности библиотеки:

  • header-only;
  • ECMAScript-совместимые регулярные выражения;
  • дизайн а-ля std::regex;
  • поддержка типов char8_t, char16_t и char32_t для C++11 и более поздних версий стандарта.

Более подробное описание доступно на сайте автора.

История изменений: англ./яп..
Постоянная ссылка на актуальную версию: https://www.akenotsuki.com/misc/srell/srell-latest.

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

 , , , ,

dataman
()

TGUI — кроссплатформенная библиотека виджетов на C++

Галерея — Скриншоты

TGUI – кроссплатформенная библиотека виджетов и простой дизайнер GUI, написанные на языке C++ (стандарт C++14) и распространяемые по лицензии Zlib.
Библиотека поддерживает несколько бэкендов ввода-вывода: SFML, SDL2, SDL3, OpenGL 3, OpenGL ES 2 и raylib.

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

 , , , ,

dataman
()

libarchive 3.7.5

Новости — Open Source
Группа Open Source

14 сентября состоялся корректирующий выпуск 3.7.5 библиотеки libarchive, с устранением многих ошибок и уязвимостей. Библиотека и сопутствующие утилиты написаны на языке C и распространяются по лицензии New BSD.

Исправления уязвимостей:

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

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

 , , , ,

dataman
()

Unicode 16.0

Новости — Open Source
Unicode 16.0
Группа Open Source

10 сентября состоялся выпуск 16.0 стандарта кодирования символов Unicode.

В этой версии добавлено 5185 новых символов, включая:

  • 3995 дополнительных символов египетских иероглифов;
  • семь новых письменностей (тулу, албанский Тодри, гарай (Сенегал), сунвар Джентича, гурунг, кират и ол-онал);
  • семь новых символов эмодзи: лицо с «мешками» под глазами, отпечаток пальца, безлистное дерево, корнеплод, арфа, лопата и брызги;
  • флаг острова Сарк;
  • более 700 символов устаревшей вычислительной техники.

На данный момент стандарт содержит 154998 символов, 168 письменностей и 3790 эмодзи.

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

 , ,

dataman
()

Groonga 14.0.7

Новости — Open Source
Groonga 14.0.7
Группа Open Source

После месяца разработки состоялся выпуск 14.0.7 полнотекстовой поисковой системы и столбцовой системы управления базами данных Groonga, написанной на языках C и C++, и распространяемой по лицензии GNU LGPL 2.1.

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

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

 , , , ,

dataman
()

Телеметрии в LLVM быть?!

Форум — Talks

 , , ,

dataman
()

Midnight Commander 4.8.32

Новости — Open Source
Midnight Commander 4.8.32
Группа Open Source

После почти семи месяцев разработки состоялся выпуск 4.8.32 консольного менеджера файлов Midnight Commander, написанного на языке C и рапространяемого по лицензии GNU GPL 3.

Список изменений:

  • реализована передача текущей директории в эмулятор терминала с помощью escape-последовательности OSC 7, что позволяет открывать в ЭТ новые вкладки с этой директорией;
  • сохранение атрибутов файлов при копировании или перемещении в файловой системе ext2;
  • имя временного каталога теперь уникально при каждом запуске;
  • скрытие пароля в диалоге прогресса выполнения файловых операций в виртуальных файловых системах (например, SFTP);
  • поддержка команды FTP reget при перемещении файлов;
  • до наносекундной точности улучшена поддержка времени для систем, отличных от Linux (macOS, BSD, AIX, Solaris);
  • удалено использование mmap для упрощения сопровождения кода;
  • добавлено корректное определение архивов RAR 7;
  • в mcedit улучшена подсветка синтаксиса кода на C и C++;
  • добавлена man-страница mcdiff.1;
  • уточнено экранирование пробелов и скобок в mc.ext.ini;
  • добавлены новые темы оформления: modarcon16-defbg-thin, modarcon16-thin, modarcon16root-defbg-thin, modarcon16root-thin, modarin256-defbg-thin, modarin256-thin, modarin256root-defbg-thin, modarin256root-thin, julia256root, xoria256-thin (на скриншоте) и xoria256root-thin;
  • исправлено падение при копировании файлов из архивов tar;
  • исправлено падение при входе в удаленный архив;
  • увеличена скорость открытия образов ISO;
  • исправлен ряд других ошибок.

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

 , , ,

dataman
()

bfs 4.0 и 4.0.1

Новости — Open Source
bfs 4.0 и 4.0.1
Группа Open Source

16 и 19 августа состоялись выпуски 4.0 и 4.0.1 многопоточной консольной утилиты поиска файлов bfs (Breadth-First Search, поиск в ширину), написанной на языке C и распространяемой по лицензии BSD.

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

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

 , , , ,

dataman
()

Обновление подсветки синтаксиса

Форум — Linux-org-ru

В движке сайта – большое обновление подсветки синтаксиса. Добавлены:

ARMASM
AVRASM
AWK
Basic
Brainfuck
C
JSON
Julia
Lisp
LLVM
Makefile
MIPSASM
Nim
Nix
Ocaml
Scheme
TCL
TypeScript
Vim
WASM
X86ASM
YAML

Подробности

Перемещено hobbit из linux-org-ru

 , ,

dataman
()

trurl 0.14

Новости — Интернет
trurl 0.14
Группа Интернет

30 июля состоялся выпуск 0.14 консольной утилиты trurl (tr for URLs), написанной на языке C с использованием функции curl_url_set библиотеки libcurl. Утилита предназначена для разбора и других манипуляций с URL-адресами.

Список изменений:

  • вместо функции strncasemp используется собственная реализация;
  • добавлена поддержка префикса strict командой --get;
  • добавлена поддержка оператора условного присваивания ?= командой --set;
  • удалён лишний перевод строки при выводе предупреждения;
  • в документацию добавлены коды возврата.

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

 , , , ,

dataman
()

jdupes 1.28.0

Новости — Open Source
jdupes 1.28.0
Группа Open Source

27 июля состоялся выпуск 1.28.0 консольной утилиты jdupes, написанной на языке C и распространяемой по лицензии MIT.
Утилита предназначена для поиска дублирующихся файлов, с возможностью их удаления, блочной дедупликации или замены на ссылки.

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

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

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

 , , , ,

dataman
()

dracut-ng

Форум — Talks

Тут увидел: https://github.com/void-linux/void-packages/pull/51344

Как пишут в NEWS:

Release 100 of dracut-ng serves as a drop-in replacement for the original dracut project. This release marks a significant milestone in our commitment to providing an alternative, community-driven solution for creating an initramfs image. The original dracut project is no longer actively maintained (its last tagged release dates back to 2022). Forking allows the community to take ownership of the project and address maintenance issues independently.

This release includes fixes for compatibility with the latest Linux kernel (v6.8), Linux firmware, and systemd (v255).

A new dracut module named net-lib has been added to enhance networking support.

Support for new Linux kernel modules have been added to support new devices, including the Surface Laptop 4 and MacBook Pro.

The project builds test containers daily for the following Linux distributions: Arch Linux, Debian, Fedora, Gentoo, openSUSE, and Ubuntu, in various configurations (systemd, OpenRC, glibc, musl). All enabled integration tests have passed at the time of this release.

  1. https://github.com/dracutdevs/dracut
  2. https://github.com/dracut-ng/dracut-ng

 , ,

dataman
()

Сколько нужно памяти для компиляции bmake?

Форум — Development

Пытаюсь скомпилировать (GCC 14.1) bmake (исходники). Свободных 6Gb не хватает, система намертво виснет.
Есть желающие попытаться? :)

 , , ,

dataman
()

GNU nano 8.1 «De dag van de bitterkoekjespudding»

Новости — Open Source
GNU nano 8.1 «De dag van de bitterkoekjespudding»
Группа Open Source

12 июля состоялся выпуск 8.1 «De dag van de bitterkoekjespudding» редактора текста GNU nano.

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

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

 , , , ,

dataman
()

Уменьшить минимальный размер изображений

Форум — Linux-org-ru

Часто какое-нибудь лого программы или библиотеки имеет размер меньше, чем 400x400. Ещё чаще оно не квадратное.
Хотелось бы уменьшить до 200.

 , , ,

dataman
()

μt — C++20 библиотека модульного тестирования

Форум — Development

μt¹ – небольшая (~100 Кб), header-only (единственный файл ut.hpp) C++20 библиотека модульного тестирования.
В отличие от большинства аналогов (сatch³, doctest⁴, etc.) основана не на макросах, а на возможностях стандарта C++20.
Библиотекой поддерживаются техники TDD (разработка через тестирование), BDD (разработка через поведение) и язык BDD Gherkin.
Зависит только от std.

Примеры:

#include <boost/ut.hpp> // import boost.ut;

constexpr auto sum(auto... values) { return (values + ...); }

int main() {
  using namespace boost::ut;

  "sum"_test = [] {
    expect(sum(0) == 0_i);
    expect(sum(1, 2) == 3_i);
    expect(sum(1, 2) > 0_i and 41_i == sum(40, 2));
  };
}
#include <boost/ut.hpp>
#include <chrono>
#include <iostream>
#include <string>
#include <string_view>

namespace benchmark {
struct benchmark : boost::ut::detail::test {
  explicit benchmark(std::string_view _name)
      : boost::ut::detail::test{"benchmark", _name} {}

  template <class Test>
  auto operator=(Test _test) {
    static_cast<boost::ut::detail::test&>(*this) = [&_test, this] {
      const auto start = std::chrono::high_resolution_clock::now();
      _test();
      const auto stop = std::chrono::high_resolution_clock::now();
      const auto ns =
          std::chrono::duration_cast<std::chrono::nanoseconds>(stop - start);
      std::clog << "[" << name << "] " << ns.count() << " ns\n";
    };
  }
};

[[nodiscard]] auto operator""_benchmark(const char* _name,
                                        decltype(sizeof("")) size) {
  return ::benchmark::benchmark{{_name, size}};
}

#if defined(__GNUC__) or defined(__clang__)
template <class T>
void do_not_optimize(T&& t) {
  asm volatile("" ::"m"(t) : "memory");
}
#else
#pragma optimize("", off)
template <class T>
void do_not_optimize(T&& t) {
  reinterpret_cast<char volatile&>(t) =
      reinterpret_cast<char const volatile&>(t);
}
#pragma optimize("", on)
#endif
}  // namespace benchmark

int main() {
  using namespace boost::ut;
  using namespace benchmark;

  "string creation"_benchmark = [] {
    std::string created_string{"hello"};
    do_not_optimize(created_string);
  };
}

BDD:

#include <boost/ut.hpp>

int main() {
  using namespace boost::ut::literals;
  using namespace boost::ut::operators::terse;
  using namespace boost::ut::bdd;

  "Scenario"_test = [] {
    given("I have...") = [] {
      when("I run...") = [] {
        then("I should have...") = [] { 1_u == 1u; };
        then("I should have...") = [] { 1u == 1_u; };
      };
    };
  };

  feature("Calculator") = [] {
    scenario("Addition") = [] {
      given("I have number 40") = [] {
        auto number = 40;
        when("I add 2 to number") = [&number] { number += 2; };
        then("I expect number to be 42") = [&number] { 42_i == number; };
      };
    };
  };

  // clang-format off
  scenario("Addition");
    given("I have number 40");
      auto number = 40;

    when("I add 2 to number");
      number += 2;

    then("I expect number to be 42");
      42_i == number;
}

Gherkin:

#include <boost/ut.hpp>
#include <fstream>
#include <numeric>
#include <streambuf>
#include <string>

template <class T>
class calculator {
 public:
  auto enter(const T& value) -> void { values_.push_back(value); }
  auto add() -> void {
    result_ = std::accumulate(std::cbegin(values_), std::cend(values_), T{});
  }
  auto sub() -> void {
    result_ = std::accumulate(std::cbegin(values_) + 1, std::cend(values_),
                              values_.front(), std::minus{});
  }
  auto get() const -> T { return result_; }

 private:
  std::vector<T> values_{};
  T result_{};
};

int main(int argc, const char** argv) {
  using namespace boost::ut;

  bdd::gherkin::steps steps = [](auto& steps) {
    steps.feature("Calculator") = [&] {
      steps.scenario("*") = [&] {
        steps.given("I have calculator") = [&] {
          calculator<int> calc{};
          steps.when("I enter {value}") = [&](int value) { calc.enter(value); };
          steps.when("I press add") = [&] { calc.add(); };
          steps.when("I press sub") = [&] { calc.sub(); };
          steps.then("I expect {value}") = [&](int result) {
            expect(that % calc.get() == result);
          };
        };
      };
    };
  };

  // clang-format off
  "Calculator"_test = steps |
    R"(
      Feature: Calculator

        Scenario: Addition
          Given I have calculator
           When I enter 40
           When I enter 2
           When I press add
           Then I expect 42

        Scenario: Subtraction
          Given I have calculator
           When I enter 4
           When I enter 2
           When I press sub
           Then I expect 2
    )";
  // clang-format on

  if (argc == 2) {
    const auto file = [](const auto path) {
      std::ifstream file{path};
      return std::string{(std::istreambuf_iterator<char>(file)),
                         std::istreambuf_iterator<char>()};
    };

    "Calculator"_test = steps | file(argv[1]);
  }
}

  1. https://github.com/boost-ext/ut
  2. https://boost-ext.github.io/ut – примеры, документация, бенчмарки
  3. https://github.com/catchorg/Catch2
  4. https://github.com/doctest/doctest
  5. https://boost-ext.github.io/ut/denver-cpp-2019 – слайд-презентация.
  6. https://www.youtube.com/watch?v=irdgFyxOs_Y – презентация на CppCon 2020.

 , , , ,

dataman
()

Intermediate Graphics Library 1.0.0

Новости — Разработка
Intermediate Graphics Library 1.0.0
Группа Разработка

Состоялся выпуск 1.0.0 C++ библиотеки Intermediate Graphics Library (IGL). Это кроссплатформенная библиотека для управления графическим процессором. Она предоставляет единый низкоуровневый кроссплатформенный интерфейс поверх различных графических API.

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

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

 , , , ,

dataman
()

RSS подписка на новые темы