Блог*
Kanalga Telegram’da o‘tish
Блог со звёздочкой. Много репостов, немножко программирования. Небольшое прикольное комьюнити: @decltype_chat_ptr_t Автор: @insert_reference_here
Ko'proq ko'rsatish1 950
Obunachilar
+2124 soatlar
+227 kunlar
+2230 kunlar
Postlar arxiv
1 948
Тем временем Discord объявил об изменениях в Terms of Service, Privacy Policy и Community Guidelines, которые вступят в силу 28 марта, и насчёт изменений Community Guidelines там есть весьма занимательное добавление:
Off-platform behaviors. We will now consider relevant off-platform behaviors when making policy and enforcement assessments. This includes membership or association with a hate group, illegal activities, and hateful, violent sexual, or other types of violent acts.
Или, говоря иначе, Discord теперь сможет объявлять людей персонами нон грата в связи с их поведением вне платформы Discord, если Discord считает их поведение плохим. С учётом того, что список не исчерпывающий, фактически это означает, что Discord теперь в полном соответствии со своими правилами может банить людей по своему усмотрению. И, честно говоря, я не верю в то, что команда модераторов Discord является нейтральными неангажированными людьми, это было бы слишком нереалистично.
Большой брат Дискорд следит за тобой, пчел.
1 948
#prog #go #article
Optimizing GoAWK with a bytecode compiler and virtual machine
Не смотря на то, что, очевидно, статья про программу, написанную на Go, почти ничего из перечисленного не является специфичным именно для Go. Единственным исключением является ремарка насчёт
switch: на момент написания статьи компилятор Go компилировал switch по набору числовых констант, идущих по значению, в бинарный поиск, а не в jump table.
(thanks @go_perf)1 948
#video
I Made A Water Computer And It Actually Works
(на самом деле не компьютер, а четырёхбитный двоичный сумматор, но всё равно впечатляет)
1 948
Если вам есть, что сказать — идите в чат канала, http://t.me/decltype_chat_ptr_t, я не хочу читать комментарии, авторы которых даже ответы нормальные делать не могут
1 948
Repost from N/a
Я конечно против войны, и желаю Украине всего лучшего, но вот такие приколы не радуют
1 948
Кстати, я тут понял, что посты с разбором нововведений сложно найти, так что сделал хештег rustreleasenotes и отредактировал все старые посты с ними, которые смог найти, чтобы они включали этот хештег
1 948
#prog #rust #rustreleasenotes
Вышла версия Rust 1.59.0!
(Об известных событиях есть короткая ремарка в начале блогопоста, но, в отличие от заметок к релизу Rust 1.44.0, почти полностью убирать пост не стали. Впрочем, не исключено, что это лишь из-за того, что дата публикации поста совпала с этим днём)
Как обычно, не буду описывать полностью все изменения, а ограничусь лишь избранными примерами.
▪️ВАЖНО: из-за багов инкрементальную компиляцию по умолчанию отключили. Её всё так же можно активировать самостоятельно, но в таком случае готовьтесь к ICE. Хорошие новости: баг вроде пофиксили, так что в следующем релизе включат обратно.
▪️В присваиваниях (а не только в декларациях) теперь можно использовать паттерны. Пример из блога достаточно красноречив:
let (a, b, c, d, e);
(a, b) = (1, 2);
[c, .., d, _] = [1, 2, 3, 4, 5];
Struct { e, .. } = Struct { e: 5, f: 3 };
assert_eq!([1, 2, 1, 4, 5], [a, b, c, d, e]);
И да, присваивания в духе (a, b) = (b, a) работают, причём с не-Copy типами. Rust стал ещё чуть больше похож на Python (предыдущей фичей была f-строки).
▪️Изменения в const generics: их теперь можно объявлять вперемешку с ти́повыми параметрами, а сами значения const generics на объявлениях типов теперь могут иметь значения по умолчанию. И если вы думаете, что это нишевая штука, то я могу совершенно точно сказать, что на предыдущей работе мне из-за отсутствия значения по умолчанию для const generics пришлось отказаться от одного кусочка API, которое я разрабатывал, и сделать его менее эргономичным.
▪️Совершенно внезапно стабилизировали ассемблерные вставки! Я удивлён, не думал, что они уже настолько готовы. С другой стороны, пока что они работают лишь для архитектур x86/x86-64, ARM, AArch64 и RISC-V.
▪️Линт private-in-public ослабили: теперь не является ошибкой иметь на impl-е трейта в where clause ограничение публичного типа приватным трейтом и ограничение приватного типа публичным трейтом (в PR, который вносит это изменение, рассказывается, почему это ок).
▪️С части методов Hash{Map, Set} сняли лишние ограничения на типы.
▪️ Ну и традиционно "о-боже-почему-они-стабилизировали-эту-простую-вещь-только-сейчас"-часть. Всё перечислять не буду, укажу только на std::thread::available_parallelism (кстати, в отличие от аналогичного API в стандартной библиотеке C++, эта функция возвращает io::Result<NonZeroUsize>, так что с нулём разбираться не придётся), Result::{cloned, copied}, ops::ControlFlow::{is_break, is_continue} и is_power_of_two на NonZeroX типах.
А ещё в этот раз в подробных заметках о релизе довольно объёмная секция о совместимости. Советую на всякий случай прочитать, но, если вы не делаете ничего странного, то вас наверняка ничего не затронет (кроме, разве что, того, что split_inclusive на пустых слайсах возвращает пустое значение — и то это приведение в соответствие с аналогичным методом у str).1 948
#prog #haskell
Fix-ing regular expressions
TL;DR: We add variables, let bindings, and explicit recursion via fixed points to classic regular expressions. It turns out that the resulting explicitly recursive, finitely described languages are well suited for analysis and introspection.
Если читали мои претензии к регулярным выражениям, то наверняка помните, что одной из моих претензий было отсутствие декомпозируемости. В статье это решается за счёт добавления явных переменных (точнее, привязок в форме
let x = r in re). Также добавление явного fix расширяет возможности языка и даёт возможность использовать рекурсию. На практике это означает, что подобное решение в состоянии распарсить известный пример грамматики, являющейся контекстно-зависимой: aⁿbⁿ.
К сожалению, не обошлось без ложки дёгтя: даже с некоторыми оптимизациями производительность итогового решения оставляет желать лучшего — что, в принципе, вполне ожидаемо, учитывая, что распознавание использует подход regular expression derivatives, который при применении в лоб приводит к сильному распуханию промежуточных структур данных. А ещё лично меня несколько расстраивает использование в финальной версии fix и полиморфной рекурсии — это означает, что итоговый результат не переносим в лоб на другие ЯП.1 948
Repost from N/a
больше всего в жизни меня пугает что мой блог или блог моих друзей станет новым дневником анны франк
1 948
Repost from мне не нравится реальность
Я придерживаюсь презумпции няшности. Все — няшки, пока не доказано обратного.
1 948
Компьютер может просто работать и просто считать циферки, не его вина, что кто-то код писать не умеет
1 948
#programming
В топе бенчмарков веб-фреймворков оказался фреймворк на Js, Just-JS
https://just.billywhizz.io/blog/on-javascript-performance-01/
https://www.techempower.com/benchmarks/#section=data-r20&test=composite
