Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Validate dart_model for caching / performance #94

Open
davidmorgan opened this issue Oct 10, 2024 · 2 comments
Open

Validate dart_model for caching / performance #94

davidmorgan opened this issue Oct 10, 2024 · 2 comments

Comments

@davidmorgan
Copy link
Contributor

@jakemac53 @scheglov @munificent @johnniwinther

In #93 I gave a quick rundown of the current state with dart_model and how it's ready for prototyping of macro metadata.

It's also pretty much at a point to start thinking about questions re: caching, invalidation and performance, some relevant issues: dart-lang/sdk#55784 and dart-lang/language#3868

In theory the query-based approach should fit well with invalidation+caching, this issue is about actually checking :)

I think probably for this one next steps are on me, as we have support for running a macro application with analyzer/CFE e2e but we're missing

  • Support for iterating, i.e. for "apply, edit code, apply"; which is a critical case for benchmarking, and also is needed before we even have an idea what "invalidation" and "caching" mean
  • Benchmarking :)
@scheglov
Copy link

Do we switch the analyzer and CFE to the new introspection and generation any time soon?

@davidmorgan
Copy link
Contributor Author

If by "switch" you mean drop v1 and move v2 into the analyzer+CFE, then, not soon: v2 has a few end to end examples but is mostly incomplete.

We could choose to switch before it's complete, breaking v1 functionality; that might even be useful as it would reduce the amount of code being maintained. But there is also the question of dependencies and churn: it's useful to have this code be outside the SDK until it's stable; we need to either wait until it's stable or have a new strategy for allowing it to churn until it's stable.

At a high level I think we want to answer questions like performance, macro metadata handling and protocol/language/macro versioning as early as possible, well before v2 is complete. So "depth first" implementation in which we aim for e2e examples of the hardest parts first, not "breadth first" with full feature coverage :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants