commit -m "better"
3.24K subscribers
1.03K photos
149 videos
3 files
2.39K links
just random thoughts
Download Telegram
https://lwn.net/SubscriberLink/934692/5046d466490d9220/

Автор bcachefs, #Kent, хочет, в очередной раз, заапстримить ее.

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

Поэтому я не понимаю, какую поддержку получит эта FS в индустрии, и почему не станет уделом маргиналов.

Особенно мне доставил пассаж про

Rust is something that he has been evangelizing about to "anyone who will listen"; he thinks "writing code in C, when we finally have a better option available, is madness". He loves to write code, but not to debug it; writing in Rust "just means a lot less time debugging". He intends to slowly rewrite bcachefs in Rust, which will be a ten-plus-year project, but the use of Rust in bcachefs has already started. Some of the user-space tools have been rewritten in Rust and someone is looking at moving some of that work into the kernel.

"10 человеко-лет", говорит, "положу на переписывание под Rust".

На мой взгляд, это делает перспективы bcachefs еще более туманными.
🤔92👍1
https://www.opennet.ru/opennews/art.shtml?num=59310

Не стал писать про эту новость в момент ее появления, хотел дождаться результатов расследования.

https://gmplib.org/list-archives/gmp-devel/2023-June/006162.html

Какой-то чувак положил своим CI сервера проекта GNU gmp. CI этот живет в github, и проверяет сборку ffmpeg для сотни платформ. Проект gmp, широкими мазками, забанили все сети MS на своем сервере.

MS/github считают, что так можно, и проекту gmp нужно заиметь более лучшее железо.

Авторы gmp считают, что MS - контора пидарасов невозможно обслужить 8 гиг пожатого трафика за несколько часов, и отказались убирать блокировку. Не обошлось без левацких заявлений - https://gmplib.org/list-archives/gmp-devel/2023-June/006164.html:

"Note that this abusive traffic is still ongoing, but it is subsiding as I keep adding more and more Microsoft subnets to the firewall rules. I have much better things to do than defend a public service web server against corporate abuse!

What would you advise me to do, should I contact a US lawyer and have them send a cease and desist letter?"

Я, конечно, считаю, что:

* не надо хостить свою инфру, много раз про это уже писал #gitlab

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

GNU gmp (наверняка по глупым политическим причинам) такого зеркала не имеет.
🔥4🤔42👍2👎2😁2
https://github.com/faster-cpython/ideas/blob/main/3.13/README.md
https://github.com/faster-cpython/ideas/blob/main/3.12/README.md

#fast_python

Закончил читать два фундаментальных (если считать ссылки) текста про грядущие оптимизации python.

Если раньше я выражал здоровый скептицизм про эти планы, то теперь готов заявить сдержанный оптимизм - планы звучат достаточно "сложно", чтобы быть интересными, а не просто "ну мы как-то все ускорим в 100500 раз".

Oh, fun fact - Гвидо, похоже, отодвинули от процесса - https://github.com/faster-cpython/ideas/commits/main

Совпадение? Хм...
🔥10🤔41
https://blog.rust-lang.org/2023/06/20/introducing-leadership-council.html

Тут вот пишут, что распустили Core Team, и завели новый.

Я не очень слежу за подобного рода событиями, скажите, а там по существу что-то меняется, или так, стулья переставляют?
🤔4
commit -m "better"
https://github.com/harfbuzz/harfbuzz/pull/4131 #harfbuzz #fontconfig #wasm "This adds a wasm shaper that when called (default, when built), loads a WebAssembly program from the Wasm table of the font and calls its bool shape(font*,buffer*) function to shape…
#wasm #bootstrap

После написания того текста я решил, что мне катастрофически не хватает какого-то решения для поддержки WebAssembly - как для сборки в него, так и выполнения.

Потому что раз всем нужно, то и мне тоже нужно!

Вот, теперь все есть:

pg# cat qw.c 
int f(int a, int b) {
return a + b;
}
pg# /ix/store/.../bin/clang \
--target=wasm32 \
-nostdlib \
-Wl,--no-entry \
-Wl,--export-all \
-O2 \
-o qw.wasm \
./qw.c
pg# /ix/store/.../bin/iwasm \
--repl ./qw.wasm
webassembly> f 1 2
0x3:i32
webassembly>

Я завел интерпретатор из https://github.com/bytecodealliance/wasm-micro-runtime, llvm jit из него же, тулчейны из https://github.com/WebAssembly/binaryen, https://github.com/WebAssembly/wabt, ну а clang давно уже умеет в wasm.

На самом деле, я немножко мухлюю, потому что надо еще собрать wasm libc (поверх WASI - https://github.com/WebAssembly/wasi-libc), но, в целом, уже все работает, причем без всяких там rust и emscripten.
👍22🤯3
old but gold
🔥29😎6👍1🤔1🤮1
https://ohadravid.github.io/posts/2023-03-rusty-python/

Неожиданно годный текст про оптимизацию питона через переписывание кода на Rust.

Неожиданно - потому что заголовок совершенно кликбейтный, "python", "rust", "в 100 раз", короче, все, как я люблю. Да и задача, мягко говоря, выбрана странно - чуваки написали кусок пайплайна 3d рендера на python, причем кусок, который непосредственно обрабатывал геометрию. А потом героически оптимизировали этот кусок, хотя ответ, кажется, всем очевиден - не надо обрабатывать геометрию на python.

Anyway, текст все равно хорош, именно с технической точки зрения - профилирование проведено грамотно, с использованием флеймграфов, а не как я уже привык в зумерских текстах - "ну мы тут подумали, и из головы решили, что тормозит вот это вот". Попрофилировали - ускорили - еще раз попрофилировали - отметили ускорение и новые места для оптимизации.

Довольно подробно расписано использование биндингов из Rust в Python + NumPy.

Короче, хороший вводный текст, если абстрагироваться от хайпа и от решаемой задачи.
👍23❤‍🔥3🔥2
https://lwn.net/Articles/935592/

RH закрывает доступ к исходникам, из которых собирает RHEL. По подписке они продолжают быть доступны, все честно.

В комментариях срач, коллеги никак не могут договориться, кто же больше паразитирует на open source:

* RH, переупаковывая и продавая чужой труд
* Alma/Rocky линуксы, пересобирающие RHEL из исходников, ранее доступных всем
* Oracle ...

Я, конечно, считаю, что никто не паразиты, все в рамках того, что ВЫ САМИ разрешили им сделать с вашим кодом. Не хотите - ну возьмите другую лицензию на свой код, но им тогда никто не будет пользоваться, и все.
👍8🔥3💩3🐳2
Forwarded from Дидлошная
😁15👍7🤣2
commit -m "better"
#wasm #bootstrap После написания того текста я решил, что мне катастрофически не хватает какого-то решения для поддержки WebAssembly - как для сборки в него, так и выполнения. Потому что раз всем нужно, то и мне тоже нужно! Вот, теперь все есть: pg# cat…
#wasm #wasi #bootstrap

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

К сожалению, пока ничего не заработало.

Сначало оно ругалось на неподдерживаемые ассемблерные команды:

pg# /ix/.../wasm-interp \
/ix/.../bin/base64
0002080: error: unexpected opcode: 0xfe 0x48

Я дизассемблировал этот файл, и понял, что речь идет про

0020bf: fe 48 02 00 i32.atomic.rmw.cmpxchg 2 0

Попробовал включить в интерпретаторе поддержку тредов, но:

pg# /ix/.../bin/wasm-interp \
--enable-all \
/ix/.../bin/base64
error initializing module:
invalid import "wasi_snapshot_preview1.args_get"

Оказалось, что интерпретатор собран без поддержки WASI. Пересобрал, но:

pg# /ix/.../bin/wasm-interp \
--enable-all --wasi \
/ix/.../bin/base64
unknown wasi API import:
`sched_yield`

Тут я пока сдался, потому что WTF?
👍6
commit -m "better"
#wasm #wasi #bootstrap Я таки собрал какое-то приложение в WASM формате, под платформу WASI (специально постоянно про это упоминаю, потому что набор команд (WASM) и доступные вызовы в систему (WASI) - это разные вещи). К сожалению, пока ничего не заработало.…
#wasm #wasi #bootstrap #ix_run

Ну, вот, после пары сегфолтов, я это дело таки завел:

pg# ./ix run \
bin/b64 --target=wasi32 \
bld/sh \
bin/iwasm/fast/er \
-- \
iwasm --fast-jit \
'$(command -v base64)'

b64 (Base64 Encode/Decode) Bob Trower 2001/08/03
(C) Copr Bob Trower 1986-2015 Version 0.94R
Purpose: This program is a simple utility that implements
Base64 Content-Transfer-Encoding (RFC1113).
Use -h option for additional help.

https://wasi.dev/ мне кажется черезчур сложным для реализации. Ну и там пока очень мало чего, чтобы стать полноценным OS API - там нет всяких манипуляций с FS, сигналов, треды в зачаточном состоянии, процессов тоже нет.

Жду, когда запилят WASM + Linux ABI. Кажется, это не должно быть очень сложным - нужно запилить тонкую прослойку, которая бы проксировала из контекста интерпретатора в контекст системы всего шесть функций - syscall0, ..., syscall5 (это Linux ABI), а поверх этого сконпелять musl в виде libc.

Это не так гранулярно, зато можно очень быстро получить связку WASM jit + Linux, в качестве target platform.
🔥11🤔3👍2
commit -m "better"
https://lwn.net/Articles/935592/ RH закрывает доступ к исходникам, из которых собирает RHEL. По подписке они продолжают быть доступны, все честно. В комментариях срач, коллеги никак не могут договориться, кто же больше паразитирует на open source: * RH…
https://www.opennet.ru/opennews/art.shtml?num=59332

Продолжение истории про Red Hat.

Судя по тексту, альтернативные сборки редхата пока не очень понимают, как им жить дальше, все, что они могут сказать - "ну, мы как-то решим эту проблему, как - пока не знаем сами".

Из интересного:

"Для клиентов компания Red Hat оставила возможность загрузки кода srpm-пакетов RHEL через закрытый раздел сайта, на котором действует дополнительное пользовательское соглашение (EULA), запрещающее редистрибуцию RHEL. Использование в AlmaLinux и Rocky Linux srpm-пакетов, загруженных через клиентский портал Red Hat, сопряжено с юридическими рисками."
👍4🤔3🤡2
commit -m "better"
#wasm #wasi #bootstrap #ix_run Ну, вот, после пары сегфолтов, я это дело таки завел: pg# ./ix run \ bin/b64 --target=wasi32 \ bld/sh \ bin/iwasm/fast/er \ -- \ iwasm --fast-jit \ '$(command -v base64)' b64 (Base64 Encode/Decode) Bob…
#wasm #wasi #bootstrap

Однажды начав, бывает сложно остановиться.

Собрал еще 4 wasm рантайма:

https://github.com/wasmx/fizzy
https://github.com/wasm3/wasm3
https://github.com/WasmEdge/WasmEdge
https://github.com/tetratelabs/wazero

Из них только wasmedge оказался способен выполнить мою тестовую программу:

pg# ./ix run bin/b64 \
--target=wasi32 \
bld/sh \
bin/wasm/edge \
-- \
wasmedge --enable-all \
'$(command -v base64)'

b64 (Base64 Encode/Decode) Bob Trower 2001/08/03
(C) Copr Bob Trower 1986-2015 Version 0.94R
Purpose: This program is a simple utility that implements
Base64 Content-Transfer-Encoding (RFC1113).
Use -h option for additional help.
pg#

Вообще, их, конечно, больше - https://github.com/appcypher/awesome-wasm-runtimes, но остальные или выглядят заброшенными, или написаны на странных языках, типа Python, или Rust.
🤔5👍2🔥1
Forwarded from The After Times
🐳15
Forwarded from Daniel Lemire's blog
Science and Technology links (June 25 2023)

1. Women in highly religious relationships report the highest levels of relationship quality. 2. US politics is largely divided into two parties (Republicans and Democrats). People who are affiliated with the Republicans have many more kids. 3. The Antartic ice shelves gained 661 gigaton of ice over the past decade. 4. A low protein diet increases mortality among older men. 5. Consuming magnesium may preserve your brain, especially if you are a woman. 6. A third of the planet around common stars in our galaxy could be in the habitable zone. 7. Taurine (a supplement) might keep you young. It works, in some ways, in different animals. McGaunn et al. (2023) make a case for human beings, but they do not have much in the way of quality clinical trials. 8. Older people often lose their thymus, a gland that plays an important role in your immune system. Sandstedt et al. report that about two-third of their middle-age subjects had lost entirely the thymus (complete…

https://lemire.me/blog/2023/06/25/science-and-technology-links-june-25-2023/
👍43🤔3
https://www.phoronix.com/news/Go-1.21-RC

#perf

Меня расстраивают игры с PGO в Go.

Go сейчас - sweet point между скоростью компиляции и качеством генерируемого кода. Это, кстати, одна из тех причин, по которым мне НРАВИТСЯ писать на Go. Не просто "ок", а именно нравится - вспоминается детство, безумно быстрый borland pascal (безумно - потому что он рожал код моментально на моем pentium 75, а не на современных многоядерных монстрах), и это ощущение "потока", когда от изменения строчки кода до ее проверки проходит нисколько времени.

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

Много раз писал и буду писать, что я почти всегда предпочту компилятор, генерирующий код в 2 раза медленнее, но делающий это в 20 раз быстрее. Потому что ускорить целевую программу в 2 раза, в целом, решаемая задача, а нервные клетки не восстанавливаются.
👍12👎9🤔4💯1
commit -m "better"
#wasm #wasi #bootstrap Однажды начав, бывает сложно остановиться. Собрал еще 4 wasm рантайма: https://github.com/wasmx/fizzy https://github.com/wasm3/wasm3 https://github.com/WasmEdge/WasmEdge https://github.com/tetratelabs/wazero Из них только wasmedge…
#perf #wasm

Ну вот я, с помощью лома и такой-то матери, собрал нетривиальное приложение, которое actually do something - компрессор brotli.

И потестил его в разных runtime, которые у меня уже были, vs. нативное выполнение:

pg# cat g | time .../brotli -1 -c > qw.brotli.1
real 0m 0.50s
user 0m 0.46s
sys 0m 0.03s
pg# cat g | time .../wasmedge \
--enable-all \
.../brotli -1 -c > qw.brotli.2
real 1m 2.35s
user 1m 2.27s
sys 0m 0.04s
pg# cat g | time .../iwasm \
--llvm-jit \
.../brotli -1 -c > qw.brotli.3
real 0m 2.71s
user 0m 5.86s
sys 0m 0.06s
pg# cat g | time .../iwasm \
--fast-jit \
.../brotli -1 -c > qw.brotli.4
real 0m 1.21s
user 0m 2.20s
sys 0m 0.06s


Для того, чтобы сделать какие-то реальные выводы, у меня пока мало точек, но начало положено!

Про плохой результат wasmedge - это, кажется, что-то странное, скорее всего, я его криво собрал.
🔥9
commit -m "better"
https://www.opennet.ru/opennews/art.shtml?num=59332 Продолжение истории про Red Hat. Судя по тексту, альтернативные сборки редхата пока не очень понимают, как им жить дальше, все, что они могут сказать - "ну, мы как-то решим эту проблему, как - пока не знаем…
https://www.redhat.com/en/blog/red-hats-commitment-open-source-response-gitcentosorg-changes

Мерзотный текст от RH, с "объяснением" происходящего.

Мерзотный - потому что он, в лучших традициях, пытается одновременно объяснить два взаимоисключающих параграфа:

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

* "Нуачотакова? Вот исходники, все выложено, делайте с ними, чо хотите". И опять же, четко не сказано, что собрать из этих исходников RHEL, не зная конкретные ревизии, невозможно, потому что смотри предыдущий параграф.
🤡10🐳3🔥1🙈1
commit -m "better"
#wasm #wasi #bootstrap #ix_run Ну, вот, после пары сегфолтов, я это дело таки завел: pg# ./ix run \ bin/b64 --target=wasi32 \ bld/sh \ bin/iwasm/fast/er \ -- \ iwasm --fast-jit \ '$(command -v base64)' b64 (Base64 Encode/Decode) Bob…
#wasm

Второго Курцвейла #future из меня все никак не получается, потому что, как обычно, я горазд предсказывать уже случившиеся события.

https://wasix.org/

https://github.com/wasix-org/wasix-libc

Вот, почти полный POSIX wasm runtime. К сожалению, пока работает только в https://wasmer.io/
🔥51👍1
🤮10🗿8😁5🔥3👍2🐳1