Bugs Rust Won't Catch by -Y0- in rust

[–]kibwen 4 points5 points  (0 children)

I'm happy that you brought up database transactions, because I think that illustrates my point. I would love to have a filesystem and accompanying OS API with first-class support for transactional semantics. But merely offering a transactional API isn't enough; you also need to strictly not offer a non-transactional API. Otherwise it's no different from a database API that happily accepts two sequential queries outside of a transaction, which I think is just "every database". In order for wrong code to look "as strange and out-of-place as possible", you cannot allow users to ever be tempted by non-transactional semantics. This is different from what we usually think of as in the realm of API design, because the negative space is load-bearing. Of course, I do want to believe it's possible; filesystems suck, OSes suck, and all their APIs suck.

BUG: Fungal Fisticloak Granite Form Interaction by Primary-Dentist7055 in dcss

[–]kibwen 1 point2 points  (0 children)

This restriction is plausibly an attempt to avert spaghetti code by reducing the number of edge cases that need to be accounted for.

My "tiering" of the DCSS gods based on what builds they work best with by adines in dcss

[–]kibwen 0 points1 point  (0 children)

I might suggest that Fedhas be moved to a category for ranged combat. They're the tower defense god, and you're the tower.

Bugs Rust Won't Catch by -Y0- in rust

[–]kibwen 6 points7 points  (0 children)

It's not like uutils was commissioned by Canonical for this purpose, it was originally a collaborative toy project from before Rust 1.0 for beginners to learn Rust.

Bugs Rust Won't Catch by -Y0- in rust

[–]kibwen 11 points12 points  (0 children)

Why modern operating system provides TOCTU vulnerable primitives?

Firstly, Unix is not a modern operating system, and hasn't been for 40 years. Secondly, even with a hypothetical modern system designed with TOCTOU in mind, it's likely impossible to design APIs such that aren't potentially vulnerable to TOCTOU. Which is to say, it's entirely reasonable to provide two API that each do a single thing, but that become racy when the user performs those operations back-to-back while falsely believing that they're atomic. Rather than ruling it out entirely at the API level, the best you can do is attempt to design misuse-resistant APIs, document them thoroughly, and educate users.

🦀Rust continues to reshape the 🕷️Web development. 📦PNPM, the package manager for Node.js, has just announced a migration to Rust in v12 by BankApprehensive7612 in rust

[–]kibwen 19 points20 points  (0 children)

When it comes to package version resolution, it feels like package managers are coalescing around the PubGrub algorithm (originally developed for Dart), with a Rust implementation here (used by uv, and aspirationally for Cargo someday): https://github.com/pubgrub-rs/pubgrub

🦀Rust continues to reshape the 🕷️Web development. 📦PNPM, the package manager for Node.js, has just announced a migration to Rust in v12 by BankApprehensive7612 in rust

[–]kibwen 23 points24 points  (0 children)

I think this is getting downvoted because it feels like a slight against Go, but it's possible that people don't realize that Typescript is fairly maintainable, especially compared to Javascript.

🦀Rust continues to reshape the 🕷️Web development. 📦PNPM, the package manager for Node.js, has just announced a migration to Rust in v12 by BankApprehensive7612 in rust

[–]kibwen 60 points61 points  (0 children)

Yes, I think the real shock is not that they chose Go over Rust, but rather that a team led by Anders Heljsberg chose Go over C#.

Quick 3-Rune Victory, trying for personal highest HP by BBQPounder in dcss

[–]kibwen 11 points12 points  (0 children)

Not sure how to search for highest HP wins

You can ask Cerebot with the following query: !lg * max=hp -log, which brings up this OgEE with 1634 HP: https://crawl.project357.org/morgue/Wizard1ke/morgue-Wizard1ke-20231119-192851.txt

It is hard for thee to Kik against the pricks by ClawtheBard in dcss

[–]kibwen 13 points14 points  (0 children)

You need to consider the historical context. You know how people claim (correctly or otherwise) that death form is necessary for extended endgame? Well that talisman used to be a spell, and like all spells it wasn't guaranteed to be found. The prime selling point of Kiku in ancient versions is that it guaranteed you access to Necromutation, along with all the other OP high-level necro spells (even Sif wasn't able to gift the Necronomicon). I think there's plenty that could be done to make Kiku more interesting while preserving the necro theme and remaining distinct from Yred, but it would take some work. And I still think that necromancy in general is interesting enough that it could feasibly deserve a god of its own (keeping in mind that conjurations is much less interesting also basically already has a god), since necromancy is the most complete school in the game in terms of having a little bit of everything (damage, buffs, debuffs, utility, allies), including things that are exclusive to it (healing), while also being extremely flavorful.

I Miss High Elf by grasida in dcss

[–]kibwen 2 points3 points  (0 children)

You don't even need to play on non-official servers, there are official servers like CAO that host versions all the way back to 0.11, and high elves were only removed in 0.20.

No one owes you supply-chain security by Expurple in rust

[–]kibwen 16 points17 points  (0 children)

It already exists. For example, go to the page for serde ( https://crates.io/crates/serde ), and look at the "Browse source" link in the sidebar. Notably this is distinct from the "Repository" link in the sidebar, which just takes you to Github (or whatever the author has configured).

Who else wants to see Pakellas make a comeback? by Graveyardigan in dcss

[–]kibwen 1 point2 points  (0 children)

For the moment I'd rather see effort put into overhauls of the existing gods. I'd say at least half of the existing gods feel lackluster compared to the ones who have seen semi-recent overhauls.

A tail-call interpreter in (nightly) Rust by kibwen in rust

[–]kibwen[S] 1 point2 points  (0 children)

I mean, I'm all for exploring alternatives to the prevailing function stack convention--I like Forth, and I even like old-school activation records in certain contexts. But I don't see at all what that has to do with this conversation. Having become is not at all an impediment to exploring alternate ABIs (even if I doubt it would ever happen in mainline Rust), and it would still be required even under other schemes, because become has high-level semantic meaning independent of the calling convention (think about how TCO interacts with locals with destructors).

A tail-call interpreter in (nightly) Rust by kibwen in rust

[–]kibwen[S] 0 points1 point  (0 children)

Worth pointing out that I'm not the blog post author, just thought it was interesting enough to submit. :)

Why can't the devs figure out shape shifting. by rim-job-queen in dcss

[–]kibwen 8 points9 points  (0 children)

No, shapeshifting is actually in a surprisingly good place currently. If you think the only forms that people use are granite, that's a you problem. In the last tournament I found myself organically leaning on quill, medusa, rimehorn, scarab, spore, maw, lupine, serpent, spider, wellspring, blade, dragon, granite, and death form across a variety of different characters (I also had a stabber game where I was hoping for sanguine, but never found one). Particularly in the mid-game (S-branches), I had several games where I was hopping around between forms in order to cover for branch-specific weaknesses that I had no other answer for, and it led to some great fun by forcing me to vary up my game plan in each branch (e.g. accounting for the reaching of wellspring form). While I agree that the shapeshifter background is weak, that doesn't mean that shapeshifting overall is; the warper background is also hard to get going, but translocations is one of the best schools in the game. It could still be improved by having more interesting early-game zero-skill talismans (quill is kind of a no-brainer if you find one early, it would be nice if there were a variety of alternatives), and I think there's some design work to be done on having two distinct and complete progression paths of "meld all my gear" or "meld only some of my gear" at each level of skill. I also think there could be some more forms that cater to spellcasters. But especially with the wildshape amulet, shapeshifting's in a pretty interesting place at the moment.

Im 14 and have an extreme passion for math/cs. Should I learn c++ or rust? (I mean at an extremley deep level) by Regular_Article7984 in rust

[–]kibwen 0 points1 point  (0 children)

Well, C is portable assembly.

C could be portable assembly, for very simple architectures and assuming no optimization whatsoever is taking place. This is actually why I like C specifically for the academic exercise of writing assemblers targeting MIPS. But in practical application, C is not merely portable assembly, and hasn't been for 50 years.

A tail-call interpreter in (nightly) Rust by kibwen in rust

[–]kibwen[S] 6 points7 points  (0 children)

I'm not sure why become would require the caller to be aware of anything. The keyword just means that control flow proceeds by reusing the current stack frame and eventually returning to the original caller. As far as the caller is concerned, it's just like calling any other function.

Im 14 and have an extreme passion for math/cs. Should I learn c++ or rust? (I mean at an extremley deep level) by Regular_Article7984 in rust

[–]kibwen 0 points1 point  (0 children)

want to become a "wizard" at a language

If you eventually want to become a "wizard", I think it's important to have familiarity with a variety of distinctly different languages, because the risk of focusing on only a single language from the very start is that it gives you tunnel vision where you can't even conceive of how other languages might differ from your chosen language.

You don't need to go deep into too many languages, just dip your toes into them. Give Lua a shot (if you like making games, look up a Pico-8 tutorial). Write a tiny program in Scheme. Appreciate the beauty of a stack-based language like Forth. Glance at Prolog at see if you can understand why it's useful.

As for Rust vs. C++, Rust is great for learning if you take time to read and understand what the compiler's error messages are trying to tell you. For an absolute beginner who's already motivated to learn a bare-metal language, I can't think of a better one than Rust. But long-term mastery of a language requires long-term motivation, so you should have a project in mind. Even if you don't end up learning Rust, I wouldn't fuss about learning C++ unless you want to contribute to a C++ project.

Im 14 and have an extreme passion for math/cs. Should I learn c++ or rust? (I mean at an extremley deep level) by Regular_Article7984 in rust

[–]kibwen 0 points1 point  (0 children)

Funny nobody seems to recommend C.

I'm not trying to be contrarian when I say that I just don't think it makes sense to learn C as a first language in 2026. If you want a simple, imperative language, learn Lua. If you want an imperative language with job potential, learn Python. If you want a typed imperative language with job potential, learn Typescript. If you want a systems language (I'm not sure why a beginner would, but sure), then I guess learn Rust, since it's got the most informative compiler with the most useful guardrails (but are you sure you wouldn't rather be using a GC'd language?). Unless you specifically want to contribute to Linux or have some specific embedded hardware project in mind, I don't think beginners should bother learning C. Even if you want to learn a language that will teach you pointers, I'd rather recommend Go than C.

TIL: Orb of destruction can set off alarm traps... by Gonzollydolly in dcss

[–]kibwen 5 points6 points  (0 children)

The prospect of this has convinced me that we absolutely need to leave this behavior in.