#prog #cpp #article
unique_ptr–How Unique is it?
Статья от 2009 года, в которой Бартош Милевски сетует на недостатки unique_ptr и предлагает возможные предложения в язык для исправления ситуации... В виде модификаторов типов unique и lent. Да, весьма похоже на Rust.
unique_ptr–How Unique is it?
Статья от 2009 года, в которой Бартош Милевски сетует на недостатки unique_ptr и предлагает возможные предложения в язык для исправления ситуации... В виде модификаторов типов unique и lent. Да, весьма похоже на Rust.
Bartosz Milewski's Programming Cafe
unique_ptr–How Unique is it?
I’ve been using auto_ptrs before they were available in C++ (I made my own). I wrote several articles about resource management, in which auto_ptr played a prominent role. auto_ptr had always…
😁4🤔1
Блог*
А "Ледниковый период" — годом позже, в 2002. То есть 21 год назад.
Не столь впечатляющий пример на фоне предыдущих, но всё же.
"Гадкий я" вышел в июле 2010 года. То есть почти 14 лет назад.
"Гадкий я" вышел в июле 2010 года. То есть почти 14 лет назад.
🤯5😭3
#prog #cpp #article #suckassstory
Неопределенное поведение, пронесенное сквозь года
Или как череда ошибок и их исправлений привела к нахождению UB, которое "работало" три года.
(алсо первая ошибка в статье на Rust не скомпилировалась бы)
Неопределенное поведение, пронесенное сквозь года
Или как череда ошибок и их исправлений привела к нахождению UB, которое "работало" три года.
(алсо первая ошибка в статье на Rust не скомпилировалась бы)
Хабр
Неопределенное поведение, пронесенное сквозь года
У вас бывают в разработке такие периоды, когда что-то в коде идет не так, ты ищешь баг, а потом оказывается, что за ним стоял еще один баг? Мне нравится искать баги. Это создает ощущение словно ты...
❤2👍1
Блог*
#game Cultist simulator — трудная, непонятная, пугающая и всё же хорошо сделанная игра. Что ж, в следующий раз сделаю вторую попытку продолжить наследие вознёсшегося.
Кстати, в Steam на Cultist simulator сейчас скидка 50%, продлится до 1 апреля
Блог*
#prog #rust #article ROFL with a LOL: rewriting an NGINX module in Rust
#prog #article
В статье не особо рассказано про то, что именно переписали.
В статье A History of HTML Parsing at Cloudflare: Part 1 рассказывается, как в Cloudflare перешли от отдельных модулей для переписывания ответа серверов (например, замены http на https в ссылках) на отдельный единый фреймворк для потокового парсинга и переписывания HTML, который впоследствии и был опубликован под названием lazyhtml. Также описываются трудности, которые стояли перед этим парсером, и некоторые трюки, которые помогли повысить производительность. В частности, использование своего варианта арифметического кодирования позволило переводить теги в 5-битное число и таким образом сравнивать теги без чувствительности к регистру за констатное время.
В статье A History of HTML Parsing at Cloudflare: Part 2 рассказывается о новой, переписанной версии этого фреймворка, которая получила название LOL HTML (low output latency HTML). Одним из причин переписывания было желание предоставить доступ к выразительному API для динамического переписывания HTML внутри Cloudflare workers. Архитектура lazyhtml предполагала постоянную передачу данных через границу FFI, что было достаточно дорогим, чтобы потенциально свести на нет весь выигрыш в производительности от использования нативного языка.
Переписанный вариант использует синтаксис, схожий с селекторами CSS, для матчинга нужных фрагментов текста, вместо ручного матчинга по нужным свойствам токенов в пользовательских коллбеках, что не только более эргономично, но и позволило провести некоторые оптимизации. Одна из них — деление стейт-машины парсера на подробный парсер, который парсит все теги, и более простой т. н. tag scanner, который на каждый распознанный тег ищет соответствующий закрывающий, игнорируя содержимое документа между ними. За счёт того, что пользователь задаёт паттерны наперёд декларативно, этот подход позволяет безопасно пропускать обработку тех фрагментов текста, в которых пользователь не заинтересован.
Более того, lolhtml может эксплуатировать тот факт, что у заданных пользователем паттернов есть общие префиксы, что позволяет объединить часть работы над распознаванием нужных фрагментов и не проводить её заново по несколько раз.
Обе статьи более подробны, чем я расписал в своём обзоре, так что рекомендую к прочтению.
В статье не особо рассказано про то, что именно переписали.
В статье A History of HTML Parsing at Cloudflare: Part 1 рассказывается, как в Cloudflare перешли от отдельных модулей для переписывания ответа серверов (например, замены http на https в ссылках) на отдельный единый фреймворк для потокового парсинга и переписывания HTML, который впоследствии и был опубликован под названием lazyhtml. Также описываются трудности, которые стояли перед этим парсером, и некоторые трюки, которые помогли повысить производительность. В частности, использование своего варианта арифметического кодирования позволило переводить теги в 5-битное число и таким образом сравнивать теги без чувствительности к регистру за констатное время.
В статье A History of HTML Parsing at Cloudflare: Part 2 рассказывается о новой, переписанной версии этого фреймворка, которая получила название LOL HTML (low output latency HTML). Одним из причин переписывания было желание предоставить доступ к выразительному API для динамического переписывания HTML внутри Cloudflare workers. Архитектура lazyhtml предполагала постоянную передачу данных через границу FFI, что было достаточно дорогим, чтобы потенциально свести на нет весь выигрыш в производительности от использования нативного языка.
Переписанный вариант использует синтаксис, схожий с селекторами CSS, для матчинга нужных фрагментов текста, вместо ручного матчинга по нужным свойствам токенов в пользовательских коллбеках, что не только более эргономично, но и позволило провести некоторые оптимизации. Одна из них — деление стейт-машины парсера на подробный парсер, который парсит все теги, и более простой т. н. tag scanner, который на каждый распознанный тег ищет соответствующий закрывающий, игнорируя содержимое документа между ними. За счёт того, что пользователь задаёт паттерны наперёд декларативно, этот подход позволяет безопасно пропускать обработку тех фрагментов текста, в которых пользователь не заинтересован.
Более того, lolhtml может эксплуатировать тот факт, что у заданных пользователем паттернов есть общие префиксы, что позволяет объединить часть работы над распознаванием нужных фрагментов и не проводить её заново по несколько раз.
Обе статьи более подробны, чем я расписал в своём обзоре, так что рекомендую к прочтению.
The Cloudflare Blog
A History of HTML Parsing at Cloudflare: Part 1
This post reviews the history of HTML rewriting at Cloudflare, replacing a collection of ‘ad-hoc’ parsers with a HTML5 spec-compliant pluggable rewriter.
👍4