#prog #rust #suckassstory
https://nitter.net/davidtolnay/status/1883906113428676938
TL;DR: serde_yaml от dtolnay более не поддерживается. Кто-то сделал форк под именем serde_yml и начал кидать туда коммиты, сгенерированые LLM. И этим говном при этом ещё и кто-то пользуется.
(thanks @al_tch)
https://nitter.net/davidtolnay/status/1883906113428676938
TL;DR: serde_yaml от dtolnay более не поддерживается. Кто-то сделал форк под именем serde_yml и начал кидать туда коммиты, сгенерированые LLM. И этим говном при этом ещё и кто-то пользуется.
On top of this, the crate's documentation has been broken in docs·rs for the last 5 months because AI hallucinated a nonexistent rustdoc flag into the crate's configuration.
(thanks @al_tch)
Nitter
David Tolnay (@davidtolnay)
Not long ago, I used to have a more optimistic impression of Rust users. I would not have guessed that so many otherwise-judicious people would go for blatantly AI-"maintained" Rust libraries.
The `serde_yml` crate is a fork of a high-quality but unmaintained…
The `serde_yml` crate is a fork of a high-quality but unmaintained…
😁26😭8❤1🥰1🤯1
#prog #rust #article #abnormalprogramming
Take a break: Rust match has fallthrough
One can (ab)use labelled breaks in Rust to support fallthrough-like behaviour in
⬇️
Take a break: Rust match has fallthrough
One can (ab)use labelled breaks in Rust to support fallthrough-like behaviour in
match
. Not at all pretty, not at all advisable, but it works, and sometimes that’s as much as we can hope for.switch(len & 3)
{
case 3: k1 ^= tail[2] << 16;
case 2: k1 ^= tail[1] << 8;
case 1: k1 ^= tail[0];
k1 *= c1; k1 = ROTL32(k1,15); k1 *= c2; h1 ^= k1;
};
⬇️
'outer: {
'case1: {
'case2: {
'case3: {
match len & 3 {
3 => break 'case3,
2 => break 'case2,
1 => break 'case1,
_ => break 'outer,
}
} // 'case3:
k1 ^= (tail[2] as u32) << 16;
} // 'case2:
k1 ^= (tail[1] as u32) << 8;
} // case1:
k1 ^= tail[0] as u32;
k1 *= c1; k1 = k1.rotate_left(15); k1 *= c2; h1 ^= k1;
}
huonw.github.io
Take a break: Rust match has fallthrough
Match + labelled blocks & breaks = fallthrough. It works, but it's not very pretty!
🥴14🔥2🤯2👍1
#prog #rust #rustlib
seq — a
Написано, конечно же, Толяном.
seq — a
seq!
macro to repeat a fragment of source code and substitute into each repetition a sequential numeric counter.use seq_macro::seq;
fn main() {
let tuple = (1000, 100, 10);
let mut sum = 0;
// Expands to:
//
// sum += tuple.0;
// sum += tuple.1;
// sum += tuple.2;
seq!(N in 0..=2 {
sum += tuple.N;
});
assert_eq!(sum, 1110);
}
Написано, конечно же, Толяном.
❤8🤡1😐1
Самая необходимая #prog-рамма на свете — uwuify (#amazingopensource?)
⬇️
Пропускная способность считается в гигабайтах в секунду — отличное производительное решение, готовое для прода.
Hey, I think I really love you. Do you want a headpat?
⬇️
hey, (ꈍᴗꈍ) i think i weawwy wuv you. ^•ﻌ•^ do y-you want a headpat?
Пропускная способность считается в гигабайтах в секунду — отличное производительное решение, готовое для прода.
❤15💩5🌚2😐1
— Ну что, зарезолвил таску?
— Да, код работает, как часы.
— А должен работать по ТЗ!
— Да, код работает, как часы.
— А должен работать по ТЗ!
🌚19👍1😐1
#prog #typescript
В Microsoft решили из-за проблем с производительностью переписать компилятор Typescript с Typescript на... #Go. Выбор языка аргументируют сочетанием контроля над раскладкой структур в памяти вкупе со сборщиком мусора и лёгкостью портирования уже имеющегося кода. На мой взгляд, очень странный выбор.
Производительность, впрочем, действительно улучшилась — прототип уже в состоянии компилировать реальные проекты на порядок быстрее.
В Microsoft решили из-за проблем с производительностью переписать компилятор Typescript с Typescript на... #Go. Выбор языка аргументируют сочетанием контроля над раскладкой структур в памяти вкупе со сборщиком мусора и лёгкостью портирования уже имеющегося кода. На мой взгляд, очень странный выбор.
Производительность, впрочем, действительно улучшилась — прототип уже в состоянии компилировать реальные проекты на порядок быстрее.
Microsoft News
A 10x Faster TypeScript
Embarking on a native port of the existing TypeScript compiler and toolset to achieve a 10x performance speed-up.
😁17👍15❤🔥3🤡2🤔1
Я опять умудрился пропустить годовщину своего блога — а она, между прочим, была 5 декабря. Ещё и дата довольно круглая — Блог*у 5 лет исполнилось
🎉31👍2🤯2🤡2🌚1
Бедные гетеро
Бедные гомо
Никогда не поймут, какого это — быть би и получатьОТКАЗЫ ОТ ОБОИХ ПОЛОВ 😏😭
Бедные гомо
Никогда не поймут, какого это — быть би и получать
💯18😁10😭6🤡5😐5🔥3🍌1💔1
Forwarded from 🏳️🌈 Альянс гетеросексуалов и ЛГБТ за равноправие
Наконец-то, появилась ясность
🌚12😁7🍌7👌2😐1
#prog #suckassstory
Один человек написал программу krep, для поиска слов (не регекспов) в текстовых файлах. Быстрая, с SIMD, многопоточностью и mmap. Написана на C.
Чел выложил новость об этом на Hackernews. Комментаторы начали разбирать и обнаружили паршивое поведение. В частности, один человек пишет:
BurntSushi (автор ripgrep) ожидаемо тоже засветился в ответах:
Один человек написал программу krep, для поиска слов (не регекспов) в текстовых файлах. Быстрая, с SIMD, многопоточностью и mmap. Написана на C.
Чел выложил новость об этом на Hackernews. Комментаторы начали разбирать и обнаружили паршивое поведение. В частности, один человек пишет:
So krep is:
1. Extremely fast
2. Extremely inaccurate
3. Not useful if you actually want to see what the lines actually are rather than just knowing how many there aren't
Not to be facetious, but if the goal is to write a program that gives incorrect output as fast as possible I don't think you need to go as far as using AVX2.
BurntSushi (автор ripgrep) ожидаемо тоже засветился в ответах:
$ echo foo > /tmp/test
$ krep -c foo /tmp/test
Found 4 matches
😁23🤣9
#rust #article
Rust in 2025: Targeting foundational software
This first post describes my general vision for how Rust fits into the computing landscape. The remaining posts will outline major focus areas that I think are needed to make this vision come to pass.
Одна из точек зрения, высказанная Нико в тексте, довольно неожиданна (но я с ней согласен): то, что инструмент низкоуровневый, не значит, что для него не важна эргономика — скорее наоборот, потому что эргономичность позволяет программисту тратить больше умственных усилий на саму задачу:
<...>the fact that foundational software needs control over low-level details only makes it more important to try and achieve good ergonomics. Anything you can do to help the developer focus on the details that matter most will make them more productive.
Rust in 2025: Targeting foundational software
This first post describes my general vision for how Rust fits into the computing landscape. The remaining posts will outline major focus areas that I think are needed to make this vision come to pass.
Одна из точек зрения, высказанная Нико в тексте, довольно неожиданна (но я с ней согласен): то, что инструмент низкоуровневый, не значит, что для него не важна эргономика — скорее наоборот, потому что эргономичность позволяет программисту тратить больше умственных усилий на саму задачу:
<...>the fact that foundational software needs control over low-level details only makes it more important to try and achieve good ergonomics. Anything you can do to help the developer focus on the details that matter most will make them more productive.
👍8❤🔥3💯2🔥1
Forwarded from Generative Anton
Удар пришёл откуда не ждали: Cursor отказался генерировать код и попросил человека научиться программировать.
В очередной раз глупая машина оказалась умнее умного человека.
В очередной раз глупая машина оказалась умнее умного человека.
😁40❤🔥9🔥6