Or "--ignore-other-worktrees" for "git switch". This leaves things in a weird state though, as modifying the branch from one of the worktrees will effectively change the ref the other is pointing to, but won't update…
How so? It's replacing multiple enum variants, but just one enum, "enum Value". (also; if anything, the title is implying the exact opposite of "Rust compiler was able to optimize ...", "Replacing a Rust [...] with…
Unless the highly-optimized parts are wrapped by an interface that looks similar to the non-optimized version. In the case of a tagged object in Rust, depending on how well the compiler can wrangle through it, you might…
> That always seemed annoying to me. They couldn't allocate 5 more bits somewhere to let the decompressor autodetect longer window sizes? I believe this is just to prevent the decompressor from arbitrarily blowing up…
Heh, you can kinda think of MTE as ASan except instead of a small range of a guaranteed redzone around heap pointers, it's a massive `2^56 * (random number, ≥0, on average 15)`-byte "redzone" (and some padding up to a…
[delayed]
You can still tell actually - jj writes a change-id in the git commit object header, which remains there as it's pushed around. It's just typically not made visible by regular things. (I wonder what other random garbage…
The things/concepts that those screenshots have that infiniminer (a voxel game made before minecraft) doesn't is... grass, trees, glass. I hate to bring it to you, but minecraft didn't invent those. And it certainly…
That is quite a good bit more evenly-spread (the "..." is 5159 instrs). Wonder what's up with bit 21; if whatever uses it so much is repositionable (and not an aarch64-specific thing), could save like 2KB on x86-64 via…
Some stats on an aarch64 binary of my current main project (1.6MB .text, 6600 symbols as per whatever "nm the-binary | wc -l" includes, from "objdump -d the-binary"): 19546 /tbn?z/ 18029 /tbn?z.*, #0x0/ (but this…
Both clang and gcc do actually generate TBZ/TBNZ for checking a bool: https://godbolt.org/z/K6evhaxGT
Some more: > The spec says that bit must be zero, and yet no encoding uses the space opened up by that bit being one. The spec says "the code points with shamt[5]=1 are designated for custom extensions.", so the space…
Random minor-ish notes: - A big problem with extension detection RISC-V has is that there's no central authority mandating vendors to not overlap things (obviously, given RISC-V being an open standard), so basic…
Float divides are still pretty expensive; 8-10 cycles of latency on modern hardware, integer divides being 8-20 cycles. (on Apple M1 both are 8-10 cycles; int div is much worse on older x86 hw) Integer multiply is also…
> Sure, and that's basically what I was wondering about with respect to "can't define it" being shorthand for something else Eh, I'd say it's still the same thing; can't define a sanitizer for it if what you define…
> it's still a counterexample for "you can't define it because it means sanitizers can't warn for it" Sure, technically you can write a sanitizer for anything. It just becomes less a "sanitizer" you can always recommend…
> -fsanitize=unsigned-integer-overflow Of course, -fsanitize=unsigned-integer-overflow isn't enabled by default, and few people use it (github code search gives 6K results for that, compared to 175K for…
C23 specifies that signed integers must be two's complement, but still leaves signed arithmetic overflow as undefined behavior.
There's no autovectorization there; scalar f64-s just are always stored in xmm registers. And the bounds check is still there.
Compress patterns aren't recognized by any open-source compiler autovectorizer as far as I'm aware of. (I think intel's proprietary C/C++ compiler can?)
aarch64 has a CPU mode, DIT (Data Independent Timing), specifically for allowing software to request all fancy value prediction stuff to be disabled for the duration of processing of sensitive data. (doesn't help when…
While I agree with the comment being overly-praise-y, this is complexity that any multithreaded language with mutability and reasonable sanity/safety desires (but without intrusive compile-time rules a la Rust) has;…
A quick test (C, clang) gives me that a binary depending on 1000 shared libraries, each containing a single function returning an integer, with a main function summing up the results of all those functions, takes ~270ms…
Unaligned loads/stores aren't super bad; if still within a cacheline, there's zero penalty, and on crossing cachelines it's alike two ops (except page crossing, which is more bad). So, for 32B loads/stores and 64B…
Where I eat doesn't have a "WC" sign, walls separating it from public areas, and a toilet present. Codebergs private repos have a clear "private" label, infrastructure for making them, acknowledgement and rules for it…
Or "--ignore-other-worktrees" for "git switch". This leaves things in a weird state though, as modifying the branch from one of the worktrees will effectively change the ref the other is pointing to, but won't update…
How so? It's replacing multiple enum variants, but just one enum, "enum Value". (also; if anything, the title is implying the exact opposite of "Rust compiler was able to optimize ...", "Replacing a Rust [...] with…
Unless the highly-optimized parts are wrapped by an interface that looks similar to the non-optimized version. In the case of a tagged object in Rust, depending on how well the compiler can wrangle through it, you might…
> That always seemed annoying to me. They couldn't allocate 5 more bits somewhere to let the decompressor autodetect longer window sizes? I believe this is just to prevent the decompressor from arbitrarily blowing up…
Heh, you can kinda think of MTE as ASan except instead of a small range of a guaranteed redzone around heap pointers, it's a massive `2^56 * (random number, ≥0, on average 15)`-byte "redzone" (and some padding up to a…
[delayed]
You can still tell actually - jj writes a change-id in the git commit object header, which remains there as it's pushed around. It's just typically not made visible by regular things. (I wonder what other random garbage…
The things/concepts that those screenshots have that infiniminer (a voxel game made before minecraft) doesn't is... grass, trees, glass. I hate to bring it to you, but minecraft didn't invent those. And it certainly…
That is quite a good bit more evenly-spread (the "..." is 5159 instrs). Wonder what's up with bit 21; if whatever uses it so much is repositionable (and not an aarch64-specific thing), could save like 2KB on x86-64 via…
Some stats on an aarch64 binary of my current main project (1.6MB .text, 6600 symbols as per whatever "nm the-binary | wc -l" includes, from "objdump -d the-binary"): 19546 /tbn?z/ 18029 /tbn?z.*, #0x0/ (but this…
Both clang and gcc do actually generate TBZ/TBNZ for checking a bool: https://godbolt.org/z/K6evhaxGT
Some more: > The spec says that bit must be zero, and yet no encoding uses the space opened up by that bit being one. The spec says "the code points with shamt[5]=1 are designated for custom extensions.", so the space…
Random minor-ish notes: - A big problem with extension detection RISC-V has is that there's no central authority mandating vendors to not overlap things (obviously, given RISC-V being an open standard), so basic…
Float divides are still pretty expensive; 8-10 cycles of latency on modern hardware, integer divides being 8-20 cycles. (on Apple M1 both are 8-10 cycles; int div is much worse on older x86 hw) Integer multiply is also…
> Sure, and that's basically what I was wondering about with respect to "can't define it" being shorthand for something else Eh, I'd say it's still the same thing; can't define a sanitizer for it if what you define…
> it's still a counterexample for "you can't define it because it means sanitizers can't warn for it" Sure, technically you can write a sanitizer for anything. It just becomes less a "sanitizer" you can always recommend…
> -fsanitize=unsigned-integer-overflow Of course, -fsanitize=unsigned-integer-overflow isn't enabled by default, and few people use it (github code search gives 6K results for that, compared to 175K for…
C23 specifies that signed integers must be two's complement, but still leaves signed arithmetic overflow as undefined behavior.
There's no autovectorization there; scalar f64-s just are always stored in xmm registers. And the bounds check is still there.
Compress patterns aren't recognized by any open-source compiler autovectorizer as far as I'm aware of. (I think intel's proprietary C/C++ compiler can?)
aarch64 has a CPU mode, DIT (Data Independent Timing), specifically for allowing software to request all fancy value prediction stuff to be disabled for the duration of processing of sensitive data. (doesn't help when…
While I agree with the comment being overly-praise-y, this is complexity that any multithreaded language with mutability and reasonable sanity/safety desires (but without intrusive compile-time rules a la Rust) has;…
A quick test (C, clang) gives me that a binary depending on 1000 shared libraries, each containing a single function returning an integer, with a main function summing up the results of all those functions, takes ~270ms…
Unaligned loads/stores aren't super bad; if still within a cacheline, there's zero penalty, and on crossing cachelines it's alike two ops (except page crossing, which is more bad). So, for 32B loads/stores and 64B…
Where I eat doesn't have a "WC" sign, walls separating it from public areas, and a toilet present. Codebergs private repos have a clear "private" label, infrastructure for making them, acknowledgement and rules for it…