1.99K subscribers
4.05K photos
162 videos
15 files
4.17K links
Блог со звёздочкой.

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

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
#prog #rust #article

Rust: When Empty Isn't Bottom

Или почему ! в Rust не является bottom типом. TL;DR: в Rust нет отношения подтипизации для типов, не включающих лайфтаймы.
❤4🤔2
#prog #java #article

JVM Anatomy Quark #23: Compressed References

Спека Java ничего не говорит о том, как представляются ссылки. Как следствие, реализации могут использовать представление ссылок, которые меньше указателя на машине. Статья описывает эти трюки.

Несколько неожиданное следствие: эти трюки работают только на достаточно маленьких кучах, поэтому выделение JVM большего количества памяти может привести к тому, что куча выйдет за этот предел, ссылки перестанут использовать компактное представление и потребление памяти многократно вырастет.
🥴4🤔3
#prog #haskell #article

Type-level programming is still programming

TL;DR: вычисление типов, в отличие от вычисления термов, не является ленивым, и изменения в логике вычисления типов, не меняющее поведение, могут поменять асимптотику времени компиляции с экспоненциальной на линейную.
❤7👍2🔥1💩1
#prog #rust #article

Why building a Rust LSP is hard

This will be a (hopefully coherent) story about how Rust LSPs work, from the perspective of both rust-analyzer and Rust Glancer: how things that seem easy turn out to be hard, things that seem hard turn out to be even harder, and things I didn't expect to exist at all somehow do.

LSP is more of a guess game, where at each step all you are presented with is the potentially incorrect state, and your goal is to guess what would make sense for the user.
❤6💯2
#prog #article

Everyone Says Assembly Is Untyped—Everyone Is Wrong

TL;DR: I believe Odin’s inline assembly is currently the best out of any language.

The most important aspects are of this article listed below. I am not aware of any other assembly (GCC/Clang/Rust/Go…) that would combine all of these aspects:

* Inline assembly is organized into asm “templates”, similar to and callable as procedures.
* asm templates integrate with rest of the code, through bindings specifying clobbers, pinned, tied, and scratch registers.
* Assembly syntax is unified across ISAs and consistent with Odin syntax.
* Assembly is fully type checked, just like rest of Odin code.
* Understanding that assembly is actually typed.
* Real semantic diagnostics via core:rexcode encoding tables.
* It was built in ~7 days.

🤔6🥰3😱1
#prog #article

Steering Zig Fmt

TL;DR (но вообще заметка маленькая): zig fmt не имеет the каноничного форматирования для кода, а опирается на указания в виде уже частично отформатированного кода и распространяет его на соседние семантически связанные строки.
🤯16😁3🥴2🤔1
#prog #rust #article

Rewriting an entire UI in Rust

(С Tauri на Iced)

So. Was it worth it?

I answer: Yes.

И рандомная цитата:
One would think, that the software known as Windows, would be good at managing windows. One would, of course, be wrong.
❤13😁7
#prog #rust #rustlib #article

Deser: Rethinking Rust Serialization

Статья про новую библиотеку (де)сериализации. Решает проблемы, которые есть в serde и которые очень сложно или почти невозможно решить из-за архитектуры.

Разумеется, это не строго лучше serde, и в статье подробно об этом рассказывается. В частности, в отличие от serde, deser поддерживает только self-describing форматы.
👍8❤1
#prog #rust #article

Generic Const Args and You

Статья о текущем состоянии экспериментальной поддержки констант в типовой системе Rust.
❤7
commit -m "better"
Какой классный ход конем, чтобы добавить поддержку #jpeg_xl в Chromium!
#prog #article

Shipping JPEG XL in Chrome

Но в треде на r/rust пишут, что есть сомнения в эффективности нового формата. Именно, декомпрессия изображений, закодированных без потери информации, очень медленная.
🤔2
#article

RISC-V: They Should Have Known Better

Несколько эмоциональная статья о недостатках набора инструкций RISC-V. Проняло даже меня, не смотря на то, что я в железе разбираюсь плохо.

В комментариях на этой же странице читатели написали, где автор был не до конца честен.
👍5🤔3❤1
#prog #article

HTTP is not simple

От Daniel Stenberg, автора curl
😁7👍4🌚1😭1
#prog #rust #rustasync #article

Tokio Gives Progress, Not Ordering: Scheduling 1M Tasks

TL;DR:

Spawned early doesn't mean first-polled early. First-polled early doesn't mean completed early.

If there is an application-level unit of fairness you expect Tokio to honor, like the event in our case, the runtime doesn't know it exists. The bounds should be added by the application.
👍3🤔2
#prog #itsec #algo #article

Black-Box HashDoS: Attacking Hash Tables Without Knowing the Hash Function

In this article I will describe a novel technique that allows an attacker to pass attacker-chosen string keys to a hash table implementation such that each lookup query takes O(n) instead of the expected O(1) work. The attack takes O(n × log⁡ n) interactive steps with the hash table to prepare, and does not require knowledge of the hash function used by the hash table. Instead, the technique directly targets the underlying structure of the hash table.

Luckily these attacks as described are quite niche (requiring lookup, insert and clear access on a table without interference from others), and mitigations are possible. However, the attack isn’t purely theoretical, I construct a working attack against Rust’s standard library hash table implementation below.
🤔2🤷1
#prog #article

Superoptimizing an FPU emulator

TL;DR: для функции, которая изымает из числа с плавающей точкой самый младший бит и состоит из шести операций с if, полным перебором (что, собственно, и есть супероптимизация) нашли реализацию за пять операций без ветвления.
🔥21🎉3👍1
#prog #article #suckassstory

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

ParticleDB — это "The database
for AI agents.". Поддерживает несколько интерфейсов, при этом также заявлена совместимость с Postgres на уровне wire format. Как нетрудно догадаться, навайбкожена.

В Jepsen провели анализ ParticleDB, оплаченный самими разработчиками. Поначалу авторы хотели проверить распределённые режимы работы, но очень быстро отказались от этих планов, ибо одной ноды с лихвой было достаточно, чтобы найти кучу багов. В их число входят: дедлок на двух транзакциях, зомби-строки, которые влияют на результаты запросов, но которые нельзя напрямую показать или удалить, исполнение запроса с WHERE 4 = 5, потеря данных множеством различных способов и дофига другого. Качество софта настолько смехотворно плохое, что буквально каждый подраздел анализа можно цитировать напрямую. Серьёзно, почитайте, это смешно.

The Postgres wire protocol usually authenticates clients using a username and password. ParticleDB had a --pg-password option, but 1.1.4 through 1.1.18.8 lacked any option to set the username. Some of the documentation indicated the default username was admin, while other pages said it was particledb. Neither appeared to work; the only option was to use --no-auth to disable authentication altogether.
🤣22👍4😁4❤1
#prog #article

You can't bug fix your way out of the vulnpocalypse

If you see the vulnpocalypse coming for you, the most important thing you can do is channel it into systemic fixes. The alternative is letting a crisis go to waste, and drowning under the weight of a massive number of vulnerabilities.
❤‍🔥4🤔2