632 karma · joined August 29, 2022
- temporal safety (e.g. no use after free) - initialization safety (no read of initialized memory) - thread safety (no data races) - type safety (accessing memory with the correct type)
That's one way to look at it, but I would encourage you to think about it a bit differently.
JJ does not have a concept of "staging", it only has changes and commits. Yes, it automatically snapshots the workspace commit, but I wouldn't use the workspace commit as your staging area. If you want to do explicit staging use the parent commit (@-) as your staging area. You can move changes from the workspace commit (@) to the staging area (@-) explicitly, just like in Git. And you can "commit" (Git terminology) your staging area by starting a new staging area.
The difference here really is "only" that the workspace, the index, and committed changes are modeled with the same concept. And that is very powerful. Admittedly you have to make an informed decision on how to map your workflows onto the model, but that is what comes with the powerful flexibility that it gives you.
Same with the working copy.
FWIW, you can turn them off. I always play with them disabled. Just not what I'm interested in. You might enjoy that, too.
I also enjoyed shapez, but it's no comparison to the depth of Factorio, especially with mods.
Would be even better if it lived in VSCode, auto-syncing with my DDL files...
You can opt into reference counting with `std::rc::Rc`. (You can even opt into mark-and-sweep GC using the `gc` crate, but this isn't done much...).
This issue alone made me set up my own instance, but many users don't have that option.
I meant coupling the "Find My network" feature for iPhones and AirTags.
Would have been nice if the article explained a bit what is actually happening. The wikipedia article doesn't mention it either...
Also, I wouldn't blame the victim. I'd rather blame Apple for making their users opt in.