Forwarded from AlexTCH
I was today years old when I learned about
https://detexify.kirelabs.org/classify.html
It can suggest appropriate LaTeX symbols from a hand drawing of the desired one. They also link to
https://shapecatcher.com/
for the same thing but for Unicode symbols.
Moreover Detexify's backend is written in Haskell for those who care. 😁
https://detexify.kirelabs.org/classify.html
It can suggest appropriate LaTeX symbols from a hand drawing of the desired one. They also link to
https://shapecatcher.com/
for the same thing but for Unicode symbols.
Moreover Detexify's backend is written in Haskell for those who care. 😁
detexify.kirelabs.org
Detexify LaTeX handwritten symbol recognition
An approach to simplify finding LaTeX symbols.
👍1🤡1
#prog #rust #article
Continuous benchmarking for rustls
Немного информации о бенчмаркинге в CI. Также несколько примеров, как это помогло принять информированные решения о внесении изменений. Автор немного рассказывает о высокоуровневой архитектуре инфраструктуры для бенчмаркинга, а также хвалит cachegrind:
When developing the continuous benchmarks, one of the biggest challenges was to make them as deterministic as possible. The cachegrind tool was immensely valuable for that purpose, because it allows counting CPU instructions and diffing the results between two runs. That way you can see exactly which functions had a different instruction count, helping identify the source of non-determinism. Some of them were obvious (e.g. a randomized hash map), others were tricky to find (e.g. non-deterministic buffer growth). Thanks for this marvellous piece of software! It made me feel like a wizard.
Continuous benchmarking for rustls
Немного информации о бенчмаркинге в CI. Также несколько примеров, как это помогло принять информированные решения о внесении изменений. Автор немного рассказывает о высокоуровневой архитектуре инфраструктуры для бенчмаркинга, а также хвалит cachegrind:
When developing the continuous benchmarks, one of the biggest challenges was to make them as deterministic as possible. The cachegrind tool was immensely valuable for that purpose, because it allows counting CPU instructions and diffing the results between two runs. That way you can see exactly which functions had a different instruction count, helping identify the source of non-determinism. Some of them were obvious (e.g. a randomized hash map), others were tricky to find (e.g. non-deterministic buffer growth). Thanks for this marvellous piece of software! It made me feel like a wizard.
Adolfo Ochagavía
Continuous benchmarking for rustls
Last December, I completed a half-year project to develop a continuous benchmarking system for the popular rustls library. My work was financed by ISRG, the makers of Let’s Encrypt, who are interested in rustls as a memory safe alternative to OpenSSL. The…
👍4
Блог*
Допустим, я организую в Ереване встречу с подписчиками
Что ж, попробуем иначе. Пусть встреча будет в... Пятницу. Время — 20:00. Место то же, Vol. 1
Vol. 1 · 67 Yeznik Koghbatsi St, Yerevan 0002, Armenia
★★★★★ · Coffee shop
🤡3😐2🤝2🔥1🍌1
#prog #rust #article #amazingopensource
Automating Cargo project configuration using cargo-wizard
TL;DR: I created a Cargo subcommand called cargo-wizard that simplifies the configuration of Cargo projects for maximum runtime performance, fastest compilation time or minimal binary size.
Не смотря на то, что способы настройки проектов на cargo для перечисленных целей известны, на практике их применение затруднено:
1) О них надо знать. Документация cargo хоть и вполне хорошая, но очень уж обширная, и там есть не вся информация для достижения этих целей.
2) Их надо применить. Не то чтобы это само по себе было сложно, но для этого нужно прописывать конфигурацию в разных секциях Cargo.toml, а значимый эффект они зачастую дают в комплексе.
Kobzol создал инструмент для того, чтобы по возможности решить обе проблемы. Использование одного инструменты позволяет перечислить все нужные настройки в одном месте, а также применить их к целому workspace одним махом. При этом у cargo wizard есть и более вдумчивый режим, который позволяет предварительно посмотреть все вносимые изменения и настроить индивидуально каждое из них.
Automating Cargo project configuration using cargo-wizard
TL;DR: I created a Cargo subcommand called cargo-wizard that simplifies the configuration of Cargo projects for maximum runtime performance, fastest compilation time or minimal binary size.
Не смотря на то, что способы настройки проектов на cargo для перечисленных целей известны, на практике их применение затруднено:
1) О них надо знать. Документация cargo хоть и вполне хорошая, но очень уж обширная, и там есть не вся информация для достижения этих целей.
2) Их надо применить. Не то чтобы это само по себе было сложно, но для этого нужно прописывать конфигурацию в разных секциях Cargo.toml, а значимый эффект они зачастую дают в комплексе.
Kobzol создал инструмент для того, чтобы по возможности решить обе проблемы. Использование одного инструменты позволяет перечислить все нужные настройки в одном месте, а также применить их к целому workspace одним махом. При этом у cargo wizard есть и более вдумчивый режим, который позволяет предварительно посмотреть все вносимые изменения и настроить индивидуально каждое из них.
Kobzol’s blog
Automating Cargo project configuration using cargo-wizard
TL;DR: I created a Cargo subcommand called cargo-wizard that simplifies the configuration of Cargo projects for maximum runtime performance, fastest compilation time or minimal binary size.
👍5🔥3
Forwarded from someone's shitpost
если вдруг кто-то играет в Monster Hunter Now то вот вам промокод на Pink Paintball x1, Wander Orb x1 и DevilJho Scale x1:
8JNE5L46CPUAN
я сам про игру ничего не знаю, но промокод достался за наличие Discord Nitro
Link to post
8JNE5L46CPUAN
я сам про игру ничего не знаю, но промокод достался за наличие Discord Nitro
Link to post
#prog #article
Text Buffer Reimplementation
Статья про основную структуру данных в текстовом редакторе VSCode (от 23 марта 2018 года, поэтому некоторые детали могут быть неактуальны). До внесения изменений в редакторе использовался line buffer (массив строк), который, понятное дело, имел печальную производительность на больших файлах.
Новая структура данных, основанная на piece table, получилась значительно быстрее старой на большинстве реалистичных юзкейсов. Трюки вполне ожидаемые: по возможности плоские данные, использование индексов вместо реальной конкатенации, использование сбалансированных двоичных деревьев для понижения сложности операций с линейной до логарифмической.
Интересно, что новая реализация написана целиком на Typescript. Как пишет автор:
Why not native?
I promised at the beginning that I would get back to this question.
TL;DR: We tried. It didn't work out for us.
Выгоды от возможной реализации текстового буфера в нативном коде перекрывались высокой стоимостью вызовов с переходом через границу FFI. Потенциальное спользование наивных строк осложнялось тем, что это означало бы завязку на детали реализации JS-движка, а конкретно у V8 эти внутренние строковые типы ещё и не потокобезопасны.
Text Buffer Reimplementation
Статья про основную структуру данных в текстовом редакторе VSCode (от 23 марта 2018 года, поэтому некоторые детали могут быть неактуальны). До внесения изменений в редакторе использовался line buffer (массив строк), который, понятное дело, имел печальную производительность на больших файлах.
Новая структура данных, основанная на piece table, получилась значительно быстрее старой на большинстве реалистичных юзкейсов. Трюки вполне ожидаемые: по возможности плоские данные, использование индексов вместо реальной конкатенации, использование сбалансированных двоичных деревьев для понижения сложности операций с линейной до логарифмической.
Интересно, что новая реализация написана целиком на Typescript. Как пишет автор:
Why not native?
I promised at the beginning that I would get back to this question.
TL;DR: We tried. It didn't work out for us.
Выгоды от возможной реализации текстового буфера в нативном коде перекрывались высокой стоимостью вызовов с переходом через границу FFI. Потенциальное спользование наивных строк осложнялось тем, что это означало бы завязку на детали реализации JS-движка, а конкретно у V8 эти внутренние строковые типы ещё и не потокобезопасны.
Visualstudio
Text Buffer Reimplementation
Text Buffer Reimplementation in the Visual Studio Code/Monaco editor
🤔2❤🔥1
Forwarded from Neural Machine
Я уверен, что мой ребенок вырастет замечательным человеком, если не родится.
👍4💩3
Блог*
Что ж, попробуем иначе. Пусть встреча будет в... Пятницу. Время — 20:00. Место то же, Vol. 1
Напоминаю про встречу завтра
🤡2🫡2❤1