{{ message }}
Repository navigation
fix!: format a float with the invariant culture in the runtime converter, and build against ReactiveUI 25 - #155
Merged
Merged
Conversation
…er, as generated bindings do ReactiveUI 25 takes its converters from this library, so the parity tests now compare generated conversions with them. SingleToStringTypeConverter formatted with the current culture while the generated binding, and ReactiveUI 24's converter, use the invariant culture; the runtime converter now matches. Build against ReactiveUI 25: the System.Reactive test compilations reference ReactiveUI.Reactive, which brings that flavour's runtime, as its consumers do. WhenAnyValue on a ReactiveObject now resolves to this library, so its dispatch is generated. The ReactiveUI engine benchmarks stay on ReactiveUI 24.3.0, the last release with that engine.
… a lost race always retries ConcurrentRegistrations_AllTakeEffect relied on Parallel.For to collide two registrations, which a runner with few cores often did not, leaving the retry path of SetGeneratedViewDispatch uncovered on some runs. Each round now starts at least eight threads together at a barrier.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.




Summary
A
floatbound through the runtime converter now formats with the invariant culture, as a generated binding does, and the repository builds against ReactiveUI 25.SingleToStringTypeConverterformats with the invariant culture when no hint is given. A generatedfloat-to-stringbinding already did, so the runtime and generated paths now write the same text in every culture.ReactiveUI.Reactive, the package a System.Reactive consumer references.WhenAnyValueon aReactiveObjectnow resolves to this library, so its dispatch is generated and snapshotted.Why
Renovate's bump to ReactiveUI 25 failed the test suite. ReactiveUI 25 takes its binding APIs and converters from this library, and lean ReactiveUI brings the lean runtime with it. The System.Reactive test compilations referenced lean ReactiveUI for
ReactiveObject, so they mixed the two runtimes, which no consumer does.The conversion parity tests now compare generated conversions with this library's converters, since those are the ones ReactiveUI registers. That showed
SingleToStringTypeConverterused the current culture, while the generated binding and ReactiveUI 24's converter use the invariant culture. In a culture with a decimal comma, such as fr-FR, a runtime binding wrote7,25where a generated one wrote7.25.Breaking changes
SingleToStringTypeConverterreturns invariant-culture text with no hint, such as7.25rather than7,25in fr-FR. Anintorstringhint formats as before. Code that relied on the current-culture default passes a format hint instead.How this was verified
The converter tests cover the default under a comma-decimal culture, and the parity tests compare every standard conversion with its runtime converter in en-US and fr-FR. Ran
ToPropertyVerificationon net8.0 to net11.0 and the source generators documentation page.Notes for the reviewer
Start with
SingleToStringTypeConverter.cs, the only product change. The rest is test infrastructure:TestHelper.RuntimeReferencesseeds each flavour from its own ReactiveUI package, and the scenario shifts inReactiveRuntimeFlavourTestsandSourceGeneratorsContractTestsnameReactiveUI.Reactive.ReactiveObjectfor that flavour.Checklist