1.83K subscribers
3.3K photos
132 videos
15 files
3.58K links
Блог со звёздочкой.

Много репостов, немножко программирования.

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
Блог*
#prog В кодогенераторе cranelift (который, помимо всего прочего, планируют использовать как бекенд rustc для отладочных билдов) для аллокации регистров используется библиотека regalloc2. В репозитории есть занятный документ — обзор дизайна regalloc2, включающий…
#prog #article

В статье The Solid-State Register Allocator автор описывает свой дизайн аллокатора регистров (который впоследствии оказался тем же, который используется в LuaJIT).

Все аллокаторы регистров требуют для работы информации о том, какие регистры используются в каждый конкретный момент времени — то есть то, что называется liveness ranges. Обычно у аллокаторов регистров это отдельный шаг перед работой собственно аллокатора. Анализ, требуемый для построения liveness ranges, обрабатывает программу от конца к началу (как и многие dataflow алгоритмы). Ключевая идея нового аллокатора состоит в том, чтобы также обрабатывать программу от конца к началу и вместо требования наличия liveness ranges вычислять их на лету. Замеры показали, что этот аллокатор регистров очень быстр (на пару порядков быстрее clang и GCC) и при этом лучше их утилизирует большое количество физических регистров.

Несмотря на впечатляющие характеристики, у Solid state register allocator есть весьма существенный недостаток: он работает только на программах с линейный исполнением, без условных переходов и прыжков. Demilade Sonuga решил написать свой вариант реализации, который поддерживал бы более сложный поток управления, и использовать его как один из вариантов аллокатора регистров в Cranelift. Свой прогресс автор описал в статье regalloc I (фактически анонс) и regalloc II (которая описывает новый вариант алгоритма, работающий на уровне взаимосвязанных базовых блоков). Его работа в итоге привела к PR в Cranelift, который был принят.

В regalloc III автор описывает замеры производительности нового аллокатора. TL;DR: компиляция в WASM быстрее (в некоторых случаях аж в пять раз), но производительность скомпилированного кода в разы хуже. Второе, впрочем, является следствием довольно наивного подхода в реализации (в частности, обработки условных ветвлений), который приводит к избыточному перемещению между регистрами и слотами стека, и впоследствие, скорее всего, может быть улучшено.
7😐1
Кремовые пироги люблю
Anonymous Poll
49%
есть
28%
готовить
59%
быть
🤮10🍌8😁1
Forwarded from Кустарный мыслепоток (Konstantin Redkin)
И снова про контору.

Доставка в мой дом - 335 рублей
Доставка в дом, что соприкасается с моим, стоит прям рядом - 135 рублей

Олимпиадники играли в алгоритмы и проиграли.
🤡17👍6😁4
#prog #rust хайлайты

Умудрился пропустить в своё время очень важное изменение, влитое в сентябре:

Stabilize &mut (and *mut) as well as &Cell (and *const Cell) in const

Изменение, которое значительно повышает возможности для кода в const-контексте. Судя по milestone, до стейбла дойдёт в версии 1.83
👍11
Forwarded from Кустарный мыслепоток (Konstantin Redkin)
Linux, linux.. зацени че у меня винда умеет
🔥27🤣15😁3
Forwarded from Install Wizard
Год программирования на расте и непрограммирования на плюсах меня испортил. Я начал считать, что программирование - это что-то хорошее
😁37🤔12
Публично потрогал киску
🥰33😱2👌2🤡1
#prog #cpp #python

Что общего у C++ и Python?

Правильно: что в C++, что в Python нельзя распаковывать кортежи в аргументах лямбды.
🌚11👌4
#meme про айтишников
💯28🍌6😁4🥴4🤮2
#prog #article

You Really Shouldn't Roll Your Own Crypto: An Empirical Study of Vulnerabilities in Cryptographic Libraries (pdf)

<...> Among our most interesting findings is that only 27.2% of vulnerabilities in cryptographic libraries are cryptographic issues while 37.2% of vulnerabilities are memory safety issues, indicating that systems-level bugs are a greater security concern than the actual cryptographic procedures

<...>

Of the most severe CVEs, just 3.57% were cryptographic, a substantially lower percentage compared to 27.24% of all CVEs.
🤔5
🫡

В Госдуме и ФСБ поддержали предложение о том, чтобы исключить использование российскими операторами измерителя скорости интернета SpeedTest американской компании Ookla. 
. . .
Ookla работает в тесной связи со спецслужбами США — американцы смогли создать по всему миру систему тестового контроля сетей связи, объясняет свою обеспокоенность президент Международной академии связи Анастасия Оситис в своем обращении в Госдуму (документ есть у «Известий»).
. . .
Системы тестового контроля позволяют получить информацию о сетях связи: их конфигурации, используемом на них оборудовании, нагрузке, пропускной способности и многом другом, перечисляет академик МАС Сергей Мельник. По его словам, эти данные, попав в руки иностранных спецслужб, могут быть использованы, к примеру, для организации адресных DDoS-атак.

Скорость отступа: в РФ хотят запретить использование сервиса SpeedTest
https://iz.ru/1775426/valerii-kodacigov/skorost-otstupa-v-rf-hotat-zapretit-ispolzovanie-servisa-speedtest
🤡31🤣7
❤‍🔥13👍7💯6
#prog #rust #rustlib #article

Designing A Fast Concurrent Hash Table

Статья о дизайне papaya, многопоточной в основном lock-free хэш-мапы с упором на пропускную способность на операциях чтения из мапы и предсказуемые задержки (без пиков). Также пока что является, кажется, единственной подобной структурой данных, которую можно использовать из асинхронного кода.

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

Так как многопоточная мапа по определению не может иметь аналог entry API (по крайней мере, без кучи тонкостей из-за потенциальных гонок с другими потоками), papaya предоставляет операции по атомарной модификации отдельных записей, использующие переданные коллбеки для выполнения нужной операции. Для наиболее ходовых операций есть отдельные методы, а для тех, которые в эти методы не укладываются, есть операция compute. Коллбек, переданный в этот метод, должен возвращать значение типа Operation, описывающий требуемое действие:

enum Operation<V, T> {
Insert(V),
Remove,
Abort(T),
}


В конце автор сравнивает свою реализацию с другими подобными библиотеками для Rust и поясняет, почему может иметь смысл использовать их вместо papaya.
🔥75