Log inSign up
Aria Desires
22.4K posts
Image
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
faultlore.com
Joined September 2009
364
Following
7,578
Followers
  • Pinned
    user avatar
    Aria Desires
    @Gankra_
    Aug 29, 2019
    Hey, I made a gallery of the things I've made while breaking Firefox's rendering code! Check it out! gankra.github.io/glitch/
    Image
  • user avatar
    Aria Desires
    @Gankra_
    Sep 18, 2017
    omg whatsapp's webapp has a 4k sprite sheet because it's laid out diagonally
    Image
    Image
    Image
  • user avatar
    Aria Desires
    @Gankra_
    Feb 2, 2022
    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
    Aria Desires
    @Gankra_
    Jul 8, 2019
    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
    user avatar
    gymnast86
    @MrGymnast86
    Jul 8, 2019
    Barrier Skip Research (now with less crashing) twitch.tv/gymnast86
  • user avatar
    Aria Desires
    @Gankra_
    Mar 16, 2022
    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.
    Image
    faultlore.com
    C Isn't A Programming Language Anymore - Faultlore
  • user avatar
    Aria Desires
    @Gankra_
    Oct 13, 2022
    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
    Aria Desires
    @Gankra_
    Nov 8, 2019
    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
    Image
    faultlore.com
    How Swift Achieved Dynamic Linking Where Rust Couldn't - Faultlore
  • user avatar
    Aria Desires
    @Gankra_
    Aug 3, 2022
    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
    Aria Desires
    @Gankra_
    Aug 3, 2019
    firefox users only want one thing and it's disgusting
    Image
  • user avatar
    Aria Desires
    @Gankra_
    Apr 17, 2022
    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
    Aria Desires
    @Gankra_
    Dec 19, 2022
    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~ ❤️
    101K
  • user avatar
    Aria Desires
    @Gankra_
    Mar 19, 2022
    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.
    Image
    faultlore.com
    Rust's Unsafe Pointer Types Need An Overhaul - Faultlore
  • user avatar
    Aria Desires
    @Gankra_
    Jan 24, 2022
    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
    Image
    faultlore.com
    Destroy All Values: Designing Deinitialization in Programming Languages - Faultlore
  • user avatar
    Aria Desires
    @Gankra_
    Mar 18, 2022
    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.

New to X?

Sign up now to get your own personalized timeline!

Create account

By signing up, you agree to the Terms of Service and Privacy Policy, including Cookie Use.

Terms·Privacy·Cookies·Accessibility·Ads Info·© 2026 X Corp.
Don't miss what's happening
People on X are the first to know.
Log inSign up
Advertisement
Advertisement