commit -m "better"
3.21K subscribers
1.01K photos
147 videos
3 files
2.36K links
just random thoughts
Download Telegram
https://www.phoronix.com/news/Codon-Faster-Python
https://www.opennet.ru/opennews/art.shtml?num=58395

Судя по всему, какая-то горячая тема, что-то по типу #nuitka/cython/etc.

По мне так https://github.com/exaloop/codon - начали за здравие, а кончили уже не так оптимистично.

Любой, любой такой проект сразу, на первой странице, должен говорить, поддерживает ли он стандартные протоколы питона, или нет.

Ну вот реально - если там семантика лукапа методов такая же как в cpython (через 5 лукапов в dict, а иногда и еще больше), то там нет простора для оптимизаций, они всем давно известны, и реализованы в том же pypy.

А если стандартные протоколы не реализованы, и x.y - это что-то другое, нежели в cpython - ну да, можно сделать быстро, но интересный код там не выполнить.
👍8
Есть такая очень смешная шутка - "мне не нужен язык с GC, потому что моя программа не производит мусора".

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

К чему это я?

С-style printf - страшное говнище.

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

Например, по числу аргументов - printf("%d %d", 1). Или по несовпадению типов аргументов.

Мой поинт в том, что, конечно, можно героически пытаться решить эти проблемы, как пытается делать compile time std::format в С++ (тоже, очевидно, страшное говнище, как наследник C printf), а можно сделать так, чтобы такое нарушение инварианта не могло возникнуть в принципе.

Мне известно два способа сделать это:

* f-strings в куче языков, f"{a} {b} {a}"
* std iostreams в С++. У них есть свои проблемы (например, они stateful), но вот класс проблем выше в них не может возникнуть: cout<<a<<" "<<b<<" "a;

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

Вот их и надо использовать. В С++, конечно, лучше взять стороннюю реализацию потоков, которая не будет делать миллиарды inline вызовов, приводя к ухудшению времени компиляции и разбуханию кода.

А то, что std::format в текущем виде попал в стандарт, это, конечно, стыд и срам С++. Вот, реально, мало что хорошо было сделано в С++, ну так синтаксис форматированного вывода был сделан неплохо, надо было его и улучшать, в сторону f-strings, которые могли выглядеть "как в python", но, under the hood, превращаясь в вызов operator<<.

Если имеете возможность - не используйте C printf-like форматирование, нигде. Это очевидная ошибка дизайна из 70-х годов, которую упертые фанатики тащат в каждый новый язык.
👍12🤔7👎4🔥3🤮2🐳1
Forwarded from Дидлошная
😁15😐3😱2🤮2
#раньшевсех

Вышел новый llvm. https://github.com/llvm/llvm-project/releases/tag/llvmorg-16.0.0

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

Так же вышел #gnome 44. Вроде, нигде еще не написали, но он уже вышел, как говорится, "круги по воде" - зафризили версию новой libadwaita, webkitgtk получил новый stable (2.40.0), ну и теги местами расставили.
👍6
commit -m "better"
В комментариях как раз обсуждали landlock, и на тебе, Justin подогнала gnu make + landlock: #justine https://justine.lol/make/ TL;DR; - make сам ограничивает свои ноды выполнения по тому, куда им можно писать и что можно читать. ЖЫР: "To demonstrate this…
Видимо, Жастин вполне осознано троллирует почтеннейшую публику своими изысканиями, иначе я более никак не могу объяснить вот этот текст - https://justine.lol/rusage/ #justine

Казалось бы, запилила портабельный rusage в своей cosmopolitan libc, ну и ладно.

Но нет, надо показать, как он работает именно на коде датасатанистов:

"The usefulness of this tool becomes apparent when running beefier programs, like an artificial general intelligence model with thirteen billion parameters. Here's what happens if we use llama.cpp to load Facebook's 13B LLaMA model."

Либо код от датасатанистов особенно хорошо оптимизируем (что не удивительно), либо это вполне осознанный способ проехаться на хайпе от ML, как раньше получилось у python.
👍7😁2
AI-generated пресс-релиз для #stal/ix.

Запрос:

"Write press-release for alpha version of stal/IX - statically linked, source based, bootstrapped rolling Linux, based on IX package manager with Nix-inspired file system layout"

Кожаные не нужны не то что завтра, а уже даже сегодня:

"FOR IMMEDIATE RELEASE

Alpha Version of Stal/IX: The Future of Linux is Here

Stal/IX, the new statically linked, source-based, bootstrapped rolling Linux operating system, is pleased to announce the release of its alpha version. Based on the popular IX package manager, Stal/IX offers a cutting-edge file system layout inspired by Nix which provides users with a modern, streamlined, and efficient experience.

Stal/IX is a completely new take on Linux, offering an innovative approach to package management and distribution. Unlike traditional Linux distributions that rely on dynamic linking and shared libraries, Stal/IX is statically linked, meaning that it includes all of the libraries needed to run the operating system and its applications. This approach provides numerous benefits, including increased security, better performance, and simpler management.

Stal/IX also features a source-based build system, which allows users to compile their packages from source code, providing them with complete control over their system. This approach also ensures that packages are optimized for the user's specific hardware, resulting in faster and more efficient performance.

One of the most exciting features of Stal/IX is its bootstrapped rolling release model. This means that the operating system is constantly updated with the latest software, without the need for major version upgrades. This ensures that users always have access to the latest features and security updates.

In addition, Stal/IX features a file system layout inspired by Nix, which allows for efficient management of packages and dependencies. The file system is organized in a way that allows for easy rollback to previous versions, making it an ideal platform for development and experimentation.

"We're thrilled to release the alpha version of Stal/IX," said the Stal/IX development team. "We believe that our innovative approach to package management and distribution will provide users with a faster, more secure, and more efficient Linux experience."

The alpha version of Stal/IX is available for download now. For more information, please visit the Stal/IX website at <https://stalix.org/> https://stal-ix.github.io/.

About Stal/IX:
Stal/IX is a new statically linked, source-based, bootstrapped rolling Linux operating system "
🔥32😐10👍9🤮1
https://habr.com/ru/company/yandex/blog/721526/

Яндекс выложил YT в open source, и это очень круто.

Теперь YT - лучший MR, доступный на рынке. Hadoop? Не смешите мои тапочки, пожалуйста.

Ну и, помимо MR, там есть много вкусного - динамические таблицы, которые, на мой взгляд, делают mongo db obsolete, и божественный Кипарис, который, если суметь поднять отдельно от YT, лучшая замена zk/etcd/прочим oss поделкам.
🔥61👍83❤‍🔥1
Ко мне в трекер зашел совершенно незнакомый человек, https://github.com/stal-ix/ix/issues/77

Откуда, как услышал про IX - вообще непонятно!

Скажите, а у вас есть опыт bootstrap расрутки OSS проекта?

Куда стоит/можно написать про #stal/ix?

Есть понятные площадки, типа lobste.rs, HN, phoronix, distrowatch, но у них свои заморочки.
🔥95👍2😐1🍾1
https://github.com/GNOME/adwaita-icon-theme/tags

Список версий adwaita icon theme (это тема с иконками по умолчанию):

44.0
43
42.0
41.0
...


Чувствуется рука мастера!

(вот по таким мелочам, кстати, хорошо видно, где релизные процессы автоматизированы, а где - нет)
😁8👍4
Мне кажется, одно из самых сильных удовольствий, доставляемых программированием - это "соединить несоединимое". #herobora

Вот, есть текстовый браузер links http://links.twibright.com/, в нем как бы есть графический режим, но он застрял на linux frame buffer.

Wayland? Да вы чо, ебу дали? Ага, конечно.

Я взял https://devel.dob.sk/links-sdl/ - это набор патчей для links, которые так и не вошли в основную ветку (или, точнее, вошли, а потом их неаккуратно выпилили, ссылку не дам, потому что не нашел links в каком-нить git)

Патч был написан в 2004 году, так просто он под современный links не подошел, но я его творчески доработал - https://github.com/pg83/ix/blob/main/pkgs/bin/links/sdl/sdl.c

Особенно мне доставила строчка https://github.com/pg83/ix/blob/main/pkgs/bin/links/sdl/sdl.c#L381 - я не понимаю, что она значит, но без нее ничего не работало, а скопировал я ее из соседнего драйвера.

Хитрым хаком добавил этот драйвер в сборку - https://github.com/pg83/ix/blob/main/pkgs/bin/links/sdl/ix.sh#L27 . По сути, просто подменил уже встроенный в сборку драйвер на свой, чтобы не возиться со сборочными файлами.

На картинке - links, запущенный поверх SDL1-compat, который является враппером над SDL2, который работает поверх wayland. Классический SDL1 под wayland не работает.

Обратите внимание на то, что там настоящие картинки и шрифты, и что это wayland сессия. Как обычно, делаю скриншот телефоном, чтобы было видно, что все это добро работает на реальном железе!
🔥29👌5👏3👍2🐳2
https://stal-ix.github.io/

У нас, кстати, появилось лого.
🔥17😁7👍5👎1😱1
https://deno.land/
https://wasmer.io/

Давно хотел проехаться по этому хайпу, вот, дошли руки.

Первое - это JS runtime, написанный на Rust, поверх V8.

Второе - WA (WebAssembly) runtime, написанный на Rust.

Вот объясните мне, почему это не хайпожорство, почему в этом есть какое-то added value, по сравнению с той же nodejs/v8?

Я не понимаю, почему тут вообще принципиально работает мантра "rust is a safe language":

* рантаймы живут по своим правилам, после того, как ты сделал unsafe jump из rust кода в сгенеренный байткод v8/webassembly, все, ты сам по себе - никакой семантики Rust тут и рядом не стояло, у тебя семантика garbage collected v8/webassembly/whatever. Ну, то есть, у нас тут вступают в строй гарантии кодогенераторов, а не семантики Rust.

* Немножко более subtle штука. Вот сделал я где-то в своем скрипте new File("xxx") (или как там это выглядит в nodejs). Ну у меня "где-то" должен появиться какой-то очень "тонкий" объект, который отвечает за преобразование ABI соответствующего runtime в ABI операционной системы (это, фактически, и есть "мякотка" nodejs или любого такого рантайма). Почему на Rust ее писать особенно хорошо? В моем представлении, это 2 строчки safe кода, на хендл, пришедший из unsafe внешнего мира, который мы преобразуем в параметры для точно такого же unsafe по сути ядра. Сложно написал? На Rust написан код, который распаковывает строку, получает путь в fs, делает syscall, и упаковывает int в качестве результата. Тут, простите, нет места ошибке, на чем ты это не напиши, я не видел CVE про эти места в nodejs/v8.

Утверждение, что deno там сильно безопаснее, чем nodejs - это какое-то фуфло и хайп, нет там причин быть "более безопасным".
💯14🤔4🤷‍♀3👍1🔥1
#charity

https://lobste.rs/s/v9w2r7/weka_violates_minio_s_open_source

https://blog.min.io/weka-violates-minios-open-source-licenses/

MinIO хуесосят какую-то компанию, решившую распространять бинари от minio в составе своего продукта.

Судя по всему, по делу - их код идет под affero #gpl.

Лично я рекомендую на код под AGPL даже не глядеть, не то чтобы пытаться использовать в своих проектах.

Я хочу прицепиться к фразе из пресс-релиза:

"At MinIO, we are dedicated to the principles of open source software"

Ужасная, отвратительная, насквозь двуличная, фраза, которую можно было бы с легкостью переложить на MongoDB/Elastic/прочие "плохие" open source, с которыми не нужно иметь дела.

Несколько раз уже писал, что open source - он разный. Есть "щедрый", который, по сути, про charity, и есть "жадный" - который про "отдайте мне все производные от моего продукта", или, еще хуже, - "первая доза бесплатно".

Хотелось бы, конечно, чтобы, когда кто-то писал про приверженность принципам open source, чтобы он сразу указывал, каким принципам он привержен, потому что я, например, считаю, что такие заявления от жадных капиталистов бросают тень на "щедрый" open source.

Я не оправдываю компанию, которая решила не соблюдать AGPL, но это битва жабы и гадюки, а не добра и зла!
🔥13👍5👎2🤔2
Forwarded from The After Times
Не волнуйтесь
😁26🔥6🤣4👎2
#vendor

Сегодня про еще один механизм де-вендоринга, который я называю "кузькина мать".

https://github.com/pg83/ix/blob/main/pkgs/bld/devendor/devendor.sh

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

Этот скрипт делает очень простую штуку - он удаляет все заголовки из заданной директории, и зануляет все исходники.

Это приводит к тому, что оригинальные сборочные файлы собирают кучу пустых исходников, как ни в чем не бывало, а потом мой wrapper над компилятором подкладывает правильные библиотеки в путь линкеру.

Используется это, например, так: https://github.com/pg83/ix/blob/main/pkgs/bin/yt/ix.sh#L31 https://github.com/pg83/ix/blob/main/pkgs/bin/darktable/ix.sh#L80 (иногда перед configure, а иногда после, перед build фазой)
😁12👍7🔥2🤔1😨1