Elektrine
Log in Register
Paige Chat Timeline Gallery Friends Email Drive DNS Private DNS Domains VPN Kairo Nerve
Remote

Aria Desires

@Gankra@toot.cat
  • Open on toot.cat

It's me, the gay cat who maintains your docs

Author of The Rustonomicon and Learn Rust With Entirely Too Many Linked Lists. Also I made a lot of homestuck's games.

on a sabbatical

3193 Followers
183 Following
16 Posts
Joined November 04, 2022
pronouns:
she/her
location:
ottawa
avatar:
dizzimitzi
Open post
Aria Desires @Gankra@toot.cat
· 2mo ago

important update: 💹 is now the pleading emoji for pegging

💹😳💦 my currency is so unstable it needs to be pegged 👉👈

45
0
10
0
Open post
Aria Desires @Gankra@toot.cat
· 2mo ago

tbh very enamoured with this terrible plumbing job a contractor did while openly admitting he super fucked up because he was sleep deprived

32
0
2
0
Open post
Aria Desires @Gankra@toot.cat
· 2mo ago

the ^default place in carbon’s proposed ownership model, defined as “the set containing all places that aren’t named”, really has me hoping they add ^russell, “the set of all place sets that don’t contain themselves”

(^places are similar to rust’s 'lifetimes, so the analogous concept in rust of 'default in a function signature would be a lifetime that contains all elided lifetimes... so like you could do

fn<'a>(&'a u32, &u32, &u32) -> &'default u32

to say the the second and third params have to outlive the output..?)

14
0
1
0
Open post
Aria Desires @Gankra@toot.cat
· 6mo ago

function subtyping is easy, just remember

you use **contra**ceptives when putting it inside and a **co**pay when taking it out

53
5
16
0
Open post
Aria Desires @Gankra@toot.cat
· 2mo ago
Replying to
@chandlerc@hachyderm.io ok now that i’ve properly watched the talk i have to give huge kudos to josh for being extremely open about the obvious comparisons that anyone would make to rust, while making it to 87/91 minutes before i felt literally any urge to go “now hold on”. not serious and not your fault, a random line just ran into some Historical Political Baggage which is a fun story I now have an excuse to share :p The statement of “unsafe rust is MORE unsafe than c++” was a big talking point for years which slowly transformed from “reasonable question we’d ask ourselves” to “extremely disingenuous talking point you’d get from someone who’s trying to justify dismissing rust wholesale” (to be clear I don’t think you’re doing that at all). So like it’s definitely a legitimate concern that the existence of pervasive high-level assumptions about pointer aliasing and validity could in theory result in rust code being a big ticking time bomb where one small error in unsafe code creates a huge disaster. And certainly we do turn on several fancy noalias optimizations in llvm (although we don’t do TBAA so we’re also less aggressive in some places), and certainly that occasionally goes awry. However over the years the empirical results I’ve observed have been that UB in Rust is often more contained. In particular there’s a high chance of UB quickly causing a panic/abort because there are so many random stray bounds checks and other assertions that it’s hard for execution to go rogue for long. A weird semi-accidental defense in depth. Like for a long time Firefox thought there was some really evil UB in Rust’s HashMap but it turned out that there were just a lot of HashMaps and so any stray memory corruption bug from anywhere in the codebase (i.e. C++) had a pretty good chance of hitting a HashMap… and corrupting memory owned by Rust very quickly resulted in a crash instead of further corruption. So the crash stats were just stuffed to the gills with “oh my god we segfaulted in HashMap”!
5
1
0
0
Open post
Aria Desires @Gankra@toot.cat
· 2mo ago
Replying to
@chandlerc@hachyderm.io Only skimmed the slides for now but this feels like it will be brutal to write interfaces for, which unfortunately makes sense if you’re trying to faithfully encode typical c++ interfaces. Y’all have clearly done a lot more homework on this problem at this point than probably anyone, which makes me excited to see where you find the serious friction in this design. As a collections API person my assumption has always been that C++-style iterators (and slices) will be the most painful things to describe and abstract over in any system like this. As an unsafe rust person, I am also worried about the complexity and stakes of writing the signatures of the safe api over the unsafe code — we had a lot of mishaps in rust land back in the day from bad defaults or the compiler not applying some conservative assumption the api author has to opt out of. As a gradual types person I am excited to see where your non-strict mode is forced to make unsound assumptions for the sake of common case ergonomics and usability (no one is without sin here, especially once inheritance is involved!)
5
2
0
0
Open post
Aria Desires @Gankra@toot.cat
· 4mo ago

calling everything in the python ecosystem 0ver if it hasn’t bothered to go to epoch 1

1!0.0.1 is a much more legit stable release than 1.0.0 (aka 0!1.0.0)

8
0
3
0
Open post
Aria Desires @Gankra@toot.cat
· 3mo ago
Replying to
@slava@mathstodon.xyz @zwarich@hachyderm.io @joe@f.duriansoftware.com common rust W making pointer-based graphs too hard to use so you have to use ids
4
6
0
0
Open post
Aria Desires @Gankra@toot.cat
· 2mo ago
Replying to
@chandlerc@hachyderm.io the api correctness issues i’m thinking of were never an optimization thing, and were always just “the compiler let code compile that was a blatant use-after-free” (on my phone and going off memory, can elaborate more on any of these if you want more details) * pre-1.0 the rust compiler did not require you to specify the (co/in)variance of a type parameter, and if you declared a type parameter but failed to use it in the definition it actually defaulted to *bivariance* which is literally always incorrect. This resulted in some type like Iter<‘a, T>(*const T) basically functioning as if it had no lifetime, oops! This class of bug was eliminated with the introduction of PhantomData (the RFC discusses it). * Rust has obscure support for letting pointers temporary dangle during destructors. You can make a (Box, Vec<&Box>) and make one point at the other, and rust won’t complain about the fact that the Vec definitely contains a dangling pointer when its destructor runs. The argument for this being ok is based on Vec’s Drop being parametric (it cannot observe that T is a reference), and this feature is used by rustc devs to do stuff with Arena allocators. “parametric drop” used to be safely inferred by the compiler but it was so buggy and complicated that it was eventually turned into an unsafe opt-in (see the “dropcheck eyepatch” RFC(s)). * The typechecker people have like 1000 war stories around the compiler failing to correctly handle corner cases of the type-erasure stuff you briefly discuss, especially around what lifetimes associated-types should be required to satisfy (not my area of expertese) * The compiler safely infers Send and Sync for ~every type, and the fact that this actually works great in practice is actually shocking to me whenever I think about it, but the secret sauce is that if your type contains *const T, *mut T, or UnsafeCell your type is opted out of this and you must manually unsafe-impl Send and Sync to opt back in (also *mut T makes you invariant in T as a secret bonus controversial safety guard). The fact that we have different types for “normal pointers” and “pointers unsafe code uses” is actually a really important sentinel for forcing the compiler to apply more conservative ~inference. “here there be dragons”. (probably the OIBIT RFC is the source on this)
3
1
0
0
Open post
Aria Desires @Gankra@toot.cat
· 11mo ago
Replying to

complex is complex | float | int

:)

29
4
2
0
Open post
Aria Desires @Gankra@toot.cat
· 19mo ago
Replying to
it makes absolute intuitive sense that all your memory safety bugs would be uniformly distributed throughout your code but if your codebase is like that it should be declared a superfund site and quarantined from the public because that means you have hundreds of ancient buffer overflows that never get fixed
50
0
9
0
Open post
Aria Desires @Gankra@toot.cat
· 11mo ago
Replying to

@apmasell@mastodon.social never heard of bool, my only friend is Literal['False']

5
0
1
0
Open post
Aria Desires @Gankra@toot.cat
· 20mo ago
Replying to
@foone@digipres.club i think you might be cargo-mommy's biggest supporter lmao. i really should do a new release or add someone else as owner at this rate.
9
1
0
0
Open post
Aria Desires @Gankra@toot.cat
· 11mo ago
Replying to
@mindpersephone@spookygirl.boo it naturally happens constantly in the typesystem, they've gotta deal with it anyway
2
0
0
0
Back
313k7r1n3
Elektrine

Tor hidden service

elekhj7afj4qnrr4yd3bkzslsyo5jgfxw3orgjkhlcxifueodybyiiad.onion

I2P eepsite

j6b6cyk6gjmepjih7jjadxgxvvf3lzzujljuu2v4biemzpg3naya.b32.i2p

Platform

  • Email
  • Chat
  • Timeline
  • VPN
  • DNS

Company

  • About
  • Contact
  • FAQ
  • Lite (no JS)

Legal

  • Terms of Service
  • Privacy Policy
  • Transparency Report
  • Report Abuse
  • Warrant Canary
  • VPN Policy

Support

  • support@elektrine.com
  • Report Security Issue
Mail client setup IMAP mail.elektrine.com:993 POP3 mail.elektrine.com:995 SMTP mail.elektrine.com:465
© 2026 Elektrine. All rights reserved. Server: 20:05:03 UTC