#prog #c #article
Реализация простых кооперативных потоков на C с использованием setjmp/longjmp и небольшого количества ассемблера.
Оригинал
Перевод на Хабре
Реализация простых кооперативных потоков на C с использованием setjmp/longjmp и небольшого количества ассемблера.
Оригинал
Перевод на Хабре
Stephen Brennan's Blog
Implementing simple cooperative threads in C - Stephen Brennan
Using setjmp(), longjmp(), and assembly to implement a simple threading system
in C!
in C!
Forwarded from мне не нравится реальность (вафель 🧇)
*Мысли вслух* функция
is_sized
, проверяющая является ли тип Sized
, пишется тривиально:fn is_sized<T: ?Sized>() -> bool {
mem::size_of::<*const T>() == mem::size_of::<usize>()
}
#prog #rust
cargo-llvm-lines — инструмент для подсчёта количества строк LLVM IR, сгенерированных для каждой функции в программе, с учётом процентного вклада и дубликатов. Автор — ожидаемоТолян dtolnay
cargo-llvm-lines — инструмент для подсчёта количества строк LLVM IR, сгенерированных для каждой функции в программе, с учётом процентного вклада и дубликатов. Автор — ожидаемо
GitHub
GitHub - dtolnay/cargo-llvm-lines: Count lines of LLVM IR per generic function
Count lines of LLVM IR per generic function. Contribute to dtolnay/cargo-llvm-lines development by creating an account on GitHub.
Блог*
#prog #rust cargo-llvm-lines — инструмент для подсчёта количества строк LLVM IR, сгенерированных для каждой функции в программе, с учётом процентного вклада и дубликатов. Автор — ожидаемо Толян dtolnay
Этот инструмент привёл в итоге к созданию этого PR, который вынес не зависящую от типа часть обобщённого кода в отдельную функцию и таким образом привёл к заметному улучшению производительности компиляции
GitHub
Make `RawVec::grow` mostly non-generic. by nnethercote · Pull Request #72013 · rust-lang/rust
cargo-llvm-lines shows that, in various benchmarks, RawVec::grow is
instantiated 10s or 100s of times and accounts for 1-8% of lines of
generated LLVM IR.
This commit moves most of RawVec::grow int...
instantiated 10s or 100s of times and accounts for 1-8% of lines of
generated LLVM IR.
This commit moves most of RawVec::grow int...
Блог*
#моё #prog #rust В крейте time есть структура Date с методом format, который возвращает String со датой, отформатированной согласно переданному формату. Выглядит это примерно так (пример из документации): assert_eq!(date!(2019-01-02).format("%Y-%m-%d"),…
#prog #rust #article
Аналогичный подход для создания аналога println/printf с проверками во время компиляции.
willcrichton.net/notes/type-safe-printf/
Аналогичный подход для создания аналога println/printf с проверками во время компиляции.
willcrichton.net/notes/type-safe-printf/
willcrichton.net
Implementing a Type-safe printf in Rust | Will Crichton
I show how to use heterogeneous lists and traits to implement a type-safe printf in Rust. These mechanisms can ensure that two variadic argument lists share important properties, like the number of format string holes matches the number of printf arguments.
#prog #rust #embedded #rustlib #amazingopensource
Исторически одной из проблем на пути использования Rust в встраиваемых устройствах был тот факт, что стандартная машинерия для форматирования сильно раздувает размер результирующего бинарника. Это особенно неприятно в силу того, что стандартная паника использует эту машинерию. Библиотека defmt от Ferrous System нацелена на решение это проблемы: она позволяет использовать форматирование (в том числе отложенное) и паники, сохраняя при этом маленький размер бинарника.
Исторически одной из проблем на пути использования Rust в встраиваемых устройствах был тот факт, что стандартная машинерия для форматирования сильно раздувает размер результирующего бинарника. Это особенно неприятно в силу того, что стандартная паника использует эту машинерию. Библиотека defmt от Ferrous System нацелена на решение это проблемы: она позволяет использовать форматирование (в том числе отложенное) и паники, сохраняя при этом маленький размер бинарника.
GitHub
GitHub - knurling-rs/defmt: Efficient, deferred formatting for logging on embedded systems
Efficient, deferred formatting for logging on embedded systems - knurling-rs/defmt
Блог*
#prog #моё Сегодня я хотел бы рассказать о возможных способах реализации полиморфизма в языках программирования и о том, какие выгоды и издержки они имеют. Disclaimer: я не особо шарю, так что могу наговорить глупостей. Полиморфизм — это свойство кода обрабатывать…
#prog #article
Разбор различных способов реализации полиморфизма, более обстоятельный и глубокий, чем у меня. Заодно показываются модели, которые пока что не получили должной реализации.
thume.ca/2019/07/14/a-tour-of-metaprogramming-models-for-generics/
Разбор различных способов реализации полиморфизма, более обстоятельный и глубокий, чем у меня. Заодно показываются модели, которые пока что не получили должной реализации.
thume.ca/2019/07/14/a-tour-of-metaprogramming-models-for-generics/
thume.ca
Models of Generics and Metaprogramming: Go, Rust, Swift, D and More - Tristan Hume
#prog
Мысли по поводу лучшего стабильного ABI, чем сишный. В виде треда в твиттере, сорян, в более удобоваримом формате нет.
twitter.com/bitshiftmask/status/1286411475658178561
Мысли по поводу лучшего стабильного ABI, чем сишный. В виде треда в твиттере, сорян, в более удобоваримом формате нет.
twitter.com/bitshiftmask/status/1286411475658178561
Twitter
james.poll_on()?;
Here's a rant (opinion?) that I'll turn in to a blog post soon. I think Rust should have a third ABI, not repr(C) or repr(Rust), and it should be used to slowly phase out the C ABI for a better one. Want to hear more of my unreasonable thoughts about ABIs?…
#prog #article
"So, although I don’t have any data to back this up, I strongly suspect that experienced programmers rarely spend time posting about how they program because they just don’t think it’s anything special.
But they should! It may not be special, but it’s necessary, and if good programmers don’t start posting about how to do good programming, we’ll never get out of this nasty place where everyone has to go through six years of writing horrible object-oriented programs before they realize they’re wasting their time."
caseymuratori.com/blog_0015
"So, although I don’t have any data to back this up, I strongly suspect that experienced programmers rarely spend time posting about how they program because they just don’t think it’s anything special.
But they should! It may not be special, but it’s necessary, and if good programmers don’t start posting about how to do good programming, we’ll never get out of this nasty place where everyone has to go through six years of writing horrible object-oriented programs before they realize they’re wasting their time."
caseymuratori.com/blog_0015
Semantic Compression
An introduction to the idea that code should be approached with a mindset towards compressing it semantically, rather than orienting it around objects.
#prog #article
Дежурное напоминание, что S в IoT означает Security.
habr.com/ru/company/ruvds/blog/517638/
Дежурное напоминание, что S в IoT означает Security.
habr.com/ru/company/ruvds/blog/517638/
Хабр
Shodan — темный близнец Google
Источник S in IoT stands for SecurityПро Shodan уже не раз писали, в том числе и здесь. Я хочу предложить еще раз пробежаться по возможностям этого замечательного инструмента и принципам его...
#prog #rust #article
Буквально мои мысли читает. TL;DR: если у вас есть
matklad.github.io/2020/08/12/who-builds-the-builder.html
Буквально мои мысли читает. TL;DR: если у вас есть
Foo
и FooBuilder
, добавьте метод Foo::builder
.matklad.github.io/2020/08/12/who-builds-the-builder.html
matklad.github.io
Who Builds the Builder?
This is a short note on the builder pattern, or, rather, on the builder method pattern.