-
-
Notifications
You must be signed in to change notification settings - Fork 141
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
Refactor the codegen in seperate crates #197
Conversation
Codecov Report
@@ Coverage Diff @@
## master #197 +/- ##
=========================================
+ Coverage 5.45% 6.01% +0.56%
=========================================
Files 150 126 -24
Lines 14309 11132 -3177
=========================================
- Hits 780 670 -110
+ Misses 13529 10462 -3067
📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more |
hey @arlyon, just curious if you expect this to make it into 0.16.0 or what the current status is — as you mentioned in the description, the non-parallel compilation is pretty killer and is currently doubling compilation times on a project :/ |
The answer is no eta. I am hacking on this when I have time but it is a fairly significant change (potentially breaking) so I want to also fix a few other major issues at the same time. I am reaching close to a 'preview' build and will update here when I finish it. I estimate another 20-40 hours of work. |
Some more progress has been made here. Working on pulling out cyclic dependencies into common crates. Cycles are as follows:
To turn this into a DAG we must break core deps on any other package |
f50cc4b
to
c6a7cdd
Compare
Hello 👋 In an effort to move this along... Would it be fair to say the remaining work here starts with removing/refactoring/rewriting the parts of I'd really like to have this change available since compiling crates that use async-stripe heavily end up with long lto_optimize and codegen phases, it adds a lot of time to CI builds. I'll do what I can to help push this along! |
closing this since it has stalled |
This PR aims to:
To do this we need to solve a few things. Rust does not allow circular crate dependencies and as it stands the generated code refers to the client directly, so we move the main apis into a 'core' crate and have the generated ones depend on that. Then have a separate crate expose both.
Open questions:
Closes #196