LINUX.ORG.RU

Сообщения dataman

 

Автор whisper.cpp ищет сопровождающих

https://github.com/ggerganov/whisper.cpp/discussions/2788

В последнее время я стал уделять проекту меньше внимания, поскольку мое внимание сместилось в сторону llama.cpp и ggml. Тем не менее, whisper.cpp остается действительно классным проектом, который используется многими разработчиками и продуктами. В целом он находится в хорошем состоянии с точки зрения основной реализации и функциональности. Однако ему все больше и больше не хватает CI, документации, упаковки и распространения.

Я создал дорожную карту с некоторыми вещами, которые, по моему мнению, необходимо улучшить в будущем:

https://github.com/users/ggerganov/projects/16/

Это несколько высокоуровневых задач с множеством ответвлений и возможностей для внесения вклада. В основном они направлены на улучшение опыта разработчиков и конечных пользователей при использовании проекта. Конечная цель состоит в том, чтобы в какой-то момент у проекта появился долгосрочный сопровождающий (не я) и чтобы он продолжал жить под организацией ggml-org на Github (см. #2786).

Это обсуждение создано для того, чтобы привлечь к этому больше внимания в надежде получить некоторую поддержку со стороны сообщества. Не стесняйтесь задавать любые вопросы или предлагать идеи по улучшению проекта. Тем не менее, я не хочу погрязнуть в обсуждении и планировании – основные шаги уже есть в дорожной карте выше, и они просто требуют исполнения.

Переведено DeepL.

 , , , ,

dataman
()

GTK перевёл бэкенд для X11 в разряд устаревших

Разработчики библиотеки GTK объявили о присвоении статуса устаревшего бэкенду для протокола X11 и намерении прекратить поддержку X11 в ветке GTK 5. Несмотря на устаревший статус, в ветке GTK 4 работа на системах X11 будет сохранена.

Желание избавиться от бэкенда X11 объясняется прекращением активности по развитию протокола X11 и проблемами с сопровождающими - бэкенд поддерживается по остаточному принципу, так как имеющиеся разработчики GTK и GNOME сосредоточены на Wayland. Из-за стагнации в разработке бэкенда, он тормозит реализацию новых возможностей в GTK. В 2022 году была предпринята попытка найти лиц, заинтересованных в поддержке протокола X11 в GTK и готовых взять на себя сопровождение бэкенда, но их так и не нашлось.

Кроме X11 устаревшим объявлен бэкенд Broadway, позволяющий отрисовывать вывод библиотеки GTK в окне web-браузера, а также класс GtkShortcutsWindow, отображающий подсказку по клавиатурным комбинациям и экранным жестам. Вместо GtkShortcutsWindow планируют предложить замену, которая войдёт в состав осеннего значительного релиза libadwaita.

Дополнительно можно упомянуть публикацию выпуска GTK 4.17.4 в тестовой ветке 4.17, развивающей функциональность для будущей стабильной ветки 4.18. В состав GTK 4.17.4 включён экспериментальный бэкенд, позволяющий запускать GTK-приложения на смартфонах с платформой Android. Для ознакомления с возможностями GTK на устройствах с Android подготовлен apk-пакет с демонстрационным мобильным приложением.

Из состава GTK 4.17.4 удалён движок отрисовки «gl», использующий OpenGL. Начиная с GTK 4.14 в состав входит новый движок «ngl», реализующий уровень абстракции для OpenGL, работающий поверх Vulkan. Из ограничений движка «ngl» отмечается прекращение поддержки систем со старыми драйверами и устаревшим оборудованием.

Источник: https://www.opennet.ru/opennews/art.shtml?num=62658.

 , , ,

dataman
()

В Geany добавили фильтрацию по сочетанию клавиш

https://github.com/geany/geany/pull/4192

Но фильтруется только по названию действия, а не по самому сочетанию. :(

 , , ,

dataman
()

Зонд NASA Parker рекордно сблизился с Солнцем

Сегодня в 14:53 по московскому времени американский межпланетный зонд Parker совершил самый близкий пролёт близ Солнца. В этот момент он приблизился на 6,1 миллионов километров к нашему светилу на скорости 690 тыс. км в час.

Хотя NASA ожидает, что Parker пролетит мимо Солнца по крайней мере ещё дважды (если, конечно, зонд не будет повреждён высокой температурой), нынешний пролёт стал рекордным по близости к Солнцу.

«В канун Рождества 1969 года мы высадили людей на Луне; в канун Рождества 2024 года мы попытаемся обнять звезду», — сказал Нур Рауафи (Nour Raouafi), научный сотрудник проекта Parker Solar Probe.

На данный момент связи с зондом нет, она восстановится 27 декабря. А собранные научные данные аппарат начнёт передавать на Землю в конце января 2025 года, когда займёт наиболее благоприятствующее для связи положение на орбите. Если всё пойдёт хорошо, Parker продолжит свою миссию: он снова пролетит возле Солнца 22 марта 2025 года и 19 июня 2025 года.

Источник полностью ёфицирован.

 , , ,

dataman
()

Замена 😊 в реакциях на другой символ

Смеющийся смайлик какой-то дурацкий!

Кандитаты:

  1. 😀
  2. 😁
  3. 😆
  4. 🙂
  5. 😄
  6. 😃
    … ?

diff --git a/src/main/scala/ru/org/linux/reaction/ReactionService.scala b/src/main/scala/ru/org/linux/reaction/ReactionService.scala
index aa6dde91e..dd31c5a99 100644
--- a/src/main/scala/ru/org/linux/reaction/ReactionService.scala
+++ b/src/main/scala/ru/org/linux/reaction/ReactionService.scala
@@ -97,7 +97,7 @@ object ReactionService {
   val DefinedReactions: Map[String, String] = Map(
     "\uD83D\uDC4D" -> "большой палец вверх",
     "\uD83D\uDC4E" -> "большой палец вниз",
-    "\uD83D\uDE0A" -> "улыбающееся лицо",
+    "\uD83D\uDE42" -> "смешно!",                  // 🙂
     "\uD83D\uDE31" -> "лицо, кричащее от страха",
     "\uD83E\uDD26" -> "facepalm",
     "\uD83D\uDD25" -> "огонь",

 , ,

dataman
()

Минюст США может потребовать от Google продать Chrome

Высокопоставленные сотрудники антимонопольного управления Минюста США попросят суд заставить Google продать свой браузер Chrome, сообщили источники Bloomberg. По их данным, чиновники 20 ноября обратятся к судье Амиту Мехте, который в августе признал корпорацию монополистом.

По словам собеседников агентства, американские власти хотят, чтобы компания продала браузер, поскольку он является «ключевой точкой доступа», через которую многие используют поисковую систему Google. При этом, говорится в сообщении, правительство может принять решение о необходимости продажи позднее, если получится создать более конкурентный рынок за счет других мер, например прекращения выплат Apple, Samsung и другим производителям устройств за то, чтобы поисковая система Google была выбрана по умолчанию на их устройствах и в веб-браузерах.

По данным сервиса аналитики веб-трафика StatCounter, доля Chrome занимает около 61% рынка в США, на Safari приходится 18%, на Edge — 5%, а на Firefox — 3%.

https://www.rbc.ru/technology_and_media/19/11/2024/673c01989a7947e6bc211c0a

 ,

dataman
()

Закрытие открытия WinAmp

Репозиторий с кодом WinAmp удалён с GitHub
Компания Llama Group, которая в сентябре опубликовала исходный код мультимедийного проигрывателя Winamp, удалила репозиторий проекта с GitHub. Причины удаления не поясняются, но ранее в репозитории было выявлено множество утечек и нарушений копилефт лицензий. В частности, после публикации в репозитории WinAmp был обнаружен код проданного другой компании коммерческого сервера SHOUTcast, чужой проприетарный код и сертификат для формирования цифровых подписей, а также несколько изменённых файлов из других проектов, распространяемых под лицензией GPL (Winamp не может использовать в своём составе GPL-код без перевода собственного кода на лицензию, совместимую с GPL).

https://www.opennet.ru/opennews/art.shtml?num=62063

 , , ,

dataman
()

Линус Торвальдс подумывает удалить Bcachefs из ядра

Линус Торвальдс выступил с новой критикой методов сопровождения Bcachefs в основном ядре Linux. Суть претензий сводится к тому, что Кент Оверстрит (Kent Overstreet), автор Bcachefs, всегда присылает много изменений в последний момент перед выходом очередной предварительной версии («-RC») и на этот раз его изменения привели к нарушению сборки 6.12-RC1 на системах с порядком байт «big-endian» при включении Bcachefs, так как патчи были протестированы только в локальной ветке Кента и для их рецензирования не были привлечены другие участники.

В итоге pull-запрос все же был принят, однако разгорелась дискуссия насчёт тестирования, систем непрерывной интеграции и взаимодействия с сообществом, в которой несколько людей отметили, что Кент явно испытывает проблемы в взаимодействии с остальными разработчиками и считает себя всегда правым, что создаёт проблемы для проекта в основном составе ядра. Линус предупредил Кента, что он подумывает просто удалить Bcachefs из основного ядра, так как Кент продолжает играть один в своей песочнице, не подключается к совместной работе и не желает принимать правила игры сообщества разработчиков ядра.

https://www.opennet.ru/opennews/art.shtml?num=62005


https://bcachefs.org
https://evilpiepirate.org/git/bcachefs.git
https://evilpiepirate.org/git/bcachefs-tools.git

 , , ,

dataman
()

Спойлеры в сообщениях

Хотя бы в ОП. Особенно будет полезно в объёмных статьях.
Например, Приложения и утилиты, которые стоит попробовать тяжело читать.

Пример возможного синтаксиса:

>>> sed → sd
свёрнутый, по умолчанию, текст
<<<

 , ,

dataman
()

Qlibs++ — header-only библиотеки для C++20

Kris Jusiak создал проект Qlibs++ с header-only библиотеками для С++20, без сторонних зависимостей. Часть из них – облегчённые версии библиотек из boost-ext.

На данный момент есть:

Приятного чтения! :)

 , ,

dataman
()

Объединение ради свободного интернета: проекты Tor и Tails объединяют усилия

Сегодня Tor Project, глобальная некоммерческая организация, разрабатывающая инструменты для обеспечения конфиденциальности и анонимности в Интернете, и Tails, портативная операционная система, использующая Tor для защиты пользователей от цифрового наблюдения, объединили свои усилия и деятельность. Включение Tails в структуру Tor Project позволяет упростить сотрудничество, повысить устойчивость, снизить накладные расходы, расширить программы обучения и просвещения, чтобы противостоять большему числу цифровых угроз. Одним словом, объединение усилий укрепит способность обеих организаций защищать людей по всему миру от слежки и цензуры.

https://tails.net/news/tails_tor/index.en.html

 ,

dataman
()

Лёгкие иррациональные радости использования Swift вместо C++

В Swift 6, помимо всего прочего, была добавлена официальная поддержка Debian, Fedora и Ubuntu. Стало интересно. :)
Что ж, пробуем, следуя инструкциям:

$ mkdir hello
$ cd hello
$ swift package init --type executable
$ cat Sources/main.swift
// The Swift Programming Language
// https://docs.swift.org/swift-book

print("Hello, world!")
$ swift build --swift-sdk x86_64-swift-linux-musl -c release
$ stat .build/release/hello

Size: 42517368

$ ldd .build/release/hello

not a dynamic executable

$ strip .build/release/hello
$ stat .build/release/hello

Size: 6667136

$ .build/release/hello

Hello, world!

Продолжаю наблюдения. :)


Пакеты:
https://swiftpackageindex.com
https://swiftinit.org


Документация:
https://www.swift.org/documentation
https://swiftdoc.org
https://www.swift.org/swift-evolution – эволюция языка

 , ,

dataman
()

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

 , , ,

dataman
()

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

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

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
()

dracut-ng

Тут увидел: 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?

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

 , , ,

dataman
()

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

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

 , , ,

dataman
()

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

μ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
()

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

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

 , , , ,

dataman
()

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

Недавно обнаружил, что перестали работать жесты мышью.
Оказалось, что 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
()

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