LINUX.ORG.RU

Избранные сообщения xperious

Вести с полей стандартизации C++: C++20 design is complete (Kona, 2019-02)

Форум — Development

На Reddit-е появился большой пост с описанием того, что вошло в C++20 в результате очередного заседания комитета. На этой встрече в С++20 включили:

Modules!

Coroutines!

static, thread_local, and lambda capture for structured bindings.

std::polymorphic_allocator<>.

std::midpoint and std::lerp.

std::execution::unseq execution policy.

std::ssize() free function that returns a signed size.

std::span usability enhancements.

Precalculated hash values in lookup.

На следующей встрече в июне 2019-го будут рассматриваться к включению в C++20 следующие предложения (принципиально они уже одобрены, но до сих пор не были включены из-за незавершености формальных спецификаций):

Expansion statements.

The C++20 synchronization library.

std::format.

constexpr std::vector.

Allow constexpr allocation, but disallow allocations that are not deleted at compile time.

constexpr std::type_info::operator==.

New conceptification of iterators.

Monadic operations for std::optional.

std::source_location.

std::flatmap.

std::flatset.

std::ostream_joiner.

Stack trace library.

std::byteswap.

constinit.

Deprecating some uses of volatile.

Implicit creation of objects for low-level object manipulation.

using enum.

Ну и до кучи указывается, что еще было добавлено в C++20 ранее:

Concepts.

Contracts.

Ranges.

operator<=>.

A lot more constexpr features: consteval functions, std::is_constant_evaluated, constexpr union, constexpr try and catch, constexpr dynamic_cast and typeid.

Feature test macros.

std::span.

Synchronized output.

std::atomic_ref.

За подробностями лучше сходить на Reddit, там много поясняющего текста. Так же можно почитать отчет Херба Саттера.

 

eao197
()

Флаги для достижения макс. скорости кодирования видео

Форум — Multimedia

Подскажите плиз как добиться максимальной производительности для ffmpeg ( версия 4.1-5) :

  • Нужно ли отключить на этом серваке Hyper threading ?
  • Какие еще флаги компиляции добавить ( lto и тд) ?
processor	: 39
vendor_id	: GenuineIntel
cpu family	: 6
model		: 79
model name	: Intel(R) Xeon(R) CPU E5-2640 v4 @ 2.40GHz

Профиль кодирования видео:

-vf scale=-2:360 -profile:v high -level 4.0 -pix_fmt yuv420p -threads:v 4 -preset veryfast -movflags +faststart -c:a aac -y -f mp4

Сборка его :

built with gcc 9 (Debian 9.2.1-19)
configuration: --enable-gpl --enable-version3 --disable-static --enable-shared --enable-avisynth --enable-chromaprint --enable-frei0r --enable-gmp --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-librtmp --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtesseract --enable-libtheora --enable-libtwolame --enable-libv4l2 --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libxml2 --enable-libzmq --enable-libzvbi --enable-lv2 --enable-libmysofa --enable-openal --enable-opencl --enable-opengl --enable-libdrm --enable-nonfree --enable-libfdk-aac --enable-libbluray

 ,

pinachet
()

Почтовая рассылка — это барьер для входа в разработку ядра Linux

Форум — Talks

Сообщает один из директоров Linux Foundation, сотрудник Microsoft — Sarah Novotny. Она работает в подразделении Azure, куда пришла из Google и nginx.

Ъ: https://www.theregister.com/2020/08/25/linux_kernel_email

Разработка ядра Linux, которая сейчас сосредоточена в текстовой почтовой рассылке, нуждается в альтернативном инструменте коллаборации над кодом для привлечения новых участников и поддержки Linux в актуальном состоянии в будущем.

Этот инструмент так же может быть текстовым, для работы над патчами с помощью электронной почты, но с более привычным интерфейсом для разработчиков, вошедшим в профессию за последние 5-10 лет.

Это довольно нетривиальная задача для новичков, которые хотят сделать свой вклад в проект. К примеру, мой партнёр отправил патч в почтовую рассылку OpenBSD, и для этого ему пришлось устанавливать целый отдельный клиент — для одного исправления, — который позволяет отправлять текстовые письма вместо HTML.

Интервьюер предположил, что в этом виновата Microsoft и её почтовый клиент. Почему бы им не исправить Outlook?

Исправления должны быть в пользу стандартов. Мы работаем с бизнесом и предприятиями, поэтому для них мы ориентированы на HTML-стандарт. Всё зависит от того, ради какой аудитории вы работаете.

Но как оказалось, виноватым был не Outlook.

На самом деле проблемой был GMail. Так же ведёт себя и Apple Mail. Современные клиенты намеренно перешли на HTML-письма.


Похожую по описанию реализацию уже разрабатывает Drew DeVault в рамках проекта Sourcehut. Для популяризации идеи он запустил сайт https://git-send-email.io.

 , , , ,

commagray
()

Серый ip, симметричный NAT, gogoc ipv6.

Форум — Admin

Установил на две машины gogoc, адреса есть, пингуются из одной сети. Но вот беда, кроме как на ssh, больше никуда не пускает, хоть и он на нестандартном порту.
transmission remote gui видит, но пишет «Connection refused», то есть блокирует сам сервер.

cat /etc/iptables/rules.v4
# Generated by iptables-save v1.4.14 on Wed Mar 25 14:19:20 2015
*nat
:PREROUTING ACCEPT [2034:236103]
:INPUT ACCEPT [1592:214039]
:OUTPUT ACCEPT [185:13912]
:POSTROUTING ACCEPT [185:13912]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Wed Mar 25 14:19:20 2015
# Generated by iptables-save v1.4.14 on Wed Mar 25 14:19:20 2015
*filter
:INPUT ACCEPT [20899:1478753]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [26580:32418216]
-A INPUT -p ipv6 -j ACCEPT
-A OUTPUT -p ipv6 -j ACCEPT
COMMIT
# Completed on Wed Mar 25 14:19:20 2015


cat /etc/iptables/rules.v6
# Generated by ip5tables-save v1.4.14 on Wed Mar 25 14:19:20 2015
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
# Completed on Wed Mar 25 14:19:20 2015

 , , ,

vladcraft
()

Зачем компилировать ядро?

Форум — General

Часто пишут про компилирование ядра для поддержки разного оборудования. Зачем это делать если есть динамически загружаемые модули ядра и можно собрать только необходимые модули, а ядро оставить как есть? Когда вообще возникает необходимость компилировать ядро кроме сборки или обновления системы из исходников?

 , ,

X512
()

Объясните сишную магию v2

Форум — Development

В продолжение темы: Объясните сишную магию

Ковыряю сорцы Skia и наткнулся на такой забавный ужас (ссылка):

int fLastMoveToIndex = 5; // любое число
fLastMoveToIndex ^= ~fLastMoveToIndex >> (8 * sizeof(fLastMoveToIndex) - 1);

Экспериментально удалось выяснить, что данный код меняет знак и отнимает 1 только если число положительное. Как он это делает - я даже знать не хочу.

Вопрос: что мешало написать банальный if, или хотя бы оставить комментарий? Типичное сишное какерство?

PS: производительно данного куска кода на погоду не влияет.

 ,

RazrFalcon
()

Понимание широкой команды, VLIW

Форум — Development

Лорчик, у меня тут вопрос возник, чисто теоретический.

Есть VLIW, архитектура e2k. Если посмотреть ассемблерный код, то команда там будет в фигурных скобках. Это и есть одна широкая команда.

Пример:

{
  nop 2
  istofd,3    %g17, %g18
}
{
  nop 7
  sdivs,5     %g17, %g16, %g16
}

В документации сказано, что одна такая широкая команда выполняется процессором за 1 такт. Справедливости ради, нужно заметить, что здесь ни слова про ядра. Просто сказано, что за один такт.

Дальше отсебятина, точнее «отменятина». Как бы суть-то широкой команды именно в том, чтобы распределить мелкие команды внутри этой широкой между ядрами процессора. Т.е. смысл фразы «за один такт» - это просто распараллеливание по ядрам.

Поскольку e2k не содержит жуткого блока предсказаний, как на обычном х86_64 и не умеет распаралеливать команды сам. За него это делает компилятор. Вот для этого и нужна эта широкая команда - компилятор распаралелил, перетасовал команды и сказал как их надо выполнить.

А теперь вот вопрсик в связи с этим. Получается, что прогу для e2k придется пересобирать для разных e2k процессоров с разным числом ядер?

Допустим прога собрана для Эльбрус 8С, у которого 8 ядер. Значит в фигурных скобках будет много команд. Т.е. широкая команда будет ну очень широкой, широчайшей прям! А запустится ли этот получившийся бинарник, скажем на 4С, у которого только 4 ядра? А на 1С? В смысле без пересборки.

 ,

hibou
()

В чем разница между std::move|forward?

Форум — Development

 

Lzzz
()

SVG-подобный GUI на Rust: как правильно сделать?

Форум — Development

Есть у меня небольшое хобби - раз в полгода пытаться писать GUI на Rust. Вот в этом репозитории провожу эксперименты: https://github.com/exgui/exgui

Запустить примеры можно так:

cargo run -p examples --bin smile
cargo run -p examples --bin clock

Идея в том, чтобы сделать нечто похожее на SVG, но с возможностью автоматического размещения текста, или нечто похожее на HTML, но с поддержкой графических примитивов любой сложности.

Так вот, получается, что мне нужна поддержка неких layouts, которые должны единообразно уметь автоматически размещать как графические элементы (круг, прямоугольник, произвольная кривая и т.д.), так и глифы или целые слова текста.

Например, может быть задана следующая структура элементов:

rect()
    .width(100)
    .height(100)
    .child(text("Hello, circle "))
    .child(circle().radius(15))
    .child(text("! And welcome!"))
    .build()

Необходимо, чтобы layout, который имеется в Rect по-умолчанию, расположил корректным образом свои дочерние элементы внутри прямоугольника, построчно. При этом кругом он должен оперировать как одним целым, а текст воспринимать как набор элементов для размещения - отдельных слов.

Я так понимаю, для этого в рендере мне придется спуститься на уовень глифов, чтобы рассчитать нужные размеры. Отсюда вопрос: как это корректнее всего сделать, какими библиотеками пользоваться?

Вообще, посоветуйте из раст-экосистемы библиотеки, которые могут понадобиться для данной задачи. В качестве рендера пока использую сишный nanovg.

 , ,

freecoder
()

Docker vs LXD(LXC)

Форум — General

Хочу сделать ремарку, что я вообще в этом не специалист и разбирался со всем на ощупь.

Так уж случилось что пришлось столкнуться с контейнерами. Решил освоить для отделения мух от котлет разделения девелоперской машины и рабочего сервера для локальных проектов. Хотел настроить git и LSP на сервере, и выбор пал на текущие решения контейнеризации.

Когда-то использовал Docker для разворачивания отдельного приложения из образа и были некоторые проблемы с монтированием папок в него (может быть вообще не так нужно было делать), хотел сделать общую директорию для хоста и гостя, в итоге наткнулся на огромнейшее количество костылей для этого и остального.

Сейчас создал контейнер в LXD и мне это очень понравилось, всё стало буквально из коробки, для непривелигилированого контейнера просто добавил юзера в группу lxd.

Я понимаю что Docker более ориентирован на контейниризацию приложений, но всё же хотелось сравнить с контейниризацией ОС.

Поскольку Docker переехал на свои рельсы, я так понимаю, ради кроссплатформенности, то в чём плюсы и минусы Docker и LXD на данный момент. В интернете все нахваливают Docker, но я не пойму за что, ведь на мой дилетантский взгляд, LXD ничем не уступает.

UPD: Если туплю, то не сильно сердитесь. Пятница же!

 , , ,

Artamudo
()

C++ — сила, а вы не верили

Форум — Talks

Опытный разработчик игр проясняет смузихлебам за С++, линукс и emacs.

Для Ъ: аватар поставил хипсторов на место

P.S. на 02:00:00 самое интересное. Он рекомендует Croco.

Таймкоды в первом комментарии на ютубе.

 , , ,

BceM_IIpuBeT
()

Опубликованы видео со всех конференций ontico 2019 + TeamLeadConf 2020

Новости — Конференции и встречи
Группа Конференции и встречи

записи с предыдущих конференций можно найти на их канале в youtube

 , , , ,

router
()

Доказана эффективность Rust

Форум — Development

… но на самом деле не совсем. Доказана типобезопасность подмножества Rust. Соответствующая статья опубликована аж целых два года назад. А доказательство верифицировано, просто афигенский рокетсайнс.

Считаю, что об этом полезно будет узнать жителям ЛОРа, особенно некоторым анонимам.

P.S. Сам с удивлением узнал сей факт, читая наброс humbug на хабре. Очень качественный наброс, кстати. Рекомендую.

 , , , ,

future_anonymous
()

можно ли вызывать realloc() для памяти выделенной посредством new в Си++?

Форум — Development

Сабж для языка, независимо от компилятора и ОС.

 

normann
()

Жизнь без systemd

Форум — Talks

Как обстоят дела с работой SysVinit в дистрах, официально перешедших на systemd? Можно ли использовать в них SysVinit вместо systemd или поддержка SysVinit там только для галочки? Есть у кого-то опыт такого перехода? Сильно ли завязан udev на systemd?

 , ,

scanner
()

VCognitis — приложение для поиска единомышленников ВКонтакте

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

Тихо и незаметно вышла первая версия программы для поиска единомышленников по анализу подписок VK.

Ключевые особенности проекта:

  • Автоматический режим, требующий нажатия одной кнопки (специально для фанатов Gnome 3)
  • Два ручных режима, для тех, кто любит тонкую настройку
  • Возможность задать список нежеланных подписок
  • Мощная система фильтров
  • Функция скрытия просмотренных профилей
  • Учет интересов пользователя по группам, которых нет в списке
  • Наглядное представление жизненной позиции и взглядов
  • Встроенный браузер
  • Список избранного

Системные требования: Монитор от 1366 х 768, рекомендуется FullHD. SSD тоже лишней не будет.

Исходники под GPLv3 лежат тут. AppImage тестировался только на Ubuntu 18.04, но теоретически должен работать везде.

>>> Скриншоты и бинарники

 , , , ,

CrossFire
()

Возможный Qt- и KDE-капец

Форум — Talks

Странно, что ещё не принесли.

Qt Company обдумывает переход к публикации свободных релизов Qt через год после платных выпусков из-за коронавируса — OpenNET

В качестве мотива возможного усиления коммерциализации проекта упоминается необходимость увеличения краткосрочных доходов для того чтобы удержаться на плаву в результате кризиса, вызванного пандемией коронавируса SARS-CoV-2.

До этого LTS зарубили, сейчас и вовсе свободные выпуски посчитали ненужными. Всё пропало?

 , , , ,

commagray
()

Для тех, кто думает перейти на NixOS

Форум — General

Собственно по мотивам ТЫЦ но про NixOS и на основе моего опыта эксплуатации сабжа в течение как минимум одного года восьми месяцев и двух дней или шестьсот двенадцати дней кому как угодно. Ибо именно столько у меня стоит NixOS основной системой тыц.

Моей предыдущей системой была гента поэтому и свои сравнения я буду проводить непосредственно с ней. Все написанные мною слова выражают мои собственные мысли и не были призваны разжигать какие бы то ни было конфликты и/или жжения в любых частях тела прилегающих к седалищному нерву.

Так вот детки. Гента местами хороша… хотел бы я так написать но увы нет. Есть кардинальные проблемы с которыми она не справиться. Основная это toolchain. У вас попросту не может быть консистентной системы с самым распоследним toolchain-ом и довольно старыми выдержанными проверкой временем программами (Либо наоборот). Это не значит что такую проблему нельзя решить костылями chroot-а или некими иными методами… Это значит лишь то что такая проблема у дистрибутива как минимум есть в наличие.

Ты сейчас задвинул некую чушь. {У меня нет}/{Мне не нужны} старые программы.“ - Да дело ведь не только в этом. Те кто прожил с гентой достаточно припомнят не один случай неудачного обновления glibc в результате которого всему приходил северный полярный лис. „Бэкап спасёт“ да не без этого. Однако бэкап не исправляет саму изначальную проблему.

Так вот последние два абзаца написаны собственно только ради того что… Да детки в NixOS таких проблем нет. И быть не может by design. И я скромно умалчиваю про другие архитектуры, контейнера, FHS environment и прочие побочные плюшки.

Дальше меня ждала «ломка» поскольку во всех дистрибутивах корень системы это важная штука которую можно пощупать своими загребущими ручёнками… Да а в то время как в NixOS из всего корня так сказать материальны только /etc/nixos, /root и /nix а остальное симлинки… Тудумс! Занавес.

Немного про установку. Генту можно собрать за время от пары часов до нескольких дней. Развернуть из бинпакетов можно минут за сорок ну плюс минус около того. NixOS бинарный дистрибутив поэтому кампелять тут ничего не нужно.

Канпельять нинада. nixos ацтой. Моя отсельда мухожук.“ Однако стоит лишь переопределить дефолт и если это столь необходимо пакетный манагер сам пересоберёт то что нужно пересобрать. Вкуснятина!

Дальше сам процесс разработки. Про генту я скромно умолчу. А вот NixOS разрабатывают на гитхабе открыто, свободно и без бюрократии и 1770 запросов на слияние и 3753 проблемы тому доказательство.

Я скажу так в генте для меня всегда была головной болью настроить gnome/kde/plasma. Полные метапакеты натащат столько что ппц а минимальные как правило просто обрезаны по самое немогу и для комфортного существования приходилось искать ту самую золотую середину самостоятельно. В NixOS просто дефолтный выбор мне что называется зашел на ура. Одной проблемой меньше.

Итак вот мы прожили в системе определённое время накопились критические изменения и настало то самое время обновлять. У NixOS считай весь корень тупо набор симлинков поэтому, как не трудно додумать, он чудесно версионируется. Да у вас всегда есть не просто единственное текущее состояние системы но и всё неудалённые прошлые её состояния.

В NixOS пакетный менеджер заведует не просто версией хромиума но и всеми его настройками и да даже его расширениями.

Любые нативные игрушки steam-run спасает и делает не просто хорошо а прям прекрасно.

Да ладно… Вот прям взял и описал идеал. Не верю.“ Есть и баги. Дальше о них.

Ну не то чтобы это было проблемой но как с самой первой инсталлиции так и до сих пор - Only english language available in plasma regional settings #33987, Missing a lot of translation in plasma5-based system. #37741 Да все преведенные решения перепробовал но баг как был так и есть.

Из того что заметил в последнее время HDD not mounted, system don't boot #32588 это про btrfs на luks. Но оно тоже странное то есть то нет… В общем закономерности я не заметил но у себя наблюдал.

Ну и покамест на этом всё. Надеюсь мои многобукав помогут кому нибудь сделать свой выбор.

 

init_6
()

Шок от С. Как склеивать строки?

Форум — Development

Осваиваю си. Всё шло хорошо пока внезапно не понадобилось склеить строки (константные и переменные). Покурил stackoverflow. Предлагают 2 варианта:

Первый - создать char buf[молись_чтобы_хватило] и делать str(n)cat/sprintf в этот buf.

Второй - использовать asprintf, который расширение, нестандарт и вообще.

Вопрос: как вы склеиваете строки? Может есть какая-нибудь общепринятая либа?

Простите за нубский вопрос

 

makoven
()

Kernel.

Форум — General

Привет. В контакте зашел разговор с человеком, ему надо собрать ядро без systemd и initramfs. Зачем ему это, я не знаю. Ему я помочь в этом немогу, так как не имею опыта в таких сборках ядер. Сам он сюда заходить стесняется, наверное просто не хочет слышать в свой адрес оскорбления вместо нужных ответов. Ну это я так думаю. Видимо он уже имел опыт пребывания тут. Но суть в другом, если кто знает, как это сделать, то напишите пожалуйста, какие опции в ядре нужно выключить или включить. И вожможно ли это вобще.

Без systemd s initd

1//
2//
3//
4//


Без initramfs

1 включит файлвую систему в ядро не модульно.
2//
3//
Что дописать в остальных пунктах?

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

 ,

LGH
()