|
srrrse
@without.boats
[ View ] |
Any record of this online?
1 replies 0 reposts 0 likes
|
srrrse@without.boats |
681 followers 52 following 367 posts
events have not yet disclosed to me all that i am
|
srrrse
@without.boats
[ View ] |
Any record of this online?
1 replies 0 reposts 0 likes
|
srrrse
@without.boats
[ View ] |
Hickey drastically underestimates the impact of static type systems on program correctness, especially those derived from categorical laws? You got that from r/Haskell, right? Yea I read that too. Were you gonna plagiarize the whole thing for us? Do you have any thoughts of your own on this matter?
5 replies 5 reposts 73 likes
|
srrrse
@without.boats
[ View ] |
Well as a matter of fact, I won’t, because Hickey drastically underestimates the impact of static-
1 replies 2 reposts 47 likes
|
srrrse
@without.boats
[ View ] |
and the UNIX philosophy. Thats gonna last until next year, then youre gonna be in here regurgitating Rich Hickey, talkin about, you know, the difference between ease and simplicity and immutability and time and designing systems from uncomplected components.
1 replies 2 reposts 53 likes
|
srrrse
@without.boats
[ View ] |
Of course thats your contention. Youre a 1st year programmer. You just got finished writin some REST backend, node.js probably. Youre gonna be convinced of that til next month you get to Rob Pike and then youre gonna be talkin about goroutines and message passing and how concurrency isnt parallelism
1 replies 36 reposts 127 likes
|
srrrse
@without.boats
[ View ] |
Evergreen
1 replies 1 reposts 13 likes
|
srrrse
@without.boats
[ View ] |
If you are going to create a new language that you hope someday people will actually use, you should create a language server before you create a compiler.
1 replies 0 reposts 16 likes
|
srrrse
@without.boats
[ View ] |
Yea giving channels a unique name, consistent the same way functions have unique names. Or maybe the IDE could just support jump to receiver and show all senders
0 replies 0 reposts 2 likes
|
srrrse
@without.boats
[ View ] |
Inventing a guy to be mad at only to realize that I too am a guy someone is inventing to be mad at - The Circular Ruins, Jorge Luis Borges
0 replies 6 reposts 20 likes
|
srrrse
@without.boats
[ View ] |
First question: because mem::swap and pals don’t have any bound. See: without.boats/blog/changin...
Second question: yes there are Move futures, I was being abbreviated
0 replies 0 reposts 1 likes
|
srrrse
@without.boats
[ View ] |
*somewhat novel
0 replies 0 reposts 5 likes
|
srrrse
@without.boats
[ View ] |
I thought this was an interesting, someone novel critique of message passing: you‘re not usually required to label the two ends of a channel anything related to one another, making it hard to find out where the messages go.
2 replies 0 reposts 22 likes
|
srrrse
@without.boats
[ View ] |
I mean a trait called Move that controls whether or not you can Move this type (after you’ve taken its address) the same way Copy controls whether or not you can copy it. Then futures just wouldn’t implement Move, and you wouldn’t need Pin at all.
2 replies 0 reposts 4 likes
|
srrrse
@without.boats
[ View ] |
I guess I should add: the weaknesses of core Rust are pretty much all in areas where Rust was breaking new ground.
1 replies 1 reposts 18 likes
|
srrrse
@without.boats
[ View ] |
The counterargument would be “just have green threads” but well I already explained why this didn’t work: without.boats/blog/why-asy...
1 replies 1 reposts 10 likes
|
srrrse
@without.boats
[ View ] |
Async trait methods required a heap of changes to the trait system to work, biggest one being GATs
1 replies 0 reposts 6 likes
|
srrrse
@without.boats
[ View ] |
You can’t have scoped async tasks the way you could have scoped threads because the team decided not to have Leak with 1 month to the 1.0
1 replies 0 reposts 9 likes
|
srrrse
@without.boats
[ View ] |
For example, Pin is entirely because wanting to use stackless coroutines for async revealed a contradiction between mutable references and self-referential types. It would be much better to have Move, but 1.0 had already shipped.
2 replies 0 reposts 14 likes
|
srrrse
@without.boats
[ View ] |
One thing I love about the dumb critiques of async Rust I am doomed to read eternally is that they often say “Rust is great except that stupid overcomplicated async.” This is completely wrong: the rough aspects of async Rust are revealing the weaknesses of core Rust.
2 replies 0 reposts 33 likes
|
srrrse
@without.boats
[ View ] |
I mean it says everything about their worldview that they think “bullying an AI shill” and “burning down a data center” are comparable political actions.
0 replies 0 reposts 1 likes
|
srrrse
@without.boats
[ View ] |
I love going on Reddit and explaining Rust’s semantics to someone only for them to reply with a rant about how my work on Rust was trash apparently oblivious to the fact it was my work they’re being an idiot about.
2 replies 0 reposts 14 likes
|
srrrse
@without.boats
[ View ] |
Mainly overestimating the cost of things that Rust makes explicit and underestimating the cost of things that Rust lets you do implicitly. Refcounting vs Copy, heap vs stack, etc
0 replies 0 reposts 5 likes
|
srrrse
@without.boats
[ View ] |
If you have a real heap, it escapes to it just fine. Values in the heap do not need to be ‘static!
1 replies 0 reposts 4 likes
|
srrrse
@without.boats
[ View ] |
Exactly, which also won’t happen if you were to leak it on the heal
1 replies 0 reposts 1 likes
|
srrrse
@without.boats
[ View ] |
But types that can’t be forgotten wouldn’t really help here btw. Remember it’s the pointer you’re leaking, not the buffer. So the borrow ends via the leak and now you can mutate the buffer the kernel is supposed to be borrowing.
1 replies 0 reposts 1 likes
|
srrrse
@without.boats
[ View ] |
Yea so you could unlock a lot with types than can’t be leaked.
1 replies 0 reposts 1 likes
|
srrrse
@without.boats
[ View ] |
True about the difficulty of performing an ownership transfer without a heap. In Linux interfaces there tend to be dedicated ring buffers for these sorts of things, you don’t have this for embedded DMA?
1 replies 0 reposts 1 likes
|
srrrse
@without.boats
[ View ] |
*by io-uring I really mean “concurrent borrowing tasks;” if you use ownership instead of borrowing to model io-uring there’s no issue. I believe the same is true of DMA transfers.
1 replies 0 reposts 3 likes
|
srrrse
@without.boats
[ View ] |
To be clear there are three potential restrictions: Types which can’t be “forgotten” Types which can’t be “leaked” (or forgotten) Types which can’t be “dropped” (or leaked or forgotten) Each layer allows making more powerful guarantees. The second is needed for io-uring. Linear types are the third.
1 replies 0 reposts 3 likes
|
srrrse
@without.boats
[ View ] |
It definitely comes up. Probably mem::forget should not have been made safe just because leaks were safe. But personally I don’t see a lot of value in trying to make this distinction now; just go all the way and make types that can’t be leaked or forgotten.
1 replies 0 reposts 1 likes
|
srrrse
@without.boats
[ View ] |
Notes on ownership and substructural types without.boats/blog/ownersh...
2 replies 8 reposts 26 likes
|
srrrse
@without.boats
[ View ] |
There’s actually a really interesting dynamic at play here where Rust is usually so good that people just assume every decision in Rust was right and have learned certain beliefs from the compiler’s behavior (eg non-memcpy copies are slow). But Rust is sometimes wrong.
0 replies 0 reposts 18 likes
|
srrrse
@without.boats
[ View ] |
Haskell has both shared ownership and interior mutability, it just hides the mutability in C code behind the IO monad.
1 replies 0 reposts 1 likes
|
srrrse
@without.boats
[ View ] |
People don’t like when you say this, but I really believe a lot of the Rust internet community has silly cargo cult ideas about performance that aren’t based on experience or evidence. But the project has developed a culture of catering to baseless concerns.
2 replies 0 reposts 19 likes
|
srrrse
@without.boats
[ View ] |
Ocaml has both of these features
0 replies 0 reposts 0 likes
|
srrrse
@without.boats
[ View ] |
Rust would be such a more interesting language if it didn’t have interior mutability or shared ownership, but then it would still not have shipped because we don’t know how to write real programs without at least a bit of those things.
2 replies 0 reposts 13 likes
|
srrrse
@without.boats
[ View ] |
When I see a configuration language that advertises itself as “Turing complete” I feel like I am living in the fever dream of a madman
1 replies 1 reposts 7 likes
|
srrrse
@without.boats
[ View ] |
Of course. I’m just saying that being Turing incomplete is actually a positive feature. Turing completeness falls out of the other features people want languages to have, but is a negative consequence.
2 replies 0 reposts 3 likes
|
srrrse
@without.boats
[ View ] |
There’s really no reason it should be considered a positive feature that a programming language is Turing equivalent. If you could implement all of your desired programs without that, it would seem strictly better not to be.
3 replies 0 reposts 22 likes
|
srrrse
@without.boats
[ View ] |
They actually do pay for mediation. This person is actually great at their job but has no ability to fix structural problems in the way the project operates.
1 replies 0 reposts 5 likes
|
srrrse
@without.boats
[ View ] |
For this, which I completely stand by.
4 replies 1 reposts 43 likes
|
srrrse
@without.boats
[ View ] |
I am banned from the Rust async working group lol
1 replies 0 reposts 34 likes
|
srrrse
@without.boats
[ View ] |
Skill issue
1 replies 0 reposts 2 likes
|
srrrse
@without.boats
[ View ] |
Other people not understanding the things that are obvious to me personally may be one of the largest drags on global economic productivity.
1 replies 2 reposts 26 likes
|
srrrse
@without.boats
[ View ] |
i just want zoomers to know that computers were always the site of similar conflicts as now and viral millennial nostalgia for late 2000s web2.0 is cringe af
0 replies 0 reposts 12 likes
|
srrrse
@without.boats
[ View ] |
Similarly remarkable is how little anyone on earth understands about programming languages, even people who are paid to design them.
0 replies 1 reposts 11 likes
|
srrrse
@without.boats
[ View ] |
Thought I had a good type system to prevent deadlock for a week or two but then I realized that I was wrong
0 replies 0 reposts 9 likes
|
srrrse
@without.boats
[ View ] |
Sometimes it might be, too often it is just a poorly thought out mistake.
1 replies 0 reposts 0 likes
|
srrrse
@without.boats
[ View ] |
The universal sin of language designers is hubris. Everyone thinks they can just add a little coercion here or a fallback there. We all laugh at the most obviously flawed examples, but every single production language has some load bearing hacky choice like this causing huge problems somewhere.
1 replies 0 reposts 12 likes
|
srrrse
@without.boats
[ View ] |
excuse me
1 replies 0 reposts 8 likes