Run up to 0.14.0 #139
arlyon
announced in
Announcements
Replies: 1 comment 1 reply
-
Currently we use a lot of Boxing as a result of a loop (causing infinite sized structs). After some investigation of the depedency tree, this is exclusively encountered in the ApiErrors struct which has I think, due to the small and very maintainable number of cases where this is the case, that we revert the Box change, and rely on some metadata to determine where to box. IMO the best solution is just to Box all the types in Thoughts? @erichCompSci @FL33TW00D? |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Hello
There are a few things we need to sort out for 0.14, which I will list below. There are essentially two paths here, one being patching the current flawed codegen, and the other being rewriting it from scratch.
The crux of the issue right now is that the codegen is frequently breaking due to a) imperfect generation code and b) frequent and significant changes to the stripe openapi spec. A major symptom of this is having to temporarily change the API to use Boxes, as the latest spec introduces recursive data structures and so broke compilation. These changes are technically backwards compatible on the stripe side, as adding a field doesn't break API users, however for us using a typed language, it is a breaking change. And so we released 0.13.
The goal for 0.14 is to try and simplify the codebase in spite of this change, but we have a major decision to make. Simply put, stripe could make more changes like this, so the choice is, keep everything boxed (and by extension visually noisy, and less space-efficient), with knowledge that new recursive data structures are non-breaking, or only box at known recursion points, requiring extra effort / heuristics to maintain, and potentially causing breaking changes down the line. All of this while juggling the code size and codegen (serde derive) times to make sure the library stays both small and useful.
Default
across the codebase Derive Default on structs #152now that we are approaching an api / feature set that is appropriate, we should probably move away from 'moving fast' and begin to be more clear and descriptive with changes, so that the change over time is easy to digest
Beta Was this translation helpful? Give feedback.
All reactions