1.83K subscribers
3.29K photos
130 videos
15 files
3.56K links
Блог со звёздочкой.

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

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
Компьютер может просто работать и просто считать циферки, не его вина, что кто-то код писать не умеет
🥰9👎4👍2😁1🤔1😱1
Я придерживаюсь презумпции няшности. Все — няшки, пока не доказано обратного.
Блять
🤬23👍18😢62🤯2🤔1
Forwarded from блог кекея
больше всего в жизни меня пугает что мой блог или блог моих друзей станет новым дневником анны франк
#prog #regex #parsing #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 и полиморфной рекурсии — это означает, что итоговый результат не переносим в лоб на другие ЯП.
👎2👍1
#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).
👍6👎3
Кстати, я тут понял, что посты с разбором нововведений сложно найти, так что сделал хештег rustreleasenotes и отредактировал все старые посты с ними, которые смог найти, чтобы они включали этот хештег
🔥12👍1👎1
Forwarded from Личные мыслишки Эмили
Я конечно против войны, и желаю Украине всего лучшего, но вот такие приколы не радуют
👎19👍2😐1
#prog #go #article

Optimizing GoAWK with a bytecode compiler and virtual machine

Не смотря на то, что, очевидно, статья про программу, написанную на Go, почти ничего из перечисленного не является специфичным именно для Go. Единственным исключением является ремарка насчёт switch: на момент написания статьи компилятор Go компилировал switch по набору числовых констант, идущих по значению, в бинарный поиск, а не в jump table.

(thanks @go_perf)
👍4
Тем временем 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 является нейтральными неангажированными людьми, это было бы слишком нереалистично.

Большой брат Дискорд следит за тобой, пчел.
😢7💩3👍1