

Return oriented programming is not a…
…you know what, never mind. You keep doing it. Cybercrime is cool anyway


Return oriented programming is not a…
…you know what, never mind. You keep doing it. Cybercrime is cool anyway


Enables reproducible builds years later
If I had a dollar for every flake I’ve pulled from Github that didn’t build because of link rot, and $10 for every nixpkgs package that didn’t build because one of its dependencies had broken and it hadn’t been updated, I could afford to contribute to Nix full time


nah, that’s code that does something slightly different every time you run it. that’s a different beast.


ah sweet, code that does something slightly different every time i compile it
Because to a certain extent Python is duck typed. Python has no concept of interfaces, unless you count the abc module combined with manual isinstance() checks, which I’ve never seen anyone do in production. In order to be passed to some function that expects a “file-like object”, it just has to have methods named read(), seek(), and possibly isatty(). The Python philosophy, at least as I see it, is “as long as it has methods named walk() and quack(), it’s close enough to a duck for me to treat it as one”.
Duck typing is distinct from weak type systems, though.
For the last time, Python is not weakly typed. It is dynamically typed. The statement 5 + "hello" results in a type error. Bash is weakly typed, and that same addition results in 5hello


…why are we making a competitor to libreoffice


Huh. Neat feature. That’s in C# I assume?


(i’m gonna do something evil)
Sounds like you’d really like Nix.


The second one isn’t valid syntax in any programming language I’m familiar with. What does it do?


why would you call it anything other than the ternary operator


what the fuck


I’m aware that pyo3 is a thing, but last I checked that was just Rust bindings to CPython. Is this not that?
I cannot recommend Framework laptops enough. I recently got my hands on one and it’s the best laptop I’ve ever owned. It of course runs Linux like a dream. Everything works out of the box. No proprietary blobs needed for any of its hardware drivers, of course, plus the firmware for the embedded controller as well as the keyboard are open source and can be reflashed from the device (the keyboard firmware is even a fork of QMK). Its 165Hz 1440p 16:10 monitor being driven by a Radeon 7700S makes it one of the best laptop gaming experiences I’ve had, which is especially impressive considering it’s not marketed as a gaming laptop. Three hours battery life with the dGPU installed is the best I’ve seen out of a gaming laptop ever, and if you pull out the GPU and run off integrated graphics, the battery life doubles to a very respectable six hours for web browsing.
There’s also of course the obvious customization aspect. Don’t like which I/O ports are on the side? Swap in a different module! You don’t even have to reboot your computer. Want your trackpad to be centered or off to the side to make room for a numpad? Move it around! You don’t even have to reboot your computer. Who needs Nvidia Optimus when you can physically remove the GPU from the laptop, reducing power savings even more and making the laptop several pounds lighter to boot? (You do have to shut down to do that, and swapping it out takes around five minutes, but still.)
I know this post sounds like it was sponsored but it wasn’t. I just really love this thing ^-^


…either an empty string, a single character, or the same sequence of characters repeated more than once?


ohhh nooooo, who could possibly have seen this coming
not like that repo was getting constantly vandalized as people realized it contained copyrighted code that the winamp owners didn’t have the rights to which the project managers were halfheartedly playing whack-a-mole with


please tell me your argument is not “other language also does this thing, therefore it’s dumb for rust to not do it”


Having to use #[tokio:main] to make the main function async (which should just be inbuilt functionality, btw tokio adds insane bloat to your program) yet you literally can’t write code without it. Also what’s the point of making the main function async other than 3rd party libraries requiring it?
You’re kidding, right? You do actually understand that languages that aren’t JavaScript don’t have built in async runtimes and they need to be provided by a library, right? You’re not actually writing a post about how much the programming language you have two days experience in made different design decisions and is therefore good at different things than the programming language you have five years experience in and therefore it sucks, right?
There are plenty of slimmer async runtimes for Rust. Pollster comes to mind, although it doesn’t provide any I/O functionality. (That’s where the “bloat” that’s in Tokio comes from – it’s providing functionality the Javascript runtime has built in. You see, Rust, unlike Typescript and Java that have compilers that emit source code for an interpreter, is actually a compiled language, and Rust programs compile to self-contained executables that don’t need any external dependencies to run. If you included the size of the node binary in your Javascript app, Rust would win the filesize war no contest.)
As for “performance doesn’t matter” – I’d like to tell you a personal story about a Rust program I’m working on. There’s an imageboard I’m a fan of, and it runs some booru-like software, meaning when you upload an image you give it a few dozen tags, and then people can search for images by their tags. The tag search functionality on the website I thought was missing a few features, so I downloaded a copy of the entire post database on that site (including URLs and tag lists of every post) and wrote my own search algorithm in Rust. I wrote a function that accepts a search query and a list of tags and returns a boolean, and searching the posts was as simple as vec_of_posts.iter().filter(|post| matches(search_query, post)).collect(). I then downloaded the rayon crate, and, with a sngle line change to vec_of_posts.par_iter().filter(|post matches(search_query, post).collect(), I was running the search in parallel on all CPU cores. Running a full search of all four million posts takes about 50 milliseconds on my laptop, or 3 seconds running the search locally on an Android phone. Try that in an interpreted language.
(So help me God, if you respond to that last point by saying “cloud computing”, I am going to shoot you in the head.)


Why not?
ipv6 is strictly superior and i will die on this hill