#prog #rust #parsing #article
Традиционные парсеры формальных языков обычно прекращают работа сразу после того, как встретят первую ошибку. Для использования в IDE такие парсеры не подходят: пользователь ожидает, что различные фичи IDE (подсветка синтаксиса, автодополнение, переименование) будут работать и в том случае, когда код ещё не дописан до той степени, что он проходит синтаксическую проверку. Для таких целей нужны парсеры, которые в состоянии восстанавливаться после ошибок и продолжать разбор текста.
В этой статье рассказывается о консервативном расширении PEG, добавляющем семантику восстановления после ошибки разбора. Чуда не случилось в том смысле, что много чего надо писать руками, но авторам удалось побить ANTLR — как по качеству сообщений об ошибках, так и по быстроте работы.
А вот также статья, адаптирующая этот подход к парсер-комбинаторам (конкретно к nom)
Традиционные парсеры формальных языков обычно прекращают работа сразу после того, как встретят первую ошибку. Для использования в IDE такие парсеры не подходят: пользователь ожидает, что различные фичи IDE (подсветка синтаксиса, автодополнение, переименование) будут работать и в том случае, когда код ещё не дописан до той степени, что он проходит синтаксическую проверку. Для таких целей нужны парсеры, которые в состоянии восстанавливаться после ошибок и продолжать разбор текста.
В этой статье рассказывается о консервативном расширении PEG, добавляющем семантику восстановления после ошибки разбора. Чуда не случилось в том смысле, что много чего надо писать руками, но авторам удалось побить ANTLR — как по качеству сообщений об ошибках, так и по быстроте работы.
А вот также статья, адаптирующая этот подход к парсер-комбинаторам (конкретно к nom)
#prog #rust #article
Как заставить программы на Rust работать с длинными путями на Windows.
gal.hagever.com/posts/windows-long-paths-in-rust/
Как заставить программы на Rust работать с длинными путями на Windows.
gal.hagever.com/posts/windows-long-paths-in-rust/
Hagever
Using Long Paths in Windows and Rust
There's a simple solution for using long paths in Windows binaries
#prog #rust #successstory
"What would our ideal language look like for rewriting our LIQUID platform? Since a key feature of LIQUID is its speed and low latency, performance and the lack of a garbage collector were an absolute must. We also needed broad cross-platform support, as we want to run LIQUID everywhere, from iOS, Android, Mac, Windows, Linux, and even embedded devices. This hypothetical language would need C interoperability with no performance overhead so that we could integrate with existing components and dip into raw memory access when performance demanded it. Ideally, this language would also be safer than C/C++, helping us to prevent common programming errors at compile time. It turns out there is a language that does all that and more…"
astropad.com/why-rust/
"What would our ideal language look like for rewriting our LIQUID platform? Since a key feature of LIQUID is its speed and low latency, performance and the lack of a garbage collector were an absolute must. We also needed broad cross-platform support, as we want to run LIQUID everywhere, from iOS, Android, Mac, Windows, Linux, and even embedded devices. This hypothetical language would need C interoperability with no performance overhead so that we could integrate with existing components and dip into raw memory access when performance demanded it. Ideally, this language would also be safer than C/C++, helping us to prevent common programming errors at compile time. It turns out there is a language that does all that and more…"
astropad.com/why-rust/
Astropad
Why We're Bringing Astropad Cross-Platform with Rust
Here at Astropad, we’ve kept a close eye on the shift away from Apple, knowing that Windows would be a big part of our company’s future.
#prog #rust #successstory
"With all of the optimizations, you’d expect Condure to run pretty well. Early observations confirm this to be true! We’ll publish more detailed benchmarks in the future, but here are some standout points:
* We were able to establish 1 million client connections to a single instance.
* We load tested ~16k HTTP requests/second using a single ZeroMQ handler.
* We are seeing a 90% reduction in CPU usage compared to Mongrel2 on our production systems."
blog.fanout.io/2020/08/11/rewriting-pushpins-connection-manager-in-rust/
"With all of the optimizations, you’d expect Condure to run pretty well. Early observations confirm this to be true! We’ll publish more detailed benchmarks in the future, but here are some standout points:
* We were able to establish 1 million client connections to a single instance.
* We load tested ~16k HTTP requests/second using a single ZeroMQ handler.
* We are seeing a 90% reduction in CPU usage compared to Mongrel2 on our production systems."
blog.fanout.io/2020/08/11/rewriting-pushpins-connection-manager-in-rust/
#prog #article
Разбор довольно старой статьи с описанием различных схем реализации структур данных, хранящих большое количество таймеров. Спойлер: иерархичность рулит! Причём не только с таймерами, но и с аллокациями и битовыми множествами.
Разбор довольно старой статьи с описанием различных схем реализации структур данных, хранящих большое количество таймеров. Спойлер: иерархичность рулит! Причём не только с таймерами, но и с аллокациями и битовыми множествами.
Forwarded from мне не нравится реальность (вафель 🧇💛)
#prog #cpp #article
Разбор атомарных операций и различных атомарных порядков обращения к памяти. Рассказано о C++, но полезно и для тех, кто пишет на Rust, потому что тот адаптирует модель памяти C++.
habr.com/ru/post/517918/
Разбор атомарных операций и различных атомарных порядков обращения к памяти. Рассказано о C++, но полезно и для тех, кто пишет на Rust, потому что тот адаптирует модель памяти C++.
habr.com/ru/post/517918/
Хабр
std::atomic. Модель памяти C++ в примерах
Для написания эффективных и корректных многопоточных приложений очень важно знать какие существуют механизмы синхронизации памяти между потоками исполнения, какие гарантии предоставляют элементы...
#prog #rust #article
Статья в двух частях касательно применений обобщённых типов Rust при написании драйверов флеш-памяти двух различных чипов — первая, вторая. В ней показывается, как выделение общих абстракций может сильно снизить количество кода и, что немаловажно, вероятность совершения ошибки.
В качестве бонуса: статья от Bluefruit software, компании, уже 20 лет разрабатывающей софт для встраиваемых систем, в которой работает автор, в которой оценивается степень пригодности Rust для встраиваемых систем.
Статья в двух частях касательно применений обобщённых типов Rust при написании драйверов флеш-памяти двух различных чипов — первая, вторая. В ней показывается, как выделение общих абстракций может сильно снизить количество кода и, что немаловажно, вероятность совершения ошибки.
В качестве бонуса: статья от Bluefruit software, компании, уже 20 лет разрабатывающей софт для встраиваемых систем, в которой работает автор, в которой оценивается степень пригодности Rust для встраиваемых систем.
www.ecorax.net
eCorax - As above, so below: Bare metal Rust generics 1/2
Writing two flash drivers starting from an abstraction.