Skip to content

💥🐛Change DataMember ordering to 1-indexed - #1360

Merged
angularsen merged 1 commit into
release/v6from
agl/fix-protobuf-order
Feb 14, 2024
Merged

💥🐛Change DataMember ordering to 1-indexed#1360
angularsen merged 1 commit into
release/v6from
agl/fix-protobuf-order

Conversation

@angularsen

@angularsenangularsen commented Feb 4, 2024

Copy link
Copy Markdown
Owner

Related #1200
Fixes#1356

Apparently, protobuf-net does not support 0-indexed order values.

Some investigation indicates that the actual order value is not important, only the relative ordering.
#1356 (comment)

Fixes#1356
Apparently, protobuf-net does not support 0-indexed order values.
Some investigation indicates that the actual order value is not important, only the relative ordering.
#1356 (comment)
@codecov

codecovBot commented Feb 4, 2024

Copy link
Copy Markdown

Codecov Report

All modified and coverable lines are covered by tests ✅

Comparison is base (2424307) 84% compared to head (6319b5f) 84%.

Additional details and impacted files
@@ Coverage Diff @@## release/v6 #1360 +/- ##
==========================================
Coverage 84% 84% ==========================================
Files 299 299 Lines 32775 32775 ==========================================
Hits 27610 27610 Misses 5165 5165 

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@angularsen

Copy link
Copy Markdown
OwnerAuthor

@lipchev You originally added the data contract support. Do you have any insight on whether this change would be safe? The relative order is preserved, but it now starts with Order=1 instead of Order=0.

  • WCF should tolerate this, according to its docs. Protobuf-Net support not working because of DataMember order 0 #1356 (comment)
  • Binary formatters hopefully only care about relative ordering and thus still compatible?
    • Protobuf-net, it never worked and should be OK
    • BinaryFormatter is obsolete and generally not recommended for years, so hopefully no users are affected
    • A bunch of others exist too, haven't looked into how they handle this
  • XML/JSON serializers should tolerate any order, can't imagine it breaking these?

@Brunni For your information

@angularsenangularsen added this to the vNext milestone Feb 4, 2024
@lipchev

Copy link
Copy Markdown
Collaborator

@lipchev You originally added the data contract support. Do you have any insight on whether this change would be safe? The relative order is preserved, but it now starts with Order=1 instead of Order=0.

* WCF should tolerate this, according to its docs. [Protobuf-Net support not working because of DataMember order 0 #1356 (comment)](https://github.com/angularsen/UnitsNet/issues/1356#issuecomment-1900278438)
* Binary formatters hopefully only care about relative ordering and thus still compatible?
* Protobuf-net, it never worked and should be OK
* [BinaryFormatter](https://learn.microsoft.com/en-us/dotnet/api/system.runtime.serialization.formatters.binary.binaryformatter?view=net-8.0) is obsolete and generally not recommended for years, so hopefully no users are affected
* A bunch of others exist too, haven't looked into how they handle this
* XML/JSON serializers should tolerate any order, can't imagine it breaking these?

@Brunni For your information

I'm not aware of any possible issues with this- personally I've only ever used the Order for display purposes (and have often had members start with an Order>0 without any issues).

@angularsen

Copy link
Copy Markdown
OwnerAuthor

@lipchev Thanks!

@schalpat

Copy link
Copy Markdown

Hi, I tested this PR within my grpc based project, it works for me. With the 5.42.0 public release, the transferred quantities are always zero. With the library of this PR I get the correct values. Thanks for this. Do you know when an alpha release is coming?

@angularsen
angularsen merged commit 1c5a0f3 into release/v6Feb 14, 2024
@angularsen
angularsen deleted the agl/fix-protobuf-order branch February 14, 2024 06:16
@angularsen

Copy link
Copy Markdown
OwnerAuthor

By all accounts and from what I've mustered to find in docs, it seems like this should be a safe change.
I'll release it as a pre-release on v5 to unblock you, but unless I hear any noise in the short term, it'll land in stable v5 soon.

angularsen added a commit that referenced this pull request Feb 14, 2024
Related #1200Fixes#1356
Apparently, protobuf-net does not support 0-indexed order values.
- Change `DataMember` explicit order from 0-indexed to 1-indexed
Some investigation indicates that the actual order value is not important, only the relative ordering:
#1356 (comment)
- WCF should tolerate this, according to its docs. #1356 (comment)
- Binary formatters hopefully only care about relative ordering and thus still compatible?
- Protobuf-net, it never worked and should be OK
- [BinaryFormatter](https://learn.microsoft.com/en-us/dotnet/api/system.runtime.serialization.formatters.binary.binaryformatter?view=net-8.0) is obsolete and generally not recommended for years, so hopefully no users are affected
- A bunch of others exist too, haven't looked into how they handle this
- XML/JSON serializers should tolerate any order, can't imagine it breaking these?
angularsen added a commit that referenced this pull request Feb 14, 2024
Related #1200Fixes#1356
Apparently, protobuf-net does not support 0-indexed order values.
- Change `DataMember` explicit order from 0-indexed to 1-indexed
Some investigation indicates that the actual order value is not
important, only the relative ordering:
#1356 (comment)
- WCF should tolerate this, according to its docs.
#1356 (comment)
- Binary formatters hopefully only care about relative ordering and thus
still compatible?
- Protobuf-net, it never worked and should be OK
-
[BinaryFormatter](https://learn.microsoft.com/en-us/dotnet/api/system.runtime.serialization.formatters.binary.binaryformatter?view=net-8.0)
is obsolete and generally not recommended for years, so hopefully no
users are affected
- A bunch of others exist too, haven't looked into how they handle this
- XML/JSON serializers should tolerate any order, can't imagine it
breaking these?
lipchev added a commit to lipchev/UnitsNet that referenced this pull request Apr 10, 2024
commit 528db5e
Author: Andreas Gullberg Larsen <andreas.larsen84@gmail.com>
Date: Thu Apr 4 19:40:54 2024 +0200
JsonNet: 6.0.0-pre006
commit 5f28ca3
Author: Andreas Gullberg Larsen <andreas.larsen84@gmail.com>
Date: Thu Apr 4 19:40:49 2024 +0200
UnitsNet: 6.0.0-pre006
commit 8f9a1c0
Merge: 3f71f260eb58d3
Author: Andreas Gullberg Larsen <andreas.larsen84@gmail.com>
Date: Thu Apr 4 19:35:03 2024 +0200
Merge remote-tracking branch 'origin/master' into release/v6
# Conflicts:
#	CodeGen/Generators/NanoFrameworkGen/NuspecGenerator.cs
#	CodeGen/Generators/NanoFrameworkGen/QuantityGenerator.cs
#	CodeGen/Generators/UnitsNetGen/QuantityGenerator.cs
#	UnitsNet.NanoFramework/GeneratedCode/AbsorbedDoseOfIonizingRadiation/UnitsNet.NanoFramework.AbsorbedDoseOfIonizingRadiation.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Acceleration/UnitsNet.NanoFramework.Acceleration.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/AmountOfSubstance/UnitsNet.NanoFramework.AmountOfSubstance.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/AmplitudeRatio/UnitsNet.NanoFramework.AmplitudeRatio.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Angle/UnitsNet.NanoFramework.Angle.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ApparentEnergy/UnitsNet.NanoFramework.ApparentEnergy.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ApparentPower/UnitsNet.NanoFramework.ApparentPower.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Area/UnitsNet.NanoFramework.Area.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/AreaDensity/UnitsNet.NanoFramework.AreaDensity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/AreaMomentOfInertia/UnitsNet.NanoFramework.AreaMomentOfInertia.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/BitRate/UnitsNet.NanoFramework.BitRate.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/BrakeSpecificFuelConsumption/UnitsNet.NanoFramework.BrakeSpecificFuelConsumption.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Capacitance/UnitsNet.NanoFramework.Capacitance.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/CoefficientOfThermalExpansion/UnitsNet.NanoFramework.CoefficientOfThermalExpansion.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Compressibility/UnitsNet.NanoFramework.Compressibility.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Density/UnitsNet.NanoFramework.Density.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Duration/UnitsNet.NanoFramework.Duration.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/DynamicViscosity/UnitsNet.NanoFramework.DynamicViscosity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricAdmittance/UnitsNet.NanoFramework.ElectricAdmittance.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricCharge/UnitsNet.NanoFramework.ElectricCharge.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricChargeDensity/UnitsNet.NanoFramework.ElectricChargeDensity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricConductance/UnitsNet.NanoFramework.ElectricConductance.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricConductivity/UnitsNet.NanoFramework.ElectricConductivity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricCurrent/UnitsNet.NanoFramework.ElectricCurrent.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricCurrentDensity/UnitsNet.NanoFramework.ElectricCurrentDensity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricCurrentGradient/UnitsNet.NanoFramework.ElectricCurrentGradient.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricField/UnitsNet.NanoFramework.ElectricField.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricInductance/UnitsNet.NanoFramework.ElectricInductance.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricPotential/UnitsNet.NanoFramework.ElectricPotential.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricPotentialAc/UnitsNet.NanoFramework.ElectricPotentialAc.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricPotentialChangeRate/UnitsNet.NanoFramework.ElectricPotentialChangeRate.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricPotentialDc/UnitsNet.NanoFramework.ElectricPotentialDc.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricResistance/UnitsNet.NanoFramework.ElectricResistance.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricResistivity/UnitsNet.NanoFramework.ElectricResistivity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ElectricSurfaceChargeDensity/UnitsNet.NanoFramework.ElectricSurfaceChargeDensity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Energy/UnitsNet.NanoFramework.Energy.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/EnergyDensity/UnitsNet.NanoFramework.EnergyDensity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Entropy/UnitsNet.NanoFramework.Entropy.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Force/UnitsNet.NanoFramework.Force.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ForceChangeRate/UnitsNet.NanoFramework.ForceChangeRate.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ForcePerLength/UnitsNet.NanoFramework.ForcePerLength.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Frequency/UnitsNet.NanoFramework.Frequency.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/FuelEfficiency/UnitsNet.NanoFramework.FuelEfficiency.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/HeatFlux/UnitsNet.NanoFramework.HeatFlux.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/HeatTransferCoefficient/UnitsNet.NanoFramework.HeatTransferCoefficient.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Illuminance/UnitsNet.NanoFramework.Illuminance.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Impulse/UnitsNet.NanoFramework.Impulse.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Information/UnitsNet.NanoFramework.Information.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Irradiance/UnitsNet.NanoFramework.Irradiance.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Irradiation/UnitsNet.NanoFramework.Irradiation.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Jerk/UnitsNet.NanoFramework.Jerk.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/KinematicViscosity/UnitsNet.NanoFramework.KinematicViscosity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/LapseRate/UnitsNet.NanoFramework.LapseRate.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/LeakRate/UnitsNet.NanoFramework.LeakRate.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Length/UnitsNet.NanoFramework.Length.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Level/UnitsNet.NanoFramework.Level.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/LinearDensity/UnitsNet.NanoFramework.LinearDensity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/LinearPowerDensity/UnitsNet.NanoFramework.LinearPowerDensity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Luminance/UnitsNet.NanoFramework.Luminance.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Luminosity/UnitsNet.NanoFramework.Luminosity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/LuminousFlux/UnitsNet.NanoFramework.LuminousFlux.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/LuminousIntensity/UnitsNet.NanoFramework.LuminousIntensity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/MagneticField/UnitsNet.NanoFramework.MagneticField.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/MagneticFlux/UnitsNet.NanoFramework.MagneticFlux.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Magnetization/UnitsNet.NanoFramework.Magnetization.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Mass/UnitsNet.NanoFramework.Mass.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/MassConcentration/UnitsNet.NanoFramework.MassConcentration.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/MassFlow/UnitsNet.NanoFramework.MassFlow.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/MassFlux/UnitsNet.NanoFramework.MassFlux.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/MassFraction/UnitsNet.NanoFramework.MassFraction.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/MassMomentOfInertia/UnitsNet.NanoFramework.MassMomentOfInertia.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Molality/UnitsNet.NanoFramework.Molality.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/MolarEnergy/UnitsNet.NanoFramework.MolarEnergy.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/MolarEntropy/UnitsNet.NanoFramework.MolarEntropy.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/MolarFlow/UnitsNet.NanoFramework.MolarFlow.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/MolarMass/UnitsNet.NanoFramework.MolarMass.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Molarity/UnitsNet.NanoFramework.Molarity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Permeability/UnitsNet.NanoFramework.Permeability.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Permittivity/UnitsNet.NanoFramework.Permittivity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/PorousMediumPermeability/UnitsNet.NanoFramework.PorousMediumPermeability.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Power/UnitsNet.NanoFramework.Power.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/PowerDensity/UnitsNet.NanoFramework.PowerDensity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/PowerRatio/UnitsNet.NanoFramework.PowerRatio.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Pressure/UnitsNet.NanoFramework.Pressure.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/PressureChangeRate/UnitsNet.NanoFramework.PressureChangeRate.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Properties/AssemblyInfo.cs
#	UnitsNet.NanoFramework/GeneratedCode/RadiationExposure/UnitsNet.NanoFramework.RadiationExposure.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Radioactivity/UnitsNet.NanoFramework.Radioactivity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Ratio/UnitsNet.NanoFramework.Ratio.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/RatioChangeRate/UnitsNet.NanoFramework.RatioChangeRate.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ReactiveEnergy/UnitsNet.NanoFramework.ReactiveEnergy.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ReactivePower/UnitsNet.NanoFramework.ReactivePower.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ReciprocalArea/UnitsNet.NanoFramework.ReciprocalArea.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ReciprocalLength/UnitsNet.NanoFramework.ReciprocalLength.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/RelativeHumidity/UnitsNet.NanoFramework.RelativeHumidity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/RotationalAcceleration/UnitsNet.NanoFramework.RotationalAcceleration.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/RotationalSpeed/UnitsNet.NanoFramework.RotationalSpeed.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/RotationalStiffness/UnitsNet.NanoFramework.RotationalStiffness.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/RotationalStiffnessPerLength/UnitsNet.NanoFramework.RotationalStiffnessPerLength.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Scalar/UnitsNet.NanoFramework.Scalar.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/SolidAngle/UnitsNet.NanoFramework.SolidAngle.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/SpecificEnergy/UnitsNet.NanoFramework.SpecificEnergy.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/SpecificEntropy/UnitsNet.NanoFramework.SpecificEntropy.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/SpecificFuelConsumption/UnitsNet.NanoFramework.SpecificFuelConsumption.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/SpecificVolume/UnitsNet.NanoFramework.SpecificVolume.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/SpecificWeight/UnitsNet.NanoFramework.SpecificWeight.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Speed/UnitsNet.NanoFramework.Speed.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/StandardVolumeFlow/UnitsNet.NanoFramework.StandardVolumeFlow.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Temperature/UnitsNet.NanoFramework.Temperature.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/TemperatureChangeRate/UnitsNet.NanoFramework.TemperatureChangeRate.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/TemperatureDelta/UnitsNet.NanoFramework.TemperatureDelta.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/TemperatureGradient/UnitsNet.NanoFramework.TemperatureGradient.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ThermalConductivity/UnitsNet.NanoFramework.ThermalConductivity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/ThermalResistance/UnitsNet.NanoFramework.ThermalResistance.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Torque/UnitsNet.NanoFramework.Torque.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/TorquePerLength/UnitsNet.NanoFramework.TorquePerLength.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Turbidity/UnitsNet.NanoFramework.Turbidity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/VitaminA/UnitsNet.NanoFramework.VitaminA.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/Volume/UnitsNet.NanoFramework.Volume.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/VolumeConcentration/UnitsNet.NanoFramework.VolumeConcentration.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/VolumeFlow/UnitsNet.NanoFramework.VolumeFlow.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/VolumeFlowPerArea/UnitsNet.NanoFramework.VolumeFlowPerArea.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/VolumePerLength/UnitsNet.NanoFramework.VolumePerLength.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/VolumetricHeatCapacity/UnitsNet.NanoFramework.VolumetricHeatCapacity.nuspec
#	UnitsNet.NanoFramework/GeneratedCode/WarpingMomentOfInertia/UnitsNet.NanoFramework.WarpingMomentOfInertia.nuspec
#	UnitsNet.NumberExtensions/GeneratedCode/NumberToIrradiationExtensions.g.cs
#	UnitsNet.NumberExtensions/GeneratedCode/NumberToVolumeFlowExtensions.g.cs
#	UnitsNet.NumberExtensions/UnitsNet.NumberExtensions.csproj
#	UnitsNet/CustomCode/Quantities/Area.extra.cs
#	UnitsNet/CustomCode/Quantities/Length.extra.cs
#	UnitsNet/CustomCode/Quantities/TemperatureDelta.extra.cs
#	UnitsNet/GeneratedCode/Quantities/BitRate.g.cs
#	UnitsNet/GeneratedCode/Quantities/Information.g.cs
#	UnitsNet/GeneratedCode/Quantities/Power.g.cs
#	UnitsNet/UnitsNet.csproj
commit 0eb58d3
Author: Andreas Gullberg Larsen <andreas.larsen84@gmail.com>
Date: Thu Apr 4 18:41:05 2024 +0200
👔Change nuget license from MIT to MIT-0 (angularsen#1381)
Fixesangularsen#1379
Backport from v6: angularsen#1380
Change the license expression in the nugets to match the LICENSE file.
Previously, nuget.org did not accept MIT-0 expression.
---------
Co-authored-by: Muximize <Muximize@users.noreply.github.com>
commit 3f71f26
Author: Travis Bement <travis.bement@gmail.com>
Date: Thu Apr 4 12:38:00 2024 -0400
Add operators for ReciprocalLength/-Area (v6) (angularsen#1385)
Added additional operators that result in ReciprocalLength (Length/Area,
Area/Volume) and ReciprocalArea (Length/Volume)
(Mirrors functionality of v5 PR angularsen#1382)
---------
Co-authored-by: Travis Bement <U001TB7@exelonds.com>
Co-authored-by: Andreas Gullberg Larsen <andreas.larsen84@gmail.com>
commit 1b87682
Author: Travis Bement <travis.bement@gmail.com>
Date: Thu Apr 4 12:27:32 2024 -0400
Add operators for ReciprocalLength/-Area (angularsen#1382)
Added additional operators that result in `ReciprocalLength`
(Length/Area, Area/Volume) and `ReciprocalArea` (Length/Volume)
Co-authored-by: Travis Bement <U001TB7@exelonds.com>
commit b9b4365
Author: Muximize <Muximize@users.noreply.github.com>
Date: Thu Apr 4 18:24:11 2024 +0200
Update Nuget dependencies (angularsen#1384)
commit 3b79a65
Author: Muximize <Muximize@users.noreply.github.com>
Date: Thu Apr 4 18:22:17 2024 +0200
Change license from MIT to MIT-0 in NuspecGenerator (angularsen#1383)
commit 6c5d264
Author: Andreas Gullberg Larsen <andreas.larsen84@gmail.com>
Date: Thu Mar 28 00:34:35 2024 +0100
JsonNet: 6.0.0-pre005
commit 1536509
Author: Andreas Gullberg Larsen <andreas.larsen84@gmail.com>
Date: Thu Mar 28 00:34:28 2024 +0100
UnitsNet: 6.0.0-pre005
commit dc7d53c
Author: Andreas Gullberg Larsen <andreas.larsen84@gmail.com>
Date: Thu Mar 28 00:33:41 2024 +0100
👔Change nuget license from MIT to MIT-0 (angularsen#1380)
Fixesangularsen#1379
Change the license expression in the nugets to match the LICENSE file.
Previously, nuget.org did not accept MIT-0 expression.
commit 8519cb1
Author: Andreas Gullberg Larsen <andreas.larsen84@gmail.com>
Date: Tue Mar 12 20:23:37 2024 +0100
JsonNet: 6.0.0-pre004
commit 28c534e
Author: Andreas Gullberg Larsen <andreas.larsen84@gmail.com>
Date: Tue Mar 12 20:23:31 2024 +0100
UnitsNet: 6.0.0-pre004
commit 6c4faa9
Author: Andreas Gullberg Larsen <andreas.larsen84@gmail.com>
Date: Tue Mar 12 20:21:13 2024 +0100
UnitsNet: 5.49.0
commit 1b47e7d
Author: Muximize <Muximize@users.noreply.github.com>
Date: Tue Mar 12 20:20:17 2024 +0100
Upgrade to .NET 8 (angularsen#1375)
As we're doing breaking changes in v6, it might be worth upgrading to the current [Long Term Support](https://dotnet.microsoft.com/en-us/platform/support/policy/dotnet-core) version of dotnet.
This enables us to use C# 12 features and remove a bunch of conditional compilation (net 5328 deletions)
commit 6ab5f21
Author: Andreas Gullberg Larsen <andreas.larsen84@gmail.com>
Date: Sun Mar 3 20:45:46 2024 +0100
JsonNet: 6.0.0-pre003
commit 0413634
Author: Andreas Gullberg Larsen <andreas.larsen84@gmail.com>
Date: Sun Mar 3 20:45:41 2024 +0100
UnitsNet: 6.0.0-pre003
commit 6a9ae6c
Author: UrielZyx <30781151+UrielZyx@users.noreply.github.com>
Date: Sun Mar 3 21:44:35 2024 +0200
Add type safety and improve type inference (angularsen#1374)
Some of the extension methods in `UnitMath.cs` (e.g. Average) take an
`Enum unitType` argument.
The compiler should be able to detect when the units type doesn't match
the quantity type.
* This will break backwards compatibility, but only for:
* People doing really weird things.
* People using the explicit generic type instead of inference (e.g.
`Average<Length>(LengthUnit.Inch)`), in which case they can fix the code
by changing it to e.g. `Average<Length, LengthUnit>(LengthUnit.Inch)`
* This change might be warranted in `UnitConverter.cs` as well, but
can't be implemented as a straight-forward refactor since it breaks
compatibility in generated code (e.g.
`unitConverter.SetConversionFunction<ElectricPotential>` in
`ElectricPotential` should be `SetConversionFunction<ElectricPotential,
ElectricPotentialUnit>`
In addition, had to remove a few unit tests that were asserting type
safety.
All tests that were removed:
* Were only testing that an incorrect behavior throws an exception
(`Assert.Throws`)
* Don't compile after the changes in `UnitMath.cs`
commit aa61d5a
Author: Tim-Borcherding <128801386+Tim-Borcherding@users.noreply.github.com>
Date: Fri Mar 1 21:23:27 2024 +0100
Add TemperatureDelta / Duration = TemperatureChangeRate (angularsen#1370)
Added missing operator to divide a TemperatureDelta by a time/duration
to get the TemperatureChangeRate.
---------
Co-authored-by: Andreas Gullberg Larsen <andreas.larsen84@gmail.com>
commit d389213
Author: Andreas Gullberg Larsen <andreas.larsen84@gmail.com>
Date: Tue Feb 27 13:44:34 2024 +0100
UnitsNet: 5.48.0
commit ace4fb4
Author: José Simões <jose.simoes@eclo.solutions>
Date: Tue Feb 27 12:42:49 2024 +0000
Add MagenticField and Acceleration for .NET nanoFramework (angularsen#1369)
commit 4159603
Author: Andreas Gullberg Larsen <andreas.larsen84@gmail.com>
Date: Sat Feb 24 00:04:57 2024 +0100
UnitsNet: 5.47.0
commit 7f2a39e
Author: Andreas Gullberg Larsen <andreas.larsen84@gmail.com>
Date: Fri Feb 23 23:11:12 2024 +0100
README: Link to 6.x upgrade guide
commit 1b3647f
Author: Andreas Gullberg Larsen <andreas.larsen84@gmail.com>
Date: Sun Feb 18 17:54:23 2024 +0100
nano: ✏️ Fix xmldoc of MaxValue, MinValue
commit 3a2a6e8
Author: Andreas Gullberg Larsen <andreas.larsen84@gmail.com>
Date: Sun Feb 18 15:31:56 2024 +0100
UnitsNet: 5.46.0-pre
commit 91d8969
Author: Andreas Gullberg Larsen <andreas.larsen84@gmail.com>
Date: Sun Feb 18 15:30:53 2024 +0100
fixup! Add Btu/ft² in irradiation (angularsen#1364)
Fix remaining after rename.
commit ff39807
Author: Andreas Gullberg Larsen <andreas.larsen84@gmail.com>
Date: Sun Feb 18 15:28:52 2024 +0100
Regen
commit 3b74e19
Author: Piotr Stenke <stenkepiotr@gmail.com>
Date: Sat Feb 17 17:28:48 2024 +0100
Add radiation equivalent dose (angularsen#1352)
Added radiation equivalent dose and its two units - Sievert (SI-derived)
and Roentgen equivalent man (or, simply, rem).
Sievert comes with three prefixes - milli, micro, nano. This will
support 99% of usecases, ranging from radiation caused by Earth itself
(~6 to 83nSv/h, per this
[article](https://www.epa.gov/radnet/about-exposure-and-dose-rates)),
[eating bananas](https://en.wikipedia.org/wiki/Banana_equivalent_dose)
(yep, that's a real unit), X-rays or tomography scans, as well as
measuring health risk of radiation-induced cancer and radiation
sickness.
Roentgen equivalent man is mostly used in the US, and it can be easily
converted to sieverts (1 sievert = 100 rems). It includes only one
prefix - milli - as I did not find any sources with other prefixes being
used.
Wikipedia pages:
https://en.wikipedia.org/wiki/Equivalent_dosehttps://en.wikipedia.org/wiki/Sieverthttps://en.wikipedia.org/wiki/Roentgen_equivalent_manhttps://en.wikipedia.org/wiki/Orders_of_magnitude_(radiation)
---------
Co-authored-by: Piotr Stenke <piotr.stenke@nexpertis.pl>
commit 85aec1b
Author: Andreas Gullberg Larsen <andreas.larsen84@gmail.com>
Date: Sat Feb 17 14:39:58 2024 +0100
Regen
commit b1f88bf
Author: Mingbo Peng <mingo1214@gmail.com>
Date: Sat Feb 17 21:39:24 2024 +0800
Add Btu/ft² in irradiation (angularsen#1364)
Added a new unit Btu/ft² in irradiation. This is commonly used in
building industry.
---------
Co-authored-by: Andreas Gullberg Larsen <andreas.larsen84@gmail.com>
commit 545c8b9
Author: Andreas Gullberg Larsen <andreas.larsen84@gmail.com>
Date: Wed Feb 14 07:39:49 2024 +0100
UnitsNet: 5.45.0-pre
commit c23cf15
Author: Andreas Gullberg Larsen <andreas.larsen84@gmail.com>
Date: Wed Feb 14 07:37:45 2024 +0100
UnitsNet: UnitsNet/5.45.0-pre
commit d980ec1
Author: Andre Rodi <89607119+andrerodi@users.noreply.github.com>
Date: Wed Feb 14 07:35:01 2024 +0100
Add VolumeFlow prefixes Deca, Hecto (angularsen#1362)
Fixesangularsen#1253
Added the prefixes 'deca' and 'hecto', since, at least for the 'hecto'
prefix, it's a very common unit used in the brewing industry. Added the
'deca' prefix while I was at it.
---------
Co-authored-by: André Rodi <andre.rodi@kaspar-schulz.de>
commit 6604660
Author: Andreas Gullberg Larsen <andreas.larsen84@gmail.com>
Date: Wed Feb 14 07:27:54 2024 +0100
UnitsNet: 5.44.0-pre
Pre-release of angularsen#1363
commit aa2a743
Author: Andreas Gullberg Larsen <andreas.larsen84@gmail.com>
Date: Wed Feb 14 07:26:22 2024 +0100
💥🐛Change DataMember ordering to 1-indexed (angularsen#1360) (angularsen#1363)
Related angularsen#1200Fixesangularsen#1356
Apparently, protobuf-net does not support 0-indexed order values.
- Change `DataMember` explicit order from 0-indexed to 1-indexed
Some investigation indicates that the actual order value is not
important, only the relative ordering:
angularsen#1356 (comment)
- WCF should tolerate this, according to its docs.
angularsen#1356 (comment)
- Binary formatters hopefully only care about relative ordering and thus
still compatible?
- Protobuf-net, it never worked and should be OK
-
[BinaryFormatter](https://learn.microsoft.com/en-us/dotnet/api/system.runtime.serialization.formatters.binary.binaryformatter?view=net-8.0)
is obsolete and generally not recommended for years, so hopefully no
users are affected
- A bunch of others exist too, haven't looked into how they handle this
- XML/JSON serializers should tolerate any order, can't imagine it
breaking these?
commit e86eb17
Author: Andreas Gullberg Larsen <andreas.larsen84@gmail.com>
Date: Tue Jan 23 21:47:01 2024 +0100
UnitsNet: 5.43.0
commit 6ffa8b1
Author: Andreas Gullberg Larsen <andreas.larsen84@gmail.com>
Date: Tue Jan 23 21:46:35 2024 +0100
🐛Fix precision of Volume.CubicInch (angularsen#1358)
Fixesangularsen#1357
An imprecise value was used, fixed by using the definition of inch as 2.54e-2 per meter.
Verified that the related unit CubicFoot is already precise.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@angularsen@lipchev@schalpat