Releases: oxidecomputer/dropshot-api-manager
dropshot-api-manager 0.7.2
Changed
For incompatible changes to blessed API documents, the output is now significantly improved. It now shows all the endpoints and paths from which the change is reachable, and also deduplicates identical changes across different API versions.
dropshot-api-manager 0.7.1
Added
Normalize WebSocket response JSON schema changes between Dropshot 0.16 and 0.17. (The changes are wire-compatible but the JSON schema is different.)
dropshot-api-manager 0.7.0
Changed
- Dropshot updated to 0.17.0.
dropshot-api-manager 0.6.0
Added
The Dropshot API manager now works in non-colocated Jujutsu repositories, for example Jujutsu workspaces.
Changed
- The
--blessed-from-gitcommand-line option has been renamed to--blessed-from-vcs, and in Jujutsu repos it now accepts Jujutsu revsets. (The old name, as well as the oldOPENAPI_MGR_BLESSED_FROM_GITenvironment variable, are still supported for backwards compatibility.) - The
--blessed-from-vcscommand-line argument'sREVISION:PATHformat has been split into--blessed-from-vcsand--blessed-from-vcs-path. This change was made soREVISIONcould be a Jujutsu revset. Revsets often have embedded colons.
dropshot-api-manager 0.5.2
Changed
API manager structures are now dropped in parallel, leading to measured performance gains of up to 15%.
dropshot-api-manager 0.5.1
Fixed
Handle scenarios where the blessed version was missing from local disk. This was previously unusual and indicated a user deleting the file from disk, but the semantic compatibility support added in version 0.2.1 makes this more likely to happen in normal workflows.
dropshot-api-manager 0.5.0
Changed
- API processing and validation is now done in parallel using rayon. We've measured up to 6x performance improvements as a result.
- The validation function is now called in parallel. As a result, if the validation function is a closure, it must be
Syncon top of the existing requirement to beSend. (Most validation functions are just function pointers, which are alreadySync.)
dropshot-api-manager 0.4.0
Added
-
Support for Git stubs for versioned APIs, which enable Git's rename detection to work on blessed versions. For more information, see oxidecomputer/git-stub and RFD 634.
-
The API manager now handles unparseable files (e.g., those with merge conflict markers) properly. This is a fix for a pre-existing issue: in some situations, merge conflicts could have occurred with generated files. However, the issue is exacerbated by Git stub support since that causes rename detection to trigger more often.
As of this version of dropshot-api-manager, all merge conflict situations can be addressed by running
cargo xtask openapi generateor equivalent.
Fixed
- For blessed versions, merge base detection now recognizes Git's
MERGE_HEAD. It'll use whichever ofHEADorMERGE_HEADis a descendant of the other (so it works with both first-parent and second-parent merges). - Fixes for several bugs found while building out a more robust test suite.
dropshot-api-manager 0.3.0
Added
-
For versioned APIs, the latest blessed version is now checked for bytewise equality, not just wire compatibility. This prevents trivial changes (such as documentation changes or type renames) from accumulating invisibly.
The previous behavior can be restored with the
allow_trivial_changes_for_latestfunction. -
Validation functions can now be
Fnclosures, not just function pointers.
Changed
-
The optional
extra_validationargument no longer needs to be specified onManagedApiConfig. Instead, first convert theManagedApiConfigto aManagedApi, then callextra_validationon the resultingManagedApi. -
ManagedApis::newis changed to accept an iterator over any kind of type that can be converted toManagedApi, includingManagedApiConfig.
dropshot-api-manager 0.2.4
Added
ValidationContext::is_latest()returnstrueif this is the latest version of a versioned API, or if it is a lockstep API.ValidationContext::is_blessed()returnsSome(true)if a version is blessed,Some(false)if not, orNonefor non-versioned APIs.
Changed
extra_validationis now compatible with versioned APIs. Use theValidationContext::is_blessedto filter out validation checks for blessed APIs as appropriate (since those APIs are immutable), andis_latestto only write out extra files for the latest version of the API.