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

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

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
🖕1
Not a problem anymore
😁22🎉9💩1🖕1
Forwarded from Neural Machine
Настоящий мужчина должен уметь вязать на спицах - это позволяет сохранять тепло в отношениях.
4🖕1
Neural Machine
Настоящий мужчина должен уметь вязать на спицах - это позволяет сохранять тепло в отношениях.
Я, конечно, ни на что не намекаю, но вязать на спицах я умею.

И пофиг, что в последний раз я этим занимался ещё в школе.
👍9🤷2🤨1🖕1
Можно бесконечно смотреть на три вещи: на горящий огонь, на текущую воду и на то, как WhatsApp шлёт уведомления о том, что текущая версия устарела
🔥13🖕1
🖕1
Forwarded from ТГ Шевченка
😁3🤔1🤨1😐1🖕1
Forwarded from shitposting 3.0 [+ dragons]
😁21🖕1
🖕1
Forwarded from shitposting 3.0 [+ dragons]
😁8🖕1
🖕1
Forwarded from shitposting 3.0 [+ dragons]
😁14🖕1
#prog #rust #parsing #article

Resilient LL Parsing Tutorial

In this tutorial, I will explain a particular approach to parsing, which gracefully handles syntax errors and is thus suitable for language servers, which, by their nature, have to handle incomplete and invalid code. Explaining the problem and the solution requires somewhat less than a trivial worked example, and I want to share a couple of tricks not directly related to resilience, so the tutorial builds a full, self-contained parser, instead of explaining abstractly just the resilience.

The tutorial is descriptive, rather than prescriptive — it tells you what you can do, not what you should do.

* If you are looking into building a production grade language server, treat it as a library of ideas, not as a blueprint.
* If you want to get something working quickly, I think today the best answer is “just use
Tree-sitter”, so you’d better read its docs rather than this tutorial.
* If you are building an IDE-grade parser from scratch, then techniques presented here might be directly applicable.
🔥2🤔1🖕1
🥰23🖕8
Forwarded from Above all that is random
❤‍🔥15👍8💩4😁2🖕21
-> ControlFlow<Self, Self>

#justrustaceanthings
🖕2
Forwarded from Neural Machine
Звонить людям никогда не следует
👍25👎62🖕2❤‍🔥1
Forwarded from shitposting 3.0 [+ dragons]
😁26🤔3🖕21
Блог*
#prog #rust #rustasync #article Efficient indexing with Quickwit Rust actor framework Или немного о том, почему разработчики Quickwit решили реализовать свой акторный фреймворк. Также в тексте есть ссылка на статью Actors with Tokio, которая описывает, как…
#prog #rust #rustasync

Если вы делаете что-то с акторами в Rust, может быть полезно иметь у актора возможность отправлять сообщения самому себе. К сожалению, способ в лоб — хранить отправляющую половинку канала у себя — приводит к тому, что теперь невозможно полагаться на ошибку получения из канала как на сигнал к прекращению работы актора: Sender у актора удерживает живым весь канал, и потому, если других Sender-ов нет, recv на канале навечно зависает на попытке получить из канала сообщение.

Для решения этой проблемы в tokio есть WeakSenderWeakUnboundedSender), которые можно считать аналогом std::sync::Weak<ChannelInner<T>> (что, в общем-то, недалеко от истины). Эти Sender-ы позволяют отправлять сообщения в канал при апгрейде до полноценных версий, но сами по себе не поддерживают канал в живом состоянии — идеально для того, чтобы держать в акторе.

Кстати, эта фича была добавлена по запросу, который как раз ссылается на уже упомянутую в Блог*е статью Actors with tokio. Запрос на аналогичную функциональность для каналов в std есть аж с 2016 года, но до сих пор не реализован. И в crossbeam-channel этого тоже нет, увы.
🔥6🖕21