commit -m "better"
3.24K subscribers
1.03K photos
149 videos
3 files
2.39K links
just random thoughts
Download Telegram
commit -m "better"
Наконец-то накопил материала на этот текст :) #law #provider #yeswecan https://www.ixbt.com/news/2021/11/09/apple-android-iphone-app-store.html Очень жду, когда щелкнут по носу App Store и Google Play. Особенно когда разрешат альтернативные способы оплаты.…
Про инфраструктуру, и почему я считаю поиск, facebook, telegram, tinder инфраструктурой. #law #provider #yeswecan

Что такое инфраструктура? Это то, что ты, по умолчанию, можешь считать, что оно у тебя есть.

Человечество проходило разные этапы в своем развитии.

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

Когда-то не было водопровода, [skip]...

Когда-то не было электричества, [skip]...

Когда-то не было интернета, [skip]...

В чем поинт? Поинт в том, что под инфраструктурой в разное время понимают разные вещи, lol, ваш Кэп.

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

Facebook, telegram - это общение, это инфраструктура для общения. Не очень понятно, что непонятно, что отключение от facebook - это отключение почти от всего твоего круга общения. Для следующего(которые родились при facebook, и не помнят времени до него) поколения отключение от FB, это как для нас отключение от электрической сети, просто дикость какая-то. Для них FB уже такой же привычный и само собой разумеющийся(== инфраструктурный) элемент, как и электричество.

Да, без FB можно жить. А предыдущее поколение считает, что и без интернета можно, а пред-пред - что и без электричества, в принципе, неплохо. Ну вы понели.

https://cs.pikabu.ru/post_img/big/2013/07/22/10/1374511355_949899795.png

Tinder - инфраструктура для знакомств. На улице уже не знакомятся.

Но, почему-то, от электроэнергии не отключают по письму от какого-то ху%ла, которое утверждает, что я на этой электроэнергии варю мет. Никто не грозится подать на генерирующую компанию за то, что я варю мет, используя ее ресурсы. Почему-то нужна бумажка или от суда, или от какого-то силового ведомства. Писульки от ху%ла недостаточно. И ответ "почему" - очень простой. Потому что все сейчас живущие родились при электричестве, и отключение электричества - ну это же дичь какая-то. Инфраструктура - не в проводах, а в головах :)

А вот от FB/TG/T/G/A/Etc отключают.

Думаю, это ненадолго. Это ведь тоже инфраструктура.
🔥2
Python Weekly

https://calpaterson.com/bank-python.html - например, про экосистему Питона в каком-то крупном банке(если не врут). Тепло, лампово, монорепозиторно.

https://github.com/ranger/ranger - трехпанельный навигатор на Python. К своему стыду, узнал о нем всего пару недель назад. В 5 раз больше звезд на гитхабе, чем у MC. Это переворачивает мое представление о вселенной.

https://www.trypyjion.com/ - за здравие:

"Profile Guided JIT Compiler
Native 64-bit float and integer support
Small, fast compiler
Windows, macOS and Linux
Intel and ARM CPU support
Builtin IL and ASM disassembler
Support for native debugging and profiling tools"

И сразу за упокой:

"Pyjion requires:
CPython 3.10
.NET 6"

https://tenthousandmeters.com/blog/python-behind-the-scenes-13-the-gil-and-its-effects-on-python-multithreading/

Годная статья про GIL в Python. Мне лично было интересно, как себя ведет питонячка со смешанной нагрузкой(io + CPU), никогда об этом раньше не задумывался. #gil

Ну и мое микроисследование про сборку python 3.10.

3.10 у меня собирается вот с такой ошибкой ./configure:

checking for t_open in -lnsl... no
checking for socket in -lsocket... no
checking for --with-libs... no
./configure: 10530: PKG_PROG_PKG_CONFIG: not found

cat ./configure выглядит вот так:

  10525   { $as_echo "$as_me:
${as_lineno-$LINENO}: result: no" >&5
10526 $as_echo "no" >&6; }
10527 fi
10528
10529
10530 PKG_PROG_PKG_CONFIG
10531
10532 # Check for use of the system expat library

А вот описание ошибки на SO: https://stackoverflow.com/questions/17089858/pkg-config-pkg-prog-pkg-config-command-not-found

"When that script calls autogen.sh, aclocal is failing to find pkg.m4, an M4 macro package that comes with pkg-config and provides the PKG_PROG_PKG_CONFIG macro. Where is pkg-config installed, and what directories is aclocal searching?"

#autohell

Что это значит? Это значит, что релиз инженер этой версии питона халатно подошел к своему делу, и не проверил результат. Это приводит к тому, что pkg-config не всегда используется для поиска пакетов в системе, иногда работают fallback на более старые механизмы. В целом, не очень серьезная проблема, просто иногда не работает autodetect чего-то в системе.
https://bugs.chromium.org/p/chromium/issues/detail?id=1103236
https://github.com/Eloston/ungoogled-chromium

Начал собирать Chrome, а, конкретно, Ungoogled. Я бы с удовольствием использовал его "в обычной жизни", но там какая-то очень странная политика по отношению к бинарным сборкам - все, что выложено на github, от third party, которых я не знаю, и бинари от них в систему ставить не хочу.

"Please believe me. The Arm version of Mac Chrome is not equivalent, proven to me every time I try to do development on my test Arm machine."

Вот, пишут, что ПОД M1 ДЛЯ M1 пока собирается не тот же самый бинарь. Неудивительно, учитывая, какой говна самовар набор бинарных блобов лежит в depot_tools.

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

Дофига свежих уязвимостей у AMD, и немношк у Intel

———
https://github.blog/2021-11-10-make-your-monorepo-feel-small-with-gits-sparse-index/

"The Git test suite is substantial and has excellent coverage of most index operations. However, almost all of those tests do not use sparse-checkout, so we couldn’t immediately gain value in checking the sparse index by enabling it globally."

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

Как многим известно, в Y есть свое git-подобное(с точки зрения cli) решение, называется arc. Работает поверх надежного распределенного key-value storage, на клиенте использует fuse. Позволяет начать работать с нашей монорепой за секунды, очень крутая вещь. Насколько я понимаю, похожее есть в G, насчет остальных MANGA не в курсе.

———
https://security.googleblog.com/2021/11/clusterfuzzlite-continuous-fuzzing-for.html

И еще про git. Google сделали общедоступный continuous fuzzing actions для github. Это очень хорошая новость для индустрии, fuzzing находит огромное число ошибок в коде. Хотя мои читатели из Y/MANGA и так это прекрасно знают :D

https://www.openwall.com/lists/oss-security/2018/06/17/1 - например, история про фаззинг OSS key-value db.
https://habr.com/ru/news/t/588554/

"В настоящее время первый суперкомпьютер «Сбера» Christofari находится на 61 месте в рейтинге топ-500 самых высокопроизводительных систем мир. Также эта высокопроизводительная система является самой мощной среди суперкомпьютеров СНГ."

Очень позитивная новость, надо поздравить коллег!
Я тут, давеча, рассказывал, какие препятствия ждут на пути авторов https://chimera-linux.org/. Вот, решил показать это на примере sbase(конкретно - если заменить coreutils на sbase во время сборки).

#chimera

unrar:

c++ -o unrar -pthread rar.o strlist.o strfn.o pathfn.o smallfn.o global.o file.o filefn.o filcreat.o archive.o arcread.o unicode.o system.o isnt.o crypt.o crc.o rawread.o encname.o resource.o match.o timefn.o rdwrfn.o consio.o options.o errhnd.o rarvm.o secpassword.o rijndael.o getbits.o sha1.o sha256.o blake2s.o hash.o extinfo.o extract.o volume.o list.o find.o unpack.o headers.o threadpool.o rs16.o cmddata.o ui.o filestr.o recvol.o rs.o scantree.o qopen.o
strip unrar
install stage
usage: install [-g group] [-o owner] [-m mode] (-d dir ... | [-D] (-t dest source ... | source ... dest))

gmp:

checking format of `double' floating point... unknown
configure: WARNING: Could not determine float format.
configure: WARNING: Conversions to and from "double" may be slow.

gzip:

Making install in doc
make[2]: Entering directory '/Users/pg/mix/build/08973c97f7430f8be5c57d10b538d2aa/bld/gzip-1.10/doc'
MAKEINFO gzip.info
/Users/pg/mix/build/08973c97f7430f8be5c57d10b538d2aa/bld/gzip-1.10/build-aux/missing: 81: makeinfo: not found
WARNING: 'makeinfo' is missing on your system.
You should only need it if you modified a '.texi' file, or
any other file indirectly affecting the aspect of the manual.
You might want to install the Texinfo package:
<https://www.gnu.org/software/texinfo/>
The spurious makeinfo call might also be the consequence of
using a buggy 'make' (AIX, DU, IRIX), in which case you might
want to install GNU make:
<https://www.gnu.org/software/make/>
make[2]: *** [Makefile:1440: gzip.info] Error 127

gettext:

ld64.lld.darwinnew: error: duplicate symbol: _unblock_fatal_signals
>>> defined in /Users/pg/mix/build/55757518ef024e38a7b67124168d66d5/bld/gettext-0.21/gettext-tools/gnulib-lib/.libs/libgettextlib.a(fatal-signal.o)
>>> defined in /Users/pg/mix/store/3e41f694c6bdee4f5ab4effd5406b711-lib-textstyle/lib/libtextstyle.a(fatal-signal.o)
clang-13: error: linker command failed with exit code 1 (use -v to see invocation)
make[3]: *** [Makefile:3192: msgunfmt] Error 1

Дальше мне надоело патчить сборку.
https://www.opennet.ru/opennews/art.shtml?num=56152

Вышла новая версия #Nuitka. Мне она пока больше кажется хайпом - решает ту же задачу, что и cython, делает это пока хуже, и местами очень странно(чего стоит тот факт, что ее выхлоп - не просто .c файл, а какая-та хрень, требующая SCons для сборки).

———
LLVM Weekly:

https://reviews.llvm.org/D112816 - "rename option -name-whitelist to -name-allowlist Needs ReviewPublic", да скока можно-то.

https://simonbyrne.github.io/notes/fastmath/ - "friends don't let friends use fast-math"

———
https://www.opennet.ru/opennews/art.shtml?num=56167 #npm

"Компания GitHub раскрыла информацию о двух инцидентах в инфраструктуре репозитория пакетов NPM. 2 ноября сторонние исследователи безопасности (Kajetan Grzybowski и Maciej Piechota) в рамках программы Bug Bounty сообщили о наличии в репозитории NPM уязвимости, позволяющей опубликовать новую версию любого пакета, используя для этого свою учётную запись, не авторизированную для выполнения подобных обновлений."

Я вот все собираюсь написать, почему PyPI(и NPM заодно) - это зло с точки зрения безопасности и воспроизводимости сборки. Если совсем коротко - потому что это лишний шаг на этапе между source control tool и конечным tgz с артефактом, на котором злоумышленник может непрозрачно поменять код. По той же причине я не советую использовать ссылки на релизы в github(их готовят люди), а использовать ссылки на теги(их готовит сам github):

https://github.com/PhilipHazel/pcre2/releases/download/pcre2-10.39/pcre2-10.39.tar.gz vs https://github.com/PhilipHazel/pcre2/archive/refs/tags/pcre2-10.39.tar.gz (сравните эти 2 файла, они разные)
👍1
Я тут задумался, что же я получу, добавив поддержку Rust в Mix. Читал awesome rust, понял, что получу три полезные command line тулзы, и Alacritty. Негусто. Возможно, я поторопился с выводами, что Rust скоро заменит С++ :) Пока на Rust пилят, в основном, http server, и все для этого необходимое(async io, ssl, etc).

В связи с этим мне вспомнился текст(не могу его найти, если есть в загашнике - киньте ссылкой), в котором рассказывалось про то, почему разработчики любят новые языки программирования(скажем, Rust и Go), и не любят старые. Long story short:

1) В новых языках не написан http server*. Можно легко прославиться, написав его, и получив 10000 звезд на github.
2) На старых языках весь нужный код уже написан, простых задач не осталось, остались только сложные.

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

* - http server можно заменить на что угодно, типа, "json parser", "grpc client/server", whatever.

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

"Напомним, что атаки класса RowHammer позволяют исказить содержимое отдельных битов памяти путём цикличного чтения данных из соседних ячеек памяти. Так как память DRAM представляет собой двухмерный массив ячеек, каждая из которых состоит из конденсатора и транзистора, выполнение непрерывного чтения одной и той же области памяти приводит к флуктуации напряжения и аномалиям, вызывающим небольшую потерю заряда соседних ячеек. Если интенсивность чтения большая, то соседняя ячейка может потерять достаточно большой объём заряда и очередной цикл регенерации не успеет восстановить её первоначальное состояние, что приведёт к изменению значения сохранённых в ячейке данных."

https://www.realworldtech.com/forum/?threadid=198497&curpostid=198647 - а вот мысли Линуса, про ECC память. Коротко - во всем виновата Intel, с ее дурацкой политикой "ECC для серверов". А чо, как-то же надо продавать те же самые процы в 10 раз дороже.

Если бы не жадность Intel, такой класс атак был бы невозможен.

———
https://blog.unity.com/technology/debugging-memory-corruption-who-the-hell-writes-2-into-my-stack-2

Совершенно потрясный текст про одну историю отладки. Вот перепишут все на Rust - где такое читать-то???
😁1
commit -m "better"
https://yandex.ru/company/press_releases/2021/superkompyuter-yandeksa-priznali-samym-moschnym-v-rossii Первое место в СНГ - это та еще специальная олимпиада, а вот то, что у Я в 3 раза больше установленных мощностей для обучения, чем у ближайшего конкурента…
https://www.opennet.ru/opennews/art.shtml?num=56164

"В качестве процессорной основы лидируют CPU Intel - 81.6% (два года назад было 94%), на втором месте AMD 14.6% (0.6% !!), на третьем IBM Power - 1.4% (было 2.8%). Отмечается активный прирост кластреов на базе процессоров AMD, например, все новые системы, вошедшие в Top15, оснащены CPU AMD."

Прямо тектонический сдвиг. Очень рад за AMD, и за индустрию.
https://vc.ru/legal/320288-google-proigrala-appelyaciyu-po-dvum-iskam-cargrada-o-vosstanovlenii-dostupa-k-ego-youtube-kanalu

Безотносительно того, что из себя представляет этот канал(давайте на эту тему не троллить, не интересно), очень позитивная новость. Не устану повторять, что провайдер услуг не может быть модератором этих услуг. #law #provider #yeswecan

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

https://www.rbc.ru/technology_and_media/06/08/2021/610ca2fc9a79477988e66372 - надеюсь, что и до этой хрени общество когда-нибудь доберется.

———
https://octoverse.github.com/#improving-how-we-work

full remote уже тут.

https://devonzuegel.com/post/remote-work-will-break-the-us-monopoly-on-talent - а мне вот кажется, что наоборот. Теперь те, кто предпочитает сидеть на попе ровно, продолжат сидеть на попе, но работать будут на MANGA.

———
https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-pillai.pdf
https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-zheng_mai.pdf

2 старые(поэтому без нормального фаззинга, например), но все еще интересные статьи, про влияние особенностей FS и hard reset на базы данных.
commit -m "better"
Перечитал текст, и задумался - а имеет ли вообще модуль readline в Python право на существование? Очевидно, сам модуль должен быть под GPL3, раз он линкуется с libreadline. При этом, интерпретатор питона загружает его в runtime. Какой, в итоге, должна быть…
Вот, пожалуйста, ответ FSF:

"According to our license list, Python 2.0.1, 2.1.1 and newer versions
are released under a GPL-compatible license,
https://www.gnu.org/licenses/license-list.html#Python

It means that its code may be legally combined with code released
under the GNU GPL in one larger program,
https://www.gnu.org/licenses/gpl-faq.html#WhatDoesCompatMean

Now, if you ask about a program written in Python and using readline,
then it may be effectively linked to libreadline.so, in which case
the result qualifies as a combined work with libreadline.so, so it
can't be distributed unless under GPL-compatible terms,
https://www.gnu.org/licenses/gpl-faq.html#IfInterpreterIsGPL"

Напишу-ка я в python.org, что лучше, от греха подальше, поменять умолчание - а то как же использовать интерпретатор питона в проприетарных приложениях безопасно? Простой REPL же может импортировать readline.
Я тут хотел накатать большой текст, но решил, что много чести.

https://github.com/rust-lang/rust/issues/40174

"For those following various links to this issue, it is important to note that you can compile code using proc_macro to statically-linked musl binaries, BUT you need to cross-compile from a platform that does support dynamic linking."

Rustc и cargo пишут сумасшедшие и наркоманы. Для того, чтобы собирать статически слинкованные бинари в Rust, нужно делать кросс-компиляцию с динамически слинкованного rustc, потому что это требует подгрузки .so в rustc.

Rustc и cargo могут выполнять произвольный rust код в процессе сборки. Товарищи растоманы, удачи вам в интеграциях в большие монорепы с герметичной сборкой, она вам понадобится!

Long live Alacritty, hello Kitty!

———
https://lemire.me/blog/2021/11/18/converting-integers-to-fix-digit-representations-quickly/

Обзор оптимизаций int2string, от Daniel "наше всё" #Lemire. Удивлен, что он топит за табличную реализацию. Уверен, что он знает, что табличные реализации хорошо выглядят в микробенчмарках, когда таблицы в L1 cache, но хуже себя ведут в обычной жизни.

———
Мало кто знает, но в macOS решена проблема dll hell, в отличие от того же Linux. Решена она с помощью фичи Mach-O, под названием two level namespace - https://en.wikipedia.org/wiki/Mach-O Благодаря этой фиче, в конечный артефакт может быть влинковано произвольное число .so/.dylib, с произвольным пересечением по символам,

"When looking up symbols Mach-O uses a two-level namespace that encodes each symbol into an 'object/symbol name' pair that is then linearly searched for, first by the object and then the symbol name."
Будни бутстрапа.

checking for sbrk... yes
checking for working sbrk...
./configure: 18613: test: =: unexpected operator
checking for the existence of strsignal... yes

Больше всего на свете я люблю confgiure скрипты, написанные для неизвестной версии sh. Интересно, что этот скрипт узнал про мою систему?

checking whether strstr works in linear time... no
- а это пример "воспроизводимости" autoconf сборки. Что эта проверка вообще делает, я ХЗ, strstr должен или за M + N, или за M * N, что из них более linear, я не берусь гадать. Второй вариант точно линеен по каждому аргументу.

https://habr.com/ru/post/473228/ - сборка perl из нулевой ревизии. Спойлер - все хорошо, даже работает. Исторический прон(а, так же, пример "хорошего" Хабра).

https://github.com/heliocastro - qt/kde 1/2. Красивый, чистый код, а не то bloatware, во что все это превратилось позже.

https://github.com/adrian-thurston/ragel - бутстрапнуть рагель оказалось еще сложнее, чем bison, старые версии недоступны(разве что в Аркадии посмотреть), да и в них лежат сгенеренные фалы.

———
https://icu.unicode.org/

"Do you need ICU to work on EBCDIC platforms?
We need help: Someone needs to build ICU4C on a native-EBCDIC machine (z or i), fix C++ compiler issues (if any), fix issues related to an EBCDIC codepage as the system encoding, and test frequently (or add their machine into our CI). Please contact us via the icu-support mailing list. Otherwise we will remove the support code for non-ASCII-family platforms. Details: ICU-21672"

Разработчики ICU(поделие IBM, на минуточку) жалуются, что им негде проверить EBCDIC платформу. Это теперь сапожник без сапог?

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

Новость уже привычная, на этот раз зловредный код выложили в PyPI. Разве что, название одного из зловредов:

"yandex-yt (4183) - выводил сообщение о компрометации системы и перенаправлял на страницу с дополнительной информацией о дальнейших действиях, выдаваемой через nda.ya.ru (api.ya.cc)."

Это что, атака на нашу инфру?
https://habr.com/ru/news/t/590129/

Qualcomm обещает догнать M1 к 23 году. В принципе, не вижу в этом проблем, к 23 году уже будет M3.

———
https://boilingsteam.com/i-love-arch-but-gnu-guix-is-my-new-distro/

Рассказ про то, почему подход Guix, Nix(и Mix!) к управлению пакетами - это хорошо и удобно.

———
http://www.slackware.com/changelog/current.php?cpu=x86_64

Второй RC на slackware 15. Новость ни о чем, просто я разностальгировался - мой первый Linux была slackware 8(вроде бы). Потом, пока я был студентом, были ASP/ALT(20 лет назад грамотно настроить поддержку кириллицы по всей системе было нетривиально(это сейчас везде utf8, а тогда, fellow kids, во всю существовало понятие "codepage", которую нужно было прописать примерно везде)), позже Fedora, потом Linux From Scratch, его я себе собирал раз 10. Потом я нашел работу, на LFS стало не хватать времени, и, через Gentoo, я пришел к Убунте. Потом я женился и завел детей, и Linux плавно перетек в MacOSX. Стоило развестись, как я тут же начал пилить свой дистрибутив Mix. С - стабильность!

———
https://blog.cloudflare.com/the-tale-of-a-single-register-value/?a - еще одна прекрасная история про debug, на этот раз tcp стека Linux.
https://www.forbes.ru/tekhnologii/446495-seks-loz-i-gejming-cto-skryval-glava-activision-blizzard-i-sohranit-li-on-kompaniu

Я уже писал про Близзард, по сути мне добавить нечего.

"Например, в июле 2018 года бывшая сотрудница Sledgehammer Games — студии, принадлежащей Activision Blizzard, — сообщила об изнасиловании в отдел кадров и вышестоящему руководству, но никакой реакции не последовало."

У меня только один вопрос - почему не в полицию? У вас там уже настолько киберпанк, что корпорации - это и суд, и полиция?

———
2 ссылки про управление пакетами в npm. Спойлер - это леденящий душу п:%дец.

https://dustycloud.org/blog/javascript-packaging-dystopia/
https://drewdevault.com/2021/11/16/Cash-for-leftpad.html #npm

"I’ll pay you cold hard cash to delete your npm module. The exact amount will be determined on this equation, which is designed to offer higher payouts for modules with more downloads and fewer lines of code. A condition of this is that you must delete it without notice, so that everyone who depends on it wakes up to a broken build."
Срочно в номер, SJW отакуэ!

https://github.com/rust-lang/team/pull/671

"I'm a black latino from a 3rd world country, I hereby declare that I'm voluteering for being a mod."

https://www.reddit.com/r/rust/comments/qzme1z/moderation_team_resignation/
https://www.opennet.ru/opennews/art.shtml?num=56208

UPD: https://news.ycombinator.com/item?id=28515306

"As for Ashley's personal character... before she worked for Rust, she worked for npm. While she was working there, she tried to falsely accuse Rod Vagg because she wanted to kick him out of npm. Thankfully she failed, and after she failed she quit npm:

https://thenewstack.io/node-js-forked-complaints-repeated-ha...

https://medium.com/@rvagg/the-truth-about-rod-vagg-f063f6a53...

While she was working for npm, she violated npm's Code of Conduct numerous times, saying incredibly horrible sexist and racist things such as "kill all men", and actively trying to prevent white men from speaking at tech conferences:

https://archive.fo/f10KK"

То есть, возможно, это одни SJW нападают на других SJW? Божечки, наконец-то!!!
В python нет кросс-компиляции модулей из коробки.

Это, в целом, достаточно понятно - setup.py через импорты модулей получает доступ к установочным путям(== Python.h, libpython.so, etc) того интерпретатора python, которым этот setup.py запущен, поэтому host == target всегда.

Мне известно 3 способа(без привлечения внешней системы сборки) решить эту проблему:

1) запуск через qemu
2) crossenv хачит собранный env таким образом, чтобы target, который бы возвращали встроенные в python модули, отличался от host
3) патчить PYTHONHOME, чтобы он смотрел на папку с установленным target python. Это работает, если target не очень далек от host.

Все это, конечно, в стиле "в отсутствии горничной еб%м дворника". Процесс, вроде, идет, но удовольствие ниже среднего.

———
https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard

FHS, несмотря на свое убожество, является(точно являлся до появления контейнеризации в сборочных системах) ускорителем развития систем сборки. Потому что в FHS-based системах ну не может быть в системе 2 cmake(на самом деле, может, но сборочным скриптам об этом узнать трудно). Поэтому подготовка свежего дистрибутива Linux подразумевала портирование сборочных систем проектов на более свежие версии сборочных инструментариев. В Guix/Nix/Mix сборка пакета может зависеть от любой нужной версии cmake/autoconf, поэтому на прогресс в этом месте похер.

———
https://developer.apple.com/metal/cpp/

Apple запилили С++ биндинги к Metal. Наконец-то это можно будет попробовать. Я 2 раза пытался в objective-C, мне не зашло.
https://zivadynamics.com/zrt-face-trainer

Это рендер. Я в полном восторге.

https://www.youtube.com/watch?v=hIfmGQ6AG6A - или вот, например. Где мои 25 и LSD?

———
LLVM weekly.

https://blog.llvm.org/posts/2021-11-18-relicensing-update/ - LLVM почти перешел на лицензию Apache2, осталось совсем чуть-чуть.

https://reviews.llvm.org/rG7f287390d78d, https://bugs.llvm.org/show_bug.cgi?id=20837 - починили знатный баг в сортировке(иногда работала за n^2). Почему бы просто не использовать randomized quick sort?(кстати, тема самого первого поста этого бложика) Наверняка, это поменяло бы ABI, чего авторы libc++ ну никак не могут допустить. #abi

https://reviews.llvm.org/rG2b4948448f03 - например, как запилить теплый ламповый глобальный рефакторинг в монорепе.

———
https://microsoft.github.io/reverse-proxy/ - yet another reverse proxy. Судя по названию, технологию потырили у Я, судя по платформе - нет, таки MS. Когда уже MS перестанет форсить этот унылый мем(NET)?
https://tjournal.ru/news/480589-krupneyshiy-rasprostranitel-lotereynyh-biletov-stoloto-cherez-sud-potreboval-razmestit-svoe-prilozhenie-v-google-play - как вы уже поняли, новость, конечно, очень позитивная.

https://secretmag.ru/zhizn/v-rossii-zadumali-sozdat-reestr-toksichnogo-kontenta-22-11-2021.htm - надеюсь, сервис предоставит RSS. А это какие-то упыри занимаются каким-то леденящим душу пиздецом.

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

———
https://www.notebookcheck.net/First-Intel-Alder-Lake-P-Core-i7-12700H-Cinebench-scores-leave-both-AMD-Cezanne-Zen-3-and-Apple-M1-Max-in-the-dust.579828.0.html
3dnews у них слизал новость - https://3dnews.ru/1054047/publikatsiya-1054047

Очень интересный способ обмануть почтеннейшую публику. Сinebench R20 не умеет в M1, и работает через Rosetta(вот этот факт я проверил не на 100% - лично мне оказалось достаточно того, что он вышел до M1, и что авторы бенчмарка заявили поддержку M1 только в R23(https://www.maxon.net/en/cinebench-tech-info)). Поэтому бенчмарк однопотока мы покажем в R20, и M1 будет сливать. А вот в R23, где добавили поддержку M1, мы покажем только многопоток, потому что у Alder Lake 14 ядер, а не 10, но в однопотоке он будет сливать(легко пересчитывается по результатам многопотока и числу ядер). Ну и пишем, что "по результатам cinebench, новые Alder Lake на 40% быстрее". Красота же!

———
https://reviews.llvm.org/D70631#3149545

В libcxx почти доехал быстрый алгоритм форматирования floating point(https://www.researchgate.net/publication/329410883_Ryu_fast_float-to-string_conversion)

Красота? А как насчет "оно туда ехало 2 года"? Ревью висит с 2019 года, поражаюсь упорству Microsoft. В rust соответствующий код доехал, наверное, за неделю. Че, теперь пару лет ждем, пока доедет быстрый from_string от #Lemire.
У меня при сборке clang под darwin включается вот такой флаг:

{% block setup %}
{% if mix.platform.target.os == 'darwin' %}
export LDFLAGS="-Wl,-w ${LDFLAGS}"
{% endif %}
{% endblock %}

Фактически, мы прокидываем до линкера опцию -w, которая должна убирать предупреждения линкера. К чему это приводит на самом деле:

[259/4503] Building CXX object 
lib/MC/CMakeFiles/LLVMMC.dir/MCStreamer.cpp.o
ld64.lld.darwinnew:
warning: Option `-w' is not
yet implemented. Stay tuned...

Хм, то есть, я прокидываю опцию до линкера, которая должна выключать предупреждения, и она сама выводит предупреждение о том, что опция не поддерживается? ПЖ, ты совсем упоролся со своим бутстрапом?

Самое интересное начинается, если эту опцию убрать. В результате мы получаем такой clang + lld, которые строят некорректные бинарники под darwin(они тупо сегфолтятся на старте).

Почему? Потому что, если выставить такую опцию, то линковка программ начинает писать в stderr на этапе configure/cmake, и система сборки clang начинает думать, что компилятор не поддерживает -fpic/-fPIC, и не добавляет эти аргументы в command line. Ежели собрать clang/lld c такими опциями, он начинает подглючивать(я так полагаю, это где-то бага в районе lld под darwin).

Как я это нашел? Случайно. Случайно был выставлен этот флаг линкера глобально, и когда я его убрал, процесс бутстрапа стал падать после сборки компилятора.

Что будет, когда линкер поддержит эту опцию? Ну, придется выковырять плохие флаги более правильно, пока лень.

———
https://github.com/PhilipHazel/pcre2

Меня сегодня переполняет чистое, незамутненное, счастье!

Обновлял я pcre2, и заметил на странице проекта такой блок текста:

You can check out the PCRE2 
source code via Git or Subversion:

git clone https://github.com/PhilipHazel/pcre2.git
svn co https://github.com/PhilipHazel/pcre2.git

Протер глаза, решил, что Филип совсем уже упоролся со своими регулярками, но решил проверить. И оно таки работает!

https://docs.github.com/en/github/importing-your-projects-to-github/working-with-subversion-on-github/support-for-subversion-clients

Короче, выкинул клиент git, как страшный сон, и пользуюсь божественным svn.

А половине читателей этого бложека должно быть стыдно - наверняка вы мерзко подхихикивали в кулачок, когда я годами жаловался на git, зная про эту фичу. Фу такими быть!
Кстати, каналу уже 2 месяца, поэтому закиньте уже на Патреон, знали бы вы, как надоело жрать Pedigree накидайте ссылок на околоit и научпоп сайты, которые вы читаете? Интересные для меня темы, думаю, вы уже неплохо представляете.