@scathach i get two real issues that ive had across systems for years. 1) certain combinations of heavier operations would cause it to lag and then lock up 2) the oom killer sucks and pushing too high memory usage will reliably lock shit up with nothing killed. this used to happen a lot on compilations or particularly heavy software, games and shit
never had issues of this sort on windows to such an extent, nor any other systems though ofc theyll have their cons
@faggotracist1488 The only time I ever had a problem with that was last year when a bad kernel update caused my system to reliably lock up every time I used a torrent client
Not sure what was up with that but a fix came out pretty quick
@scathach linux does this to me regularly for reasons im fairly certain are task scheduler related its gotten so bad that im considering changing schedulers but i havent gotten around to it yet
@faggotracist1488 "preemptive multitasking is unnecessary for typical use"
It's not necessary but such a functional object-capability architecture for an OS would be a fundamental leap forward that would dramatically simplify writing secure, reliable software
File system access of any kind should be mediated by a monad that gets passed to functions that need to access the file system. It should be instantiated with a file path or root directory and functions should only be able to access files under that monad's root. Functions without a filesystem monad cannot access the filesystem at all, making sandboxing trivial
@scathach@newt guess it depends what you need. software *mostly* only needs atomicity for one or a few documents. like "please save the user's file and not just half of it while deleting the old file."
@newt Reading the Spritely goblins docs and whitepaper and playing around with the transactional heap has me wondering again if file systems as we know them today are a bad abstraction
@scathach funny thing. The only filesystem to implement transactions was NTFS and MS scrapped this feature eventually. It just doesn't work.
Any program should consider I/O and files as a part of the outside world. You cannot contain or make it immutable any more than you can make networking immutable.
@scathach@newt i have this paper https://arxiv.org/pdf/2102.01044 where they are doing transactional memory. the catch is that its using a skip list, whereas almost every DB system refuses to use a probablistic storage.
tangentially related, i have wondered if you could simply store every object in a game world inside said skip list (a list of object ID to the object itself) and then this becomes a cheap way to get arbitrary ACID transactions on ... whatever you want them on. :blobcatthonkang: