2022 ACCU доклады с конференции
доступны видео с конференции ACCU 2022: https://www.youtube.com/c/ACCUConf/videos
доступны видео с конференции ACCU 2022: https://www.youtube.com/c/ACCUConf/videos
https://www.opennet.ru/opennews/art.shtml?num=57169
Разработчики языка Rust предупредили о выявлении в репозитории crates.io пакета rustdecimal, содержащего вредоносный код. Пакет был основан на легитимном пакете rust_decimal и пользовался для распространения сходством в имени (тайпсквоттинг) с расчётом на то, что пользователь не обратит внимание на отсутствие символа подчёркивания, осуществляя поиск или выбирая модуль из списка.
Примечательно, что указанная стратегия оказалась успешной и по числу загрузок фиктивный пакет лишь немного отстал от оригинала (~111 тысяч загрузок rustdecimal 1.23.1 и 113 тысяч оригинального rust_decimal 1.23.1). При этом большинство загрузок пришлось на безобидный клон, не содержащий вредоносного кода. Вредоносные изменения были добавлены 25 марта в версии rustdecimal 1.23.5, которая до выявления проблемы и блокирования пакета была загружена около 500 раз (предполагается что большая часть загрузок вредоносной версии совершена ботами) и не была использована в зависимостях у других пакетов, присутствующих в репозитории (не исключено, что вредоносный пакет был в зависимостях у конечных приложений).
На Opennet новость появилась:
https://www.opennet.ru/opennews/art.shtml?num=57145
На что стоит обратить внимание при портировании на gcc 12: https://gcc.gnu.org/gcc-12/porting_to.html
Header dependency changes
Some C++ Standard Library headers have been changed to no longer include other headers that were being used internally by the library. As such, C++ programs that used standard library components without including the right headers will no longer compile.
The following headers are used less widely in libstdc++ and may need to be included explicitly when compiled with GCC 12:
<memory> (for std::shared_ptr, std::unique_ptr etc.)
<iterator> (for std::begin, std::end, std::size, std::istream_iterator, std::istreambuf_iterator)
<algorithm> (for std::for_each, std::copy etc.)
<utility> (for std::pair)
<array> (for std::array)
<atomic> (for std::atomic)
Интересно многие ли проекты не включали все необходимые заголовочные файлы?
Как-то я пропустил эту статью от 28 февраля: https://thephd.dev/ever-closer-c23-improvements
Кратко о том что приняли нового в С23, и какие предложения отвергли. (в статье расписано более подробно)
Приняли:
Make false and true first-class language featurestypeofchar8_t and Unicode Improvements!= {}unreachable()Make assert() macro user friendly for C and C++K&R Function Declaration AND Definitions are 🪦allow 16-bit ptrdiff_t againSeparating Variably-Modified Types from Variable Length ArraysLiteral Suffixes for _BitInt(N) types@, $, and backtick are added to the source character set[[_Noreturn]]Make call_once mandatoryК сожалению часть предложений была отклонена от включения в С23:
#once and #once YOUR_GUARD_ID_HERE, to reduce include guard spambreak break;, break continue;, break break continue;constexprТакже хочу скопировать из статьи пояснения по поводу defer и constexpr
defer, Lambdas, and similar were voted down, but still have consensus to proceed for a timeline beyond/after C23. I’ve personally volunteered to direct and maybe even steer the effort for Lambdas. defer might come along for the ride since it’s basically in the same vein when it comes to what variables are available for defer. Spoiler: we’re going to be pursuing barebones, simple defer that is block-scoped (to the nearest braces, or conditional/etc. if the braces are omitted). This is mostly to save us from making the same design mistake Go did, where they have a defer that may dynamically allocate (?! Jesus Christ!) or other complete nonsense.
other complete nonsense - ссылка на твит с таким текстом:
And this blocks
for i := 0; i < 100000; i++ {
mutex.Lock()
defer mutex.Unlock()
*counter += 1
}
Is there anything in Go that is not broken?
constexpr - an extremely watered down version compared to C++ that is super simple and deliberately intended not to be much more than updated ways of handling constants in C - did not die. There is strong support to work on it, albeit it might not make C23. Which is perfectly okay, as long as it stays alive!
Обзор Stephan T. Lavavej: https://youtu.be/DAl37n2XOwk
Если нет получаса для просмотра видео, то вот примеры части новых возможностей С++ которые рассмотрены в видео:
C++20 P0734R0 requires Expressions
https://godbolt.org/z/jY1bETG7E
C++23 P0847R7 Deducing this
https://godbolt.org/z/Tx8j4eeEr
C++23 P1679R3 contains() For string[_view]
https://godbolt.org/z/eGKf6ns5r
C++23 P2166R1 Prohibiting string[_view] Construction From nullptr
https://godbolt.org/z/KvocPWf33
C++23 P1072R10 basic_string::resize_and_overwrite
https://godbolt.org/z/eWs57W36E
C++23 P0288R9 move_only_function
https://godbolt.org/z/qorYY9va9
C++23 P0798R8 Monadic Operations For optional
https://godbolt.org/z/dsnzxro9a
Мне больше всего понравились новая возможность C++23 P0847R7 Deducing this :
struct Cat {
string m_name;
template <typename Self>
decltype(auto) name(this Self&& self) {
return forward<Self>(self).m_name;
}
};
😺
Также 26 апреля 2022 с 18:00 до 21:00 по Москве пройдёт бесплатная однодневная виртуальная конференция для сообщества C++: https://aka.ms/pure-virtual-cpp
cmake 3.23 вышел.
Вот увидел такое новшество, решил поделиться:
The MCST LCC compiler is now supported with compiler id "LCC".
https://www.kitware.com/cmake-3-23-0-is-available-for-download/
Ждём портов игр Blizzard на Linux :)
Нашёл сайт https://sberfight.geecko.com/game
Кто-нибудь из лоровцев уже решал там задачи? Или лоровцы опасаются что сбер им будет спам рассылать?
Вот мой результат: https://imgur.com/a/nIWRlcm
Но у меня нет аккаунта на leetcode и я не программирую на время, так что человек опытный в соревновательном программировании легко превзойдёт мой результат.
Вот полные правила для любителей почитать: https://geecko.notion.site/SberFight-983cc8ff50c946ad89125f74f13f8e26
https://www.opennet.ru/opennews/art.shtml?num=56505
До 20 января все архивы прошлых обсуждений будут перенесены на новую площадку.
Очередная хорошая новость. Как и предыдущая когда закрыли багзиллу и перешли на github issues.
Ещё одна победа Web 2.0. Луддитов становится всё меньше…
https://www.opennet.ru/opennews/art.shtml?num=56479
Что касается мотивов внесения в пакеты деструктивных изменений, то вероятно Марак пытается дать урок корпорациям, пользующихся трудами сообщества разработчиков свободного ПО, но ничего не возвращающих взамен, или привлечь внимание к переосмыслению обстоятельств смерти Аарона Шварца. Аарон покончил жизнь самоубийством после возбуждённого против него уголовного дела, связанного с копированием научных статей из платной базы данных JSTOR, отстаивая идею предоставления свободного доступа к научным публикациям. Аарону были предъявлены обвинения в компьютерном мошенничестве и незаконном получении информации с защищённого компьютера, максимальный срок наказания по которым составлял 50 лет лишения свободы и штраф в миллион долларов (в случае заключения судебного соглашения и признания обвинений Аарону предстояло отсидеть в тюрьме 6 месяцев).
Эх, всё равно ничего не изменится. По прежнему все будут пользоваться сторонними библиотеками без их аудита.
Была уже тема по Copilot когда анонсировали, сейчас в youtube увидел как это в реальности работает, поэтому решил обсудить:
2 минуты 26 секунд: https://www.youtube.com/watch?v=V0tqbEFHP6U
Ну как вам искусственный интеллект?
Вроде что-то пытался дописывать, но если бы чел сам не знал как создавать окно, то думаю его идея закончилась бы провалом…
Несколько комментариев:
You tell the computer what to do and it does it? That's a great idea. Maybe we can even make special languages designed to talk to the computer so we can give more detailed descriptions. Oh wait...
Copilot is the purest example of over engineering
Тестирование на Phoronix:
https://www.phoronix.com/scan.php?page=article&item=kde-gnome-wayland21&num=1
Across all the games tested both native and titles via Steam Play (Proton + DXVK), the GNOME Wayland session most often was showing the best performance and across the wide range of tests carried out came to about 4% better performance than the GNOME X.Org session. The KDE Plasma Wayland session tended to perform slightly in front of its X.Org session as well for these Linux gaming tests but there were a few games still running into problems with the KDE Wayland session.
P.S. Gnome Wayland убедительно выиграл.
Вот вам и ответ, зачем нужен Gnome и Wayland. Может и в Valve эту статью увидят или сами затестят, и переведут Steam Deck на Gnome.
Если кто-то хотел посмотреть, то вот есть полный список выступлений.
https://www.youtube.com/playlist?list=PLHTh1InhhwT6vjwMy3RG5Tnahw0G9qIx6
https://wordsandbuttons.online/so_you_think_you_know_c.html
You scored 5 points, congratulations!
я рад, что я помнил стандарт насчёт этих 5 вопросов :)
Откуда это пошло?
Какие ещё запрещенные числа есть?
666?
https://github.com/microsoft/STL/pull/2301#discussion_r752808084
Для Ъ
const optional<long> nonempty = 420;
While I see that these test numbers innocently started with 42, various code scanning tools and corporate policies may complain about this value. We should use a different value here, and probably change the rest of the progression.
Apologies for bringing up this incredibly tedious issue - I wish numbers were just numbers.
Просто интересно.
P.S. в ядре Linux есть 309 упоминаний 420 (может больше, github поиск врёт, grep надёжнее, но у меня нет локально ядра Linux, а клонировать лень)
по мотивам прошлой темы: Вести с полей стандартизации C++: C++20 design is complete (Kona, 2019-02)
Появился пост на reddit в котором можно увидеть какие ещё предложения войдут в С++23, возможно войдут в С++23, и не войдут: https://old.reddit.com/r/cpp/comments/qug17i/c23_near_the_finish_line/
Также можно увидеть что уже вошло в С++23 https://en.cppreference.com/w/cpp/compiler_support/23
Жалко, что
P1673 (P1385) A free function linear algebra interface based on the BLAS [9] NO
P1385 (P1673) A proposal to add linear algebra support to the C++ standard library [9] NO
Но тем не менее получилось не мало.
Кстати, если у вас есть негативный опыт с ranges_v3 и Boost.Range, то std::ranges гораздо более оптимизирован к скорости компиляции:
https://www.reddit.com/r/cpp/comments/qug17i/c23_near_the_finish_line/hkw97si/
Даже почти мёртвый X.Org перешёл на meson.
Поздравляю meson, всё больше проектов собирают им.
https://www.phoronix.com/scan.php?page=news_item&px=X.Org-Bye-Bye-Autotools
Я думаю autotools удалят из реп раньше чем X.Org.
А вы как думаете?
Если есть время, то можно поизучать что-нибудь:
26 секундный ролик выпустили по этому поводу: https://youtu.be/V5jP1ym7nhM
Если кому-то нужен список изменений: https://help.gnome.org/misc/release-notes/41.0/
| ← предыдущие | следующие → |