this post was submitted on 21 Apr 2025
31 points (89.7% liked)

Linux

53682 readers
748 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 6 years ago
MODERATORS
 

Screenshot showing how the directory last-modified timestamp changes each time a file underneath it is added, renamed and then removed.

I'm currently working on a build tool, which does caching based on the last-modified timestamp of files. And yeah, man, I was prepared for a world of pain, where I'd have to store a list of all files, so I could tell when one of them disappears.
I probably would've also had to make up some non-existent last-modified timestamp to try to pretend I know when that file got deleted. I figured, there's no way to ask the deleted file when it got deleted, because it doesn't exist anymore.

Thank you, to whomever had that smart idea to design it like that. I can just take the directory last-modified timestamp now, if it's the highest value.
In fact, my implementation accidentally does this correct already. That's how I found out. 🫠

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 2 points 1 week ago (1 children)

I don't think, inotify works for me, because I don't have a continuously running process. My users rather just run some build command and then I go and check, if any input files changed since the last run.

[–] [email protected] 6 points 1 week ago (1 children)

I'm sure you've already considered it, but from that description it sounds very much like make. That compares the input files' timestamps to the output files' timestamps, so it might be different to your plan though.

[–] [email protected] 5 points 1 week ago

Yeah, I'm building more-or-less an alternative to make. Major difference is that I'm not using shell commands, but rather users will define their build code in Rust ...because it's intended to be a build tool for Rust applications (beyond what cargo does).

Thanks for the comment, though. So far, I haven't limited inputs to just be files, so I don't actually assume to have a last-modified timestamp. Rather, my assumption is that I can get some value which changes when the input changes. In the case of a file, that's the last-modified timestamp, but theoretically, it could also be a hash. But that means I have to store these values to be able to detect a change. Being able to just say that one thing is newer than the other without storing anything, that is pretty cool and might be worth changing my assumption for.