LINUX.ORG.RU

Сообщения 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
()

yyjson 0.10.0

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

Состоялся выпуск 0.10.0 высокопроизводительной библиотеки yyjson, написанной на языке C (стандарт C89), распространяемой по лицензии MIT и предназначенной для чтения и модификации данных в формате JSON (RFC 8259).
Библиотека также поддерживает RFC JSON Pointer, JSON Patch и JSON Merge Patch.

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

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

 , , ,

dataman
()

ugrep 6.2.0

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

Состоялся выпуск 6.2.0 быстрой консольной утилиты поиска текста ugrep, написанной на языке C++ и распространяемой по лицензии BSD-3.

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

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

 , , , ,

dataman
()

lug — DSL с расширенным PEG для C++17

Форум — Development

После 6.5 лет забвения автор выпустил версию 0.2.0 header-only библиотеки lug.

using namespace lug::language;
		rule JSON;
		rule ExponentPart   = lexeme[ "[Ee]"_rx > ~"[+-]"_rx > +"[0-9]"_rx ];
		rule FractionalPart = lexeme[ "."_sx > +"[0-9]"_rx ];
		rule IntegralPart   = lexeme[ "0"_sx | "[1-9]"_rx > *"[0-9]"_rx ];
		rule Number         = lexeme[ ~"-"_sx > IntegralPart > ~FractionalPart > ~ExponentPart ];
		rule Boolean        = lexeme[ "true"_sx | "false" ];
		rule Null           = lexeme[ "null" ];
		rule UnicodeEscape  = lexeme[ 'u' > "[0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f]"_rx ];
		rule Escape         = lexeme[ "\\" > ("[/\\bfnrt]"_rx | UnicodeEscape) ];
		rule String         = lexeme[ "\"" > *("[^\"\\\u0000-\u001F]"_rx | Escape) > "\"" ];
		rule Array          = "[" > JSON > *("," > JSON) > "]";
		rule Object         = "{" > String > ":" > JSON > *("," > String > ":" > JSON) > "}";
		JSON                = Object | Array | String | Number | Boolean | Null;
		grammar_ = start(JSON);

https://github.com/jwtowner/lug

 , , , peg,

dataman
()

RTranslator 2.0.0 и 2.0.1

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

После почти трёхлетней паузы состоялись выпуски 2.0.0 и 2.0.1 оффлайн-переводчика для Android RTranslator, написанного на языках C++ и Java и распространяемого по лицензии Apache 2.0.
Для работы приложению необходим достаточно быстрый смартфон с, как минимум, 6GB памяти.
Поддерживаемые языки: арабский, болгарский, каталонский, китайский, чешский, датский, немецкий, греческий, английский, испанский, финский, французский, хорватский, итальянский, японский, корейский, голландский, польский, португальский, румынский, русский, словацкий, шведский, тамильский, тайский, турецкий, украинский, урду и вьетнамский.

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

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

 , , ,

dataman
()

Расширение smartUp Gestures удалено из Chrome Web Store

Форум — Talks

Недавно обнаружил, что перестали работать жесты мышью.
Оказалось, что smartUp Gestures было удалено из Chrome Web Store, и автоматически отключено.
За несколько дней так и не нашёл годной замены.

Репозиторий https://github.com/zimocode/smartup заархивирован.
Но нашёлся форк: https://github.com/Germxu/smartup-relay.

Видимо, причина удаления в этом:

-                               const oninstallAd = sub.cons.reason!="install" || sub.cons.donateData?.ad[0]?.find(ad => ad.type === "ad-oninstall_popup" && !ad.on);
-                               if (oninstallAd) break;
-                               chrome.tabs.create({url:"https://www.usechatgpt.ai/partner-referral?ref=smartupgestures"});
+                               // const oninstallAd = sub.cons.reason!="install" || sub.cons.donateData?.ad[0]?.find(ad => ad.type === "ad-oninstall_popup" && !ad.on);
+                               // if (oninstallAd) break;
+                               // chrome.tabs.create({url:"https://www.usechatgpt.ai/partner-referral?ref=smartupgestures"});

 , , , ,

dataman
()

Участвуете ли вы в редактировании данных OpenStreetMap?

Голосования — Голосования

Википедия: OpenStreetMap (дословно «открытая карта улиц»), сокращённо OSM — некоммерческий веб-картографический проект по созданию силами сообщества участников — пользователей Интернета подробной свободной и бесплатной географической карты мира. Для создания карт используются данные с персональных GPS-трекеров, аэрофотографии, видеозаписи, спутниковые снимки и панорамы улиц, предоставленные некоторыми компаниями, а также знания человека, рисующего карту. … Сайт OpenStreetMap предоставляет веб-страницу для просмотра карт (используется AJAX), подобную используемой в Google Maps.

Там же, в Википедии, можно посмотреть список инструментов для просмотра и редактирования карт OpenStreetMap – hobbit.

  1. Не использую OpenStreetMap вообще 225 (54%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. Никогда, но OpenStreetMap использую 99 (24%)

    ********************************************************************************************************************************************

  3. Раньше участвовал, потом перестал 38 (9%)

    ******************************************************

  4. Раз в полгода и реже 25 (6%)

    ***********************************

  5. Не участвовал, но планирую 16 (4%)

    **********************

  6. Реже раза в месяц, но чаще раза в полгода 8 (2%)

    ***********

  7. Раз в месяц и чаще 7 (2%)

    *********

Всего голосов: 418

 , , , ,

dataman
()

curl 8.8.0

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

22 мая, после почти двух месяцев разработки, состоялся выпуск 8.8.0 утилиты и библиотеки curl, написанных на языке C и распространяемых по лицензии curl.

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

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

 , ,

dataman
()

Flux — C++20 библиотека алгоритмов с другой моделью итераций

Форум — Development

Это header-only (~405 KB) C++20 библиотека в духе C++20 Ranges, Python IterTools, итераторов Rust и других, и предоставляет набор функций, в целом эквивалентный C++20 Ranges, но использует немного другую модель итерации, основанную на курсорах, а не итераторах.
Курсоры Flux - это обобщение индексов массивов, в то время как итераторы STL - обобщение указателей массивов.
Возможности:

  • большой выбор алгоритмов и адаптеров последовательностей для создания мощных (?) и эффективных конвейеров данных;
  • более высокая безопасность по сравнению со стандартными итераторами;
  • более простое использование в распространённых случаях, особенно при определении собственных последовательностей и адаптеров;
  • более эффективное выполнение некоторых распространённых операций;
  • совместимость с существующими стандартными библиотечными типами и концептами.

Документация: https://tristanbrindle.com/flux/index.html
Код: https://github.com/tcbrindle/flux
Лицензия: Boost 1.0.
Пример:

constexpr auto result = flux::ints()                        // 0,1,2,3,...
                         .filter(flux::pred::even)          // 0,2,4,6,...
                         .map([](int i) { return i * 2; })  // 0,4,8,12,...
                         .take(3)                           // 0,4,8
                         .sum();                            // 12

static_assert(result == 12);

Он же в Compiler Explorer: https://flux.godbolt.org/z/KKcEbYnTx.


Проект от автора библиотеки NanoRange – C++20 Ranges для C++17.

 , ,

dataman
()

Ventoy 1.0.98

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

Состоялся выпуск 1.0.98 Ventoy — инструмента для создания загрузочных USB-накопителей.

Изменения:

  • обновлены загрузочные файлы EFI;
  • исправлена ошибка, из-за которой не распознавалась файловая система Ext4, созданная с помощью последней версии gparted;
  • исправлена ошибка, из-за которой параметр VTOY_LINUX_REMOUNT=1 не работал в RHEL9/CentOS9;
  • исправлена ошибка загрузки последней версии Arch Linux;
  • исправлена ошибка загрузки последней версии KaOS;
  • обновлены локализации;
  • до версии 1.0.35 обновлён плагин vtoyboot.

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

 ,

dataman
()

Thorium 124.0.6367.218

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

17 мая состоялся 59-ый выпуск браузера Thorium, основанный на исходном коде Chromium 124.0.6367.218.

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

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

 , , ,

dataman
()

trurl 0.13

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

15 мая состоялся выпуск 0.13 консольной утилиты trurl, написанной на языке C с использованием библиотеки libcurl. Утилита предназначена для разбора и других манипуляций с URL-адресами.

trurl – это инструмент в духе tr, но для URL-адресов:

$ trurl --url https://www.linux.org.ru/help/rules.md --get '{path}'

/help/rules.md

$ trurl --url https://www.linux.org.ru --append path=forum

https://www.linux.org.ru/forum

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

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

Видео-презентация (1:05:53).

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

 , , , ,

dataman
()

7-Zip 24.05

Новости — Open Source
7-Zip 24.05
Группа Open Source

После пяти месяцев разработки состоялся выпуск 24.05 библиотеки и консольной утилиты 7-Zip, написанных на языках C и C++ и предназначенных для работы с архивами в формате 7z и многих других.

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

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

 , , , ,

dataman
()

whisper.cpp 1.6.0

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

15 мая состоялся выпуск 1.6.0 высокопроизводительной системы автоматического распознавания речи whisper.cpp, реализующей модель Whisper от OpenAI на языках C и C++, и распространяемой по лицензии MIT.

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

  • добавлена опция --flash-attn для ускорения обработки данных на устройствах с CUDA и Metal;
  • более высокая производительность на архитектуре ppc64;
  • исправлена ошибка обработки регулярного выражения в консольной утилите-примере main.

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

 , , , ,

dataman
()

Qalculate! 5.1 и 5.1.1

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

6 и 7 мая состоялись выпуски 5.1 и 5.1.1 C++ библиотеки, консольного и GUI-калькуляторов Qalculate!, написанных на языке C++ и распространяемых по лицензии GPL 2.0.

Изменения в библиотеке и консольном калькуляторе:

  • поддержка решения уравнений, содержащих функцию if();
  • поддержка решения root(a, x)=b (требуется рациональное значение для ln(a)/ln(b));
  • новые функции: powertower() и multiples();
  • новые единицы измерения солнечного радиуса, массы и светимости;
  • запрос желаемой интерпретации при первом использовании процентного сложения (например, 100 + 10% равно 110 или 100.1);
  • использование круглых скобок для экспоненты в научной системе счисления (со степенью 10);
  • поддержка целочисленной факторизации чисел в матрице или векторе, а также числителя и знаменателя в рациональном числе;
  • ослаблены условия для (x^a)^b = x^(a × b) и x^a × x^b = x^(a + b) при отключении комплексных чисел (исправлено падение);
  • исправление: если (ax + n)^2 > 1, где n чётно и a не равно 1, возвращается false;
  • исправления в функции setbits();
  • исправление Number::equals(0, ..., true), когда число бесконечно (влияет на функцию replace());
  • исправление a^(f(x))=a^(b*g(x)), где b=2 или b=3 (в версии 5.1.1).
  • другие исправления мелких ошибок и расширение возможностей.

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

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

 , , qalculate, ,

dataman
()

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