user avatar
Aria Desires
@Gankra_
its me, the sapphic disaster who maintains your docs. trans woman, she/they, 30 (avatar: @dizzimitzi) on a sabbatical
montreal
Joined September 2009
  • Pinned
    user avatar
    Hey, I made a gallery of the things I've made while breaking Firefox's rendering code! Check it out! gankra.github.io/glitch/
  • user avatar
    omg whatsapp's webapp has a 4k sprite sheet because it's laid out diagonally
  • user avatar
    protip: you can replace "the behavior is undefined" in C++ standards with "I WILL cry"
    

Function arguments:

Each of the following applies to all arguments to functions defined in the C++ standard library, unless explicitly stated otherwise.

(1.1) If an argument to a function has an invalid value (such as a value outside the domain of the function or a pointer invalid for its intended use), I WILL cry.
    The expression a.swap(b), for containers a and b of a standard container type other than array, shall exchange the values of a and b without invoking any move, copy, or swap operations on the individual container elements. Lvalues of any Compare, Pred, or Hash types belonging to a and b shall be swappable and shall be exchanged by calling swap as described in 16.5.3.2. If allocator_traits<allocator_type>::propagate_on_container_swap::value is true, then lvalues of type allocator_type shall be swappable and the allocators of a and b shall also be exchanged by calling swap as described in 16.5.3.2. Otherwise, the allocators shall not be swapped, and I WILL cry unless a.get_allocator() == b.get_allocator(). Every iterator referring to an element in one container before the swap shall refer to the same element in the other container after the swap. It is unspecified whether an iterator with value a.end() before the swap will have value b.end() after the swap.
  • user avatar
    zelda speedrunners are now at the point where they're attacking the memory allocator to Go Fast -- repeatedly leaking memory to get the heap increasingly fragmented until there isn't a contiguous region of memory large enough to load obstacles
    Barrier Skip Research (now with less crashing) twitch.tv/gymnast86
  • user avatar
    On the nightmare reality of C being the lingua-franca of programming and the defacto ABI description language. Possibly my highest Fucks Per Word ever, because oh my god the more I wrote this the more upset I got at reality.
  • user avatar
    there are two kinds of graph: DAGs and Fucked Graphs. the field of computer science is the study of situations in which a graph may be Unfucked
  • user avatar
    How Swift Achieved Dynamic Linking Where Rust Couldn't A look at what's required to ship a dynamically linked system interface, the most interesting parts of Swift's stabilized ABI, and their incredibly ambitious resilient library evolution system
  • user avatar
    people often recommend "the dragon book" for learning about compilers but actually *any* book with a dragon on the cover will contain some compiler design protips
  • user avatar
    firefox users only want one thing and it's disgusting
  • user avatar
    It's here, I did it. I rewrote the entirety of Rust's std::collections::LinkedList to the standard of quality I expect from std, doing all the Covariance and Send garbage you're "supposed to" do Learn Rust With Entirely Too Many Linked Lists is Done. rust-unofficial.github.io/too-many-lists…
    A Production-Quality Unsafe Doubly-Linked Deque

We finally made it. My greatests nemesis: std::collections::LinkedList, the Doubly-Linked Deque.

The one that I tried and failed to destroy.

Our story begins as 2014 was coming to a close and we were rapidly approaching the release of Rust 1.0, Rust's first stable release. I had found myself in the role of caring for std::collections, or as we affectionately called it in those times, libcollections.

libcollections had spent years as a dumping ground for everyone's Cute Ideas and Vaguely Useful Things. This was all well and good when Rust was a fledgling experimental language, but if my children were going to escape the nest and be stabilized, they would have to prove their worth.

Until then I had encouraged and nurtured them all, but it was now time for them to face judgement for their failings.

I sunk my claws into the bedrock and carved tombstones for my most foolish children. A grisly monument I placed in the town square for all
  • user avatar
    Mommy's here to support you when running cargo~ ❤️ Just `cargo install cargo-mommy` and she'll take care of you~ ❤️ You can set CARGO_MOMMYS_LITTLE in your environment to any affectionate term you want, and be mommy's little boy or mommy's little kitten~ ❤️
    screenshot of running `cargo mommy clippy` successfully and getting the following after normal output of `cargo clippy`:

Good girl~
Mommy's so proud of you~ ❤️
    screenshot of running `cargo mommy test` unsuccessfully and getting the following after normal output of `cargo test`:

Mommy knows her little girl can do better~ ❤️
  • user avatar
    Hello it's me, the unsafe rust person who literally designed and implemented many of rust's unsafe pointer APIs. A lot has changed since I worked on that stuff, and now those APIs are inadequate and disappointing. We can do better.
  • user avatar
    HELLO I KNOW WHAT YOU'RE THINKING "I could really use a 40 page treatise on uninitialized memory, move semantics, and destructors. Hopefully it's an absolute feverdream." DO NOT WORRY, I HAVE CREATED IT FOR YOU gankra.github.io/blah/deinitial… YOU ARE WELCOME NOW I MUST COLLAPSE
  • user avatar
    Functional Programmers: The most pure program is one that has no side-effects. Microsoft: COWARDS! The most pure program is one that CRASHES! Execute not thine foul machine codes upon my system!
    Microsoft's docs describing _purecall, which is the default value for a pure virtual (unimplemented) function. it just crashes the program.

Actual Text:

_purecall

The default pure virtual function call error handler. The compiler generates code to call this function when a pure virtual member function is called.

extern "C" int __cdecl _purecall();

Remarks

The _purecall function is a Microsoft-specific implementation detail of the Microsoft C++ compiler. This function is not intended to be called by your code directly, and it has no public header declaration. It is documented here because it is a public export of the C Runtime Library.

A call to a pure virtual function is an error because it has no implementation. The compiler generates code to invoke the _purecall error handler function when a pure virtual function is called. By default, _purecall terminates the program.