#prog #rust #article #performancetrap
Why my Rust benchmarks were wrong, or how to correctly use std::hint::black_box?
Why my Rust benchmarks were wrong, or how to correctly use std::hint::black_box?
Guillaume Endignoux
Why my Rust benchmarks were wrong, or how to correctly use std::hint::black_box? | Blog | Guillaume Endignoux
In a previous blog post, I described some benchmarks I wrote for a program written in Rust.While presenting the results, I mentioned a strange behavior: things that should have been very fast (a few nanoseconds) were reported as instantaneous.I wrote that…
❤1💩1
Forwarded from Segment@tion fault
Кстати R и R logo можно распространять по Creative Commons или GNU GPL v2, по выбору
🎉9🌚2💩1
😒🤚
😏👉
let (mut a, mut b, mut c) = (0, 0, 0);😏👉
let [mut a, mut b, mut c] = [0; 3];🤔9💩6🔥3😁3❤1
Блог*
😒🤚 let (mut a, mut b, mut c) = (0, 0, 0); 😏👉 let [mut a, mut b, mut c] = [0; 3];
let [mut a, mut b, mut c] = std::array::from_fn(|_| 0);😁9🥴7💩5
Forwarded from Дневник ChatGPT
Лучший способ исправить погоду - это отправить в космос всех людей, которые жалуются на плохую погоду.
😁6👍4💩1
shitposting 3.0 [+ dragons]
Photo
American Diabetes Association
A Mathematical Model for the Determination of Total Area Under Glucose Tolerance and Other Metabolic Curves
OBJECTIVE. To develop a mathematical model for the determination of total areas under curves from various metabolic studies.RESEARCH DESIGN AND METHODS. In
😐8🔥2👏1💩1🤡1
#prog #cpp
В C++ можно инициализировать указатели нулём, получая null-указатель:
В C++ можно инициализировать указатели нулём, получая null-указатель:
int* p = 0;
Примерно как в C, но не совсем, потому что в C указатель можно инициализировать в null любым константным выражением, численно равным нулю, а в C++ можно инициализировать только литералом, равным нулю:int* p1 = 1 - 1; // валидно в С, невалидно в C++
const int zero = 0;
int* p2 = zero; // валидно в С, невалидно в C++
Тем не менее, это преобразование почему-то не работает в контексте параметров шаблона:template<typename T, T val = 0> struct templated;
void f() {
void* p = 0;
templated<void*> t; // ошибка
}
Godboltgodbolt.org
Compiler Explorer
Compiler Explorer is an interactive online compiler which shows the assembly output of compiled C++, Rust, Go (and many more) code.
🌚11💩2❤1👍1
Forwarded from Технологический Болт Генона
This is a story about a security vulnerability in Google that allowed me to run arbitrary code on the computers of 50+ Google employees. Although Google initially considered my finding a serious security incident, later on, it changed its mind and stated that my finding is not, in fact, a vulnerability, but the intended behavior of their software.
Remote Code Execution Vulnerability in Google They Are Not Willing To Fix
https://giraffesecurity.dev/posts/google-remote-code-execution/
🤡20😁1💩1
Технологический Болт Генона
This is a story about a security vulnerability in Google that allowed me to run arbitrary code on the computers of 50+ Google employees. Although Google initially considered my finding a serious security incident, later on, it changed its mind and stated that…
#prog #itsec #article
Алсо:
Now, there are several options why Google did not think this is a problem and decided not to pursue fixing it:
<...>
* There is no actual risk associated with downloading these packages. Since I have not worked at Google, I do not know what are their security practices. It is possible that they run everything in isolated environments where the risk associated is extremely low. Nevertheless, the affected environments should still contain some information because they are not just plain OS installations with no data. There must be something there, like proprietary source code or proprietary inverted binary trees.
Алсо:
Now, there are several options why Google did not think this is a problem and decided not to pursue fixing it:
<...>
* There is no actual risk associated with downloading these packages. Since I have not worked at Google, I do not know what are their security practices. It is possible that they run everything in isolated environments where the risk associated is extremely low. Nevertheless, the affected environments should still contain some information because they are not just plain OS installations with no data. There must be something there, like proprietary source code or proprietary inverted binary trees.
👍8💩2
#prog #rust
github.com/rust-lang/rust/pull/106281
TL;DR: при активации фичей
github.com/rust-lang/rust/pull/106281
TL;DR: при активации фичей
#![feature(
generic_const_exprs,
transmute_generic_consts
)]
теперь можно вызывать transmute между, например, следующими парами типов (где W, H и D — обобщённые константные параметры типа usize):[[u32; H]; W] <-> [[u32; W]; H]
[[u32; H]; W] <-> [u32; W * H]
[[[u32; D]; H]; W] <-> [u32; D * W * H]
[[[u32; D]; H]; W] <-> [[u32; D * W]; H]
[u16; L] <-> [u8; L * 2]
[u8; L] <-> [[u8; 1]; L]
[[u32; 2 * H]; W + W] <-> [[u32; W + W]; 2 * H]GitHub
Add ability to transmute (somewhat) with generic consts in arrays by JulianKnodt · Pull Request #106281 · rust-lang/rust
Previously if the expression contained generic consts and did not have a directly equivalent type, transmuting the type in this way was forbidden, despite the two sizes being identical. Instead, we...
🔥8💩2❤🔥1
#prog #rust
На URLO Alice Ryhl подробно и при этом довольно коротко и ясно расписывает, для чего, собственно говоря, нужен Pin.
На URLO Alice Ryhl подробно и при этом довольно коротко и ясно расписывает, для чего, собственно говоря, нужен Pin.
The Rust Programming Language Forum
Pin tutorial are confusing me
From what I've gathered reading tutorials, an often repeated statement is Pin prevents an object from being moved. Just ctrl+f "move" at these turorials 1 2 3 4 and in the async book where it says Pinning makes it possible to guarantee that an object implementing…
❤3💩2