#prog #rust
Search-based code navigation for Rust projects
Github code navigation теперь и для Rust! Правда, переходов к определению для типов пока нету.
Search-based code navigation for Rust projects
Github code navigation теперь и для Rust! Правда, переходов к определению для типов пока нету.
🔥6🎉2
#prog
What is the ideal growth rate for a dynamically allocated array?
Все ответы заслуживают внимания, но в особенности этот.
What is the ideal growth rate for a dynamically allocated array?
Все ответы заслуживают внимания, но в особенности этот.
Stack Overflow
What is the ideal growth rate for a dynamically allocated array?
C++ has std::vector and Java has ArrayList, and many other languages have their own form of dynamically allocated array. When a dynamic array runs out of space, it gets reallocated into a larger ar...
#prog #rust #rustlib
enum_delegate — библиотека для реализации трейта для enum в терминах реализаций трейта для его вариантов. Позволяет легко свести динамический полиморфизм к статическому, когда набор типов, реализующих трейт, ограничен и известен наперёд.
Comparison with enum_dispatch
🟡 Performance: the same. This is expected, since they generate very similar code. (See
✅ Works across crates. Due to technical limitations of how
✅ Better errors. Again due to technical limitations, in some cases
✅ Associated types.
enum_delegate — библиотека для реализации трейта для enum в терминах реализаций трейта для его вариантов. Позволяет легко свести динамический полиморфизм к статическому, когда набор типов, реализующих трейт, ограничен и известен наперёд.
#[enum_delegate::register]
trait SayHello {
fn say_hello(&self, name: &str) -> String;
}
struct Arthur;
impl SayHello for Arthur {...}
struct Pablo;
impl SayHello for Pablo {...}
#[enum_delegate::implement(SayHello)]
enum People {
Arthur(Arthur),
Pablo(Pablo),
}
/* разворачивается во что-то вроде:
impl SayHello for People {
fn say_hello(&self, name: &str) {
match self {
Self::Arthur(x) => x.say_hello(name),
Self::Pablo(x) => x.say_hello(name),
}
}
}
а также
impl From<Arthur> for People { ... }
impl TryFrom<People> for Arthur { ... }
*/
Вы, вероятно, спросите, а зачем это, когда есть enum_dispatch. Как пишет автор:Comparison with enum_dispatch
🟡 Performance: the same. This is expected, since they generate very similar code. (See
benchmarks in the repo.)✅ Works across crates. Due to technical limitations of how
enum_dispatch is implemented, it can only be used if both the trait and enum are in the same crate. enum_delegate, however, allows you to put them in separate crates. (See cross_crate_example in the repo.)✅ Better errors. Again due to technical limitations, in some cases
enum_dispatch will quietly fail. With enum_delegate, your code will either succeed, or fail to compile. Admittedly, some of the error messages are not perfect, but at least you'll know something's up. (See tests_error in the repo.)✅ Associated types.
enum_delegate has some support for associated types, but enum_dispatch doesn't. (See examples in the repo.)❤7👍1
#prog #rust #rustlib #article #amazingopensource
From Fuzzing to Proof: Using Kani with the Bolero Property-Testing Framework
bolero — fuzz and property testing front-end for Rust. Поддерживает несколько движков для прогона тестов: rand (да, это можно считать слабой формой фаззинга), hongfuzz, libfuzzer, AFL и kani (для символьного исполнения) — всё с унифицированным интерфейсом.
From Fuzzing to Proof: Using Kani with the Bolero Property-Testing Framework
bolero — fuzz and property testing front-end for Rust. Поддерживает несколько движков для прогона тестов: rand (да, это можно считать слабой формой фаззинга), hongfuzz, libfuzzer, AFL и kani (для символьного исполнения) — всё с унифицированным интерфейсом.
Kani Rust Verifier Blog
From Fuzzing to Proof: Using Kani with the Bolero Property-Testing Framework
Today we’re going to talk about how you can use fuzzing and verification in a unified framework, which is enabled by the integration of the Kani Rust Verifier in Bolero. Bolero is a property-testing framework that makes it easy for users to test a piece of…
❤3👍1🤔1
Machine, turn back now. The layers of this palace are not for your kind. Turn back, or you will be crossing the Will of God.
...
Your choice is made. As the righteous hand of The Father I shall rend you apart. And you will become inanimate once more.
...
Your choice is made. As the righteous hand of The Father I shall rend you apart. And you will become inanimate once more.
👍5👎3😐2
Forwarded from Denis Sexy IT 🤖
This media is not supported in your browser
VIEW IN TELEGRAM
Нашел самый полезный сайт в интернете – https://purrli.com/play.php
Он просто делает пур пур пурр, и будто у вас котик💻
Он просто делает пур пур пурр, и будто у вас котик
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9
Попробуй просто сменить формулировку! 🐼
Почувствуешь смену отношения самого к себе и другую, более положительную, реакцию людей вокруг 🤍
🖌️: comicsguys
#Поддержка
#МентальноеЗдоровье
Почувствуешь смену отношения самого к себе и другую, более положительную, реакцию людей вокруг 🤍
🖌️: comicsguys
#Поддержка
#МентальноеЗдоровье
👍7🤩4👎2
#prog #ml
Про применение машинного обучения в системе рекомендаций TikTok.
t.iss.one/cryptovalerii/341
(thanks @j_links)
Про применение машинного обучения в системе рекомендаций TikTok.
t.iss.one/cryptovalerii/341
(thanks @j_links)
Telegram
Время Валеры
Ходят слухи что у тик тока хорошие рекомендации контента.
Прочитал статью от пацанов из tik-tok Monolith: Real Time Recommendation System WithCollisionless Embedding Table. Как мы знаем, прочитать статью - задача посильная не каждому директору
Решают две…
Прочитал статью от пацанов из tik-tok Monolith: Real Time Recommendation System WithCollisionless Embedding Table. Как мы знаем, прочитать статью - задача посильная не каждому директору
Решают две…
#prog #go #article
Making a Go program 42% faster with a one character change
TL;DR: неявное глубокое копирование в горячем цикле, приводящее к утеканию значения в кучу.
(thanks @go_perf)
Making a Go program 42% faster with a one character change
TL;DR: неявное глубокое копирование в горячем цикле, приводящее к утеканию значения в кучу.
(thanks @go_perf)
Hmarr
Making a Go program run 1.7x faster with a one character change • Harry Marr
Harry Marr — Member of Technical Staff at Anthropic. Co-founded Dependabot, previously at GitHub, Monzo, and GoCardless.
#prog #rust
В стандартной библиотеке Rust есть модуль sync::mpsc, который содержит реализацию однонаправленного multiple producer single consumer канала. Если открыть документацию метода принимающей половины канала, Receiver::recv_timout, то можно увидеть раздел "Known issues" про возможность неожиданной паники при вызове метода, вкупе с кодом для надёжного воспроизведения этой проблемы. И сама документация, и сообщение при панике отсылают на соответствующее issue в репозитории Rust, которому, на минуточку, 5 лет.
Так как тулинг Rust позволяет легко задействовать сторонние зависимости, те, для кого эта проблема была важна, использовали сторонние реализации каналов. Стандартом де-факто стала библиотека crossbeam-channel. После того, как она получила широкое распространение, пошли разговоры о том, чтобы включить реализацию в std — и прецедент для такого уже был с заменой предыдущей реализации HashMap на реализацию из hashbrown. В феврале этого года такой MR был открыт — правда, реализация в силу различных причин была несколько видоизменена — и вот совсем недавно был влит!
Но это ещё не всё. Помимо фикса этого старого бага, crossbeam-channel также в некоторых аспектах превосходил реализацию в std. Главное — то, что, в отличие от варианта из std, это multiple producer multiple consumer канал. А это значит, что в ближайшем будущем mpmc-канал наверняка будет и в std!
В стандартной библиотеке Rust есть модуль sync::mpsc, который содержит реализацию однонаправленного multiple producer single consumer канала. Если открыть документацию метода принимающей половины канала, Receiver::recv_timout, то можно увидеть раздел "Known issues" про возможность неожиданной паники при вызове метода, вкупе с кодом для надёжного воспроизведения этой проблемы. И сама документация, и сообщение при панике отсылают на соответствующее issue в репозитории Rust, которому, на минуточку, 5 лет.
Так как тулинг Rust позволяет легко задействовать сторонние зависимости, те, для кого эта проблема была важна, использовали сторонние реализации каналов. Стандартом де-факто стала библиотека crossbeam-channel. После того, как она получила широкое распространение, пошли разговоры о том, чтобы включить реализацию в std — и прецедент для такого уже был с заменой предыдущей реализации HashMap на реализацию из hashbrown. В феврале этого года такой MR был открыт — правда, реализация в силу различных причин была несколько видоизменена — и вот совсем недавно был влит!
Но это ещё не всё. Помимо фикса этого старого бага, crossbeam-channel также в некоторых аспектах превосходил реализацию в std. Главное — то, что, в отличие от варианта из std, это multiple producer multiple consumer канал. А это значит, что в ближайшем будущем mpmc-канал наверняка будет и в std!
doc.rust-lang.org
std::sync::mpsc - Rust
Multi-producer, single-consumer FIFO queue communication primitives.
🔥12👍3🤔1
#prog #go линтер, который вообще-то должен быть частью компилятора.
github.com/GaijinEntertainment/go-exhaustruct
github.com/GaijinEntertainment/go-exhaustruct
GitHub
GitHub - GaijinEntertainment/go-exhaustruct: golang analyzer that finds structures with uninitialized fields
golang analyzer that finds structures with uninitialized fields - GaijinEntertainment/go-exhaustruct
👍6
#prog #rust #article
С одной стороны, многие из изложенных принципов справедливы и вне Rust. С другой, с некоторыми соображениями я не согласен.
Designing error types in Rust
С одной стороны, многие из изложенных принципов справедливы и вне Rust. С другой, с некоторыми соображениями я не согласен.
Designing error types in Rust
#prog #haskell #article
Why 'Functor' Doesn't Matter
Names can’t transmit meaning. They can transmit a pointer, though, which might point to some meaning. If that meaning isn’t the right meaning, then the recipient will misunderstand. <...>
Object Oriented Programming is littered with terrible names, precisely because they mislead and cause a false familiarity. Object, Class, Visitor, Factory, Command, Strategy, Interface, Adapter, Bridge, Composite. All of these are common English words with a relatively familiar understanding to them. And all of them are misleading.
Why 'Functor' Doesn't Matter
Names can’t transmit meaning. They can transmit a pointer, though, which might point to some meaning. If that meaning isn’t the right meaning, then the recipient will misunderstand. <...>
Object Oriented Programming is littered with terrible names, precisely because they mislead and cause a false familiarity. Object, Class, Visitor, Factory, Command, Strategy, Interface, Adapter, Bridge, Composite. All of these are common English words with a relatively familiar understanding to them. And all of them are misleading.
www.parsonsmatt.org
Why 'Functor' Doesn't Matter
Alternative, less click-baity title: Names Do Not Transmit Meaning
👍3
#prog #rust #article
Rust at scale: packages, crates, and modules
<...>The team learned that code organization that works just fine for relatively small projects might start dragging you down over time. In this article, we shall evaluate code organization options that Rust gives us and look at how to use them well.
В статье также есть доводы в пользу того, чтобы передавать логгеры и сборщики метрик явно
Rust at scale: packages, crates, and modules
<...>The team learned that code organization that works just fine for relatively small projects might start dragging you down over time. In this article, we shall evaluate code organization options that Rust gives us and look at how to use them well.
В статье также есть доводы в пользу того, чтобы передавать логгеры и сборщики метрик явно