Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR is a big one. This PR implements filesystem caching. While the generator sync is currently quite fast, I want to start introducing more expensive generators that can generate code and spawn subprocesses. This requires generators to only run once and ideally not unless they're needed.
There are currently two new levels of caching:
One of the unique features of Bud is its virtual generator filesystem. A nice property that came out of using a virtual filesystem as the primary abstraction is that caching can be granular and implemented in a fairly straightforward way:
There's a bit more nuance around reacting to newly created nested files and I'm sure it's not 100% perfect yet, but it's good enough to build upon. As far as I can tell, this core piece of Bud is basically done™️ in terms of requirements so I'm excited to get back to building user-facing features on top of Bud's virtual filesystem!
public/
generator). I'll rework this and add it back in a subsequent PR!