UnitsNet 5.0.0-rc013

This is a prerelease version of UnitsNet.
There is a newer version of this package available.
See the version list below for details.
dotnet add package UnitsNet --version 5.0.0-rc013
                    
NuGet\Install-Package UnitsNet -Version 5.0.0-rc013
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="UnitsNet" Version="5.0.0-rc013" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="UnitsNet" Version="5.0.0-rc013" />
                    
Directory.Packages.props
<PackageReference Include="UnitsNet" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add UnitsNet --version 5.0.0-rc013
                    
#r "nuget: UnitsNet, 5.0.0-rc013"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package UnitsNet@5.0.0-rc013
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=UnitsNet&version=5.0.0-rc013&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=UnitsNet&version=5.0.0-rc013&prerelease
                    
Install as a Cake Tool

Build Status codecov StandWithUkraine

Units.NET

Add strongly typed quantities to your code and get merrily on with your life.

No more magic constants found on Stack Overflow, no more second-guessing the unit of parameters and variables.

Upgrading from 4.x to 5.x

Overview

<a name="how-to-install"></a>Installing via NuGet

Add it via CLI

dotnet add package UnitsNet

or go to NuGet Gallery | UnitsNet for detailed instructions.

Build Targets

<a name="static-typing"></a>Static Typing

// Construct
Length meter = Length.FromMeters(1);
Length twoMeters = new Length(2, LengthUnit.Meter);

// Convert
double cm = meter.Centimeters;         // 100
double yards = meter.Yards;            // 1.09361
double feet = meter.Feet;              // 3.28084
double inches = meter.Inches;          // 39.3701

// Pass quantity types instead of values to avoid conversion mistakes and communicate intent
string PrintPersonWeight(Mass weight)
{
    // Compile error! Newtons belong to Force, not Mass. A common source of confusion.
    double weightNewtons = weight.Newtons;

    // Convert to the unit of choice - when you need it
    return $"You weigh {weight.Kilograms:F1} kg.";
}

<a name="operator-overloads"></a>Operator Overloads

// Arithmetic
Length l1 = 2 * Length.FromMeters(1);
Length l2 = Length.FromMeters(1) / 2;
Length l3 = l1 + l2;

// Construct between units
Length distance = Speed.FromKilometersPerHour(80) * TimeSpan.FromMinutes(30);
Acceleration a1 = Speed.FromKilometersPerHour(80) / TimeSpan.FromSeconds(2);
Acceleration a2 = Force.FromNewtons(100) / Mass.FromKilograms(20);
RotationalSpeed r = Angle.FromDegrees(90) / TimeSpan.FromSeconds(2);

<a name="culture"></a>Culture and Localization

The culture for abbreviations defaults to Thread.CurrentCulture and falls back to US English if not defined. Thread.CurrentCulture affects number formatting unless a custom culture is specified. The relevant methods are:

  • ToString()
  • GetAbbreviation()
  • Parse/TryParse()
  • ParseUnit/TryParseUnit()
var usEnglish = new CultureInfo("en-US");
var russian = new CultureInfo("ru-RU");
var oneKg = Mass.FromKilograms(1);

// ToString() uses CurrentCulture for abbreviation language number formatting. This is consistent with the behavior of the .NET Framework,
// where DateTime.ToString() uses CurrentCulture for the whole string, likely because mixing an english date format with a russian month name might be confusing.
Thread.CurrentThread.CurrentCulture = russian;
string kgRu = oneKg.ToString(); // "1 кг"

// ToString() with specific culture and custom string format pattern
string mgUs = oneKg.ToUnit(MassUnit.Milligram).ToString(usEnglish, "unit: {1}, value: {0:F2}"); // "unit: mg, value: 1.00"
string mgRu = oneKg.ToUnit(MassUnit.Milligram).ToString(russian, "unit: {1}, value: {0:F2}"); // "unit: мг, value: 1,00"

// Parse measurement from string
Mass kg = Mass.Parse("1.0 kg", usEnglish);

// Parse unit from string, a unit can have multiple abbreviations
RotationalSpeedUnit rpm1 = RotationalSpeed.ParseUnit("rpm"); // RotationalSpeedUnit.RevolutionPerMinute
RotationalSpeedUnit rpm2 = RotationalSpeed.ParseUnit("r/min");  // RotationalSpeedUnit.RevolutionPerMinute

// Get default abbreviation for a unit, the first if more than one is defined in Length.json for Kilogram unit
string kgAbbreviation = Mass.GetAbbreviation(MassUnit.Kilogram); // "kg"
Gotcha: AmbiguousUnitParseException

Some units of a quantity have the same abbreviation, which means .Parse() is not able to know what unit you wanted. Unfortunately there is no built-in way to avoid this, either you need to ensure you don't pass in input that cannot be parsed or you need to write your own parser that has more knowledge of preferred units or maybe only a subset of the units.

Example: Length.Parse("1 pt") throws AmbiguousUnitParseException with message Cannot parse "pt" since it could be either of these: DtpPoint, PrinterPoint.

<a name="dynamic-parsing"></a>Dynamically Parse Quantities and Convert to Units

Sometimes you need to work with quantities and units at runtime, such as parsing user input.

There are a handful of classes to help with this:

  • Quantity for parsing and constructing quantities as well as looking up units, names and quantity information dynamically
  • UnitConverter for converting values to a different unit, with only strings or enum values
  • UnitParser for parsing unit abbreviation strings, such as "cm" to LengthUnit.Centimeter
Enumerate quantities and units

Quantity is the go-to class for looking up information about quantities at runtime.

string[] Quantity.Names;       // ["Length", "Mass", ...]
QuantityType[] Quantity.Types; // [QuantityType.Length, QuantityType.Mass, ...]
QuantityInfo[] Quantity.Infos; // Information about all quantities and their units, types, values etc., see more below

QuantityInfo Quantity.GetInfo(QuantityType.Length); // Get information about Length
Information about quantity type

QuantityInfo makes it easy to enumerate names, units, types and values for the quantity type. This is useful for populating lists of quantities and units for the user to choose.

QuantityInfo lengthInfo = Quantity.GetInfo(QuantityType.Length); // You can get it statically here
lengthInfo = Length.Info;                                        // or statically per quantity
lengthInfo = Length.Zero.QuantityInfo;                           // or dynamically from quantity instances

lengthInfo.Name;         // "Length"
lengthInfo.QuantityType; // QuantityType.Length
lengthInfo.UnitNames;    // ["Centimeter", "Meter", ...]
lengthInfo.Units;        // [LengthUnit.Centimeter, LengthUnit.Meter, ...]
lengthInfo.UnitType;     // typeof(LengthUnit)
lengthInfo.ValueType;    // typeof(Length)
lengthInfo.Zero;         // Length.Zero
Construct quantity

All you need is the value and the unit enum value.

IQuantity quantity = Quantity.From(3, LengthUnit.Centimeter); // Length

if (Quantity.TryFrom(3, LengthUnit.Centimeter, out IQuantity quantity2))
{
}
Parse quantity

Parse any string to a quantity instance of the given the quantity type.

IQuantity quantity = Quantity.Parse(typeof(Length), "3 cm"); // Length

if (Quantity.TryParse(typeof(Length), "3cm", out IQuantity quantity2)
{
}
Parse unit

UnitParser parses unit abbreviation strings to unit enum values.

Enum unit = UnitParser.Default.Parse("cm", typeof(LengthUnit)); // LengthUnit.Centimeter

if (UnitParser.Default.TryParse("cm", typeof(LengthUnit), out Enum unit2))
{
    // Use unit2 as LengthUnit.Centimeter
}
Convert quantity to unit - IQuantity and Enum

Convert any IQuantity instance to a different unit by providing a target unit enum value.

// Assume these are passed in at runtime, we don't know their values or type
Enum userSelectedUnit = LengthUnit.Millimeter;
IQuantity quantity = Length.FromCentimeters(3);

// Later we convert to a unit
quantity.ToUnit(userSelectedUnit).Value;      // 30
quantity.ToUnit(userSelectedUnit).Unit;       // LengthUnit.Millimeter
quantity.ToUnit(userSelectedUnit).ToString(); // "30 mm"
quantity.ToUnit(PressureUnit.Pascal);         // Throws exception, not compatible
quantity.As(userSelectedUnit);                // 30
Convert quantity to unit - From/To Enums

Useful when populating lists with unit enum values for the user to choose.

UnitConverter.Convert(1, LengthUnit.Centimeter, LengthUnit.Millimeter); // 10 mm
Convert quantity to unit - Names or abbreviation strings

Sometimes you only have strings to work with, that works too!

UnitConverter.ConvertByName(1, "Length", "Centimeter", "Millimeter"); // 10 mm
UnitConverter.ConvertByAbbreviation(1, "Length", "cm", "mm"); // 10 mm

<a name="custom-units"></a>Custom units

Units.NET allows you to add your own units and quantities at runtime, to represent as IQuantity and reusing Units.NET for parsing and converting between units.

Read more at Extending-with-Custom-Units.

Map between unit enum values and unit abbreviations
// Map unit enum values to unit abbreviations
UnitAbbreviationsCache.Default.MapUnitToDefaultAbbreviation(HowMuchUnit.Some, "sm");
UnitAbbreviationsCache.Default.GetDefaultAbbreviation(HowMuchUnit.Some); // "sm"
UnitParser.Default.Parse<HowMuchUnit>("sm");  // HowMuchUnit.Some
Convert between units of custom quantity
var unitConverter = UnitConverter.Default;
unitConverter.SetConversionFunction<HowMuch>(HowMuchUnit.Lots, HowMuchUnit.Some, x => new HowMuch(x.Value * 2, HowMuchUnit.Some));
unitConverter.SetConversionFunction<HowMuch>(HowMuchUnit.Tons, HowMuchUnit.Lots, x => new HowMuch(x.Value * 10, HowMuchUnit.Lots));
unitConverter.SetConversionFunction<HowMuch>(HowMuchUnit.Tons, HowMuchUnit.Some, x => new HowMuch(x.Value * 20, HowMuchUnit.Some));

var from = new HowMuch(10, HowMuchUnit.Tons);
IQuantity Convert(HowMuchUnit toUnit) => unitConverter.GetConversionFunction<HowMuch>(from.Unit, toUnit)(from);

Console.WriteLine($"Convert 10 tons to:");
Console.WriteLine(Convert(HowMuchUnit.Some)); // 200 sm
Console.WriteLine(Convert(HowMuchUnit.Lots)); // 100 lts
Console.WriteLine(Convert(HowMuchUnit.Tons)); // 10 tns

<a name="example-app"></a>Example: Unit converter app

Source code for Samples/UnitConverter.Wpf<br/> Download (release 2018-11-09 for Windows)

image

This example shows how you can create a dynamic unit converter, where the user selects the quantity to convert, such as Temperature, then selects to convert from DegreeCelsius to DegreeFahrenheit and types in a numeric value for how many degrees Celsius to convert. The quantity list box contains QuantityType values such as QuantityType.Length and the two unit list boxes contain Enum values, such as LengthUnit.Meter.

Populate quantity selector

Use Quantity to enumerate all quantity type enum values, such as QuantityType.Length and QuantityType.Mass.

this.Quantities = Quantity.Types; // QuantityType[]
Update unit lists when selecting new quantity

So user can only choose from/to units compatible with the quantity type.

QuantityInfo quantityInfo = Quantity.GetInfo(quantityType);

_units.Clear();
foreach (Enum unitValue in quantityInfo.Units)
{
    _units.Add(unitValue);
}
Update calculation on unit selection changed

Using UnitConverter to convert by unit enum values as given by the list selection "Length" and unit names like "Centimeter" and "Meter".

double convertedValue = UnitConverter.Convert(
    FromValue,                      // numeric value
    SelectedFromUnit.UnitEnumValue, // Enum, such as LengthUnit.Meter
    SelectedToUnit.UnitEnumValue);  // Enum, such as LengthUnit.Centimeter

Example: WPF app using IValueConverter to parse quantities from input

Src: Samples/WpfMVVMSample

wpfmvvmsample_219w

The purpose of this app is to show how to create an IValueConverter in order to bind XAML to quantities.

<a name="precision"></a>Precision and Accuracy

A base unit is chosen for each unit class, represented by a double value (64-bit), and all conversions go via this unit. This means that there will always be a small error in both representing other units than the base unit as well as converting between units.

Units.NET was intended for convenience and ease of use, not highly accurate conversions, but I am open to suggestions for improvements.

The tests accept an error up to 1E-5 for most units added so far. Exceptions include units like Teaspoon, where the base unit cubic meter is a lot bigger. In many usecases this is sufficient, but for others this may be a showstopper and something you need to be aware of.

For more details, see Precision.

<a name="serialization"></a>Serialize to JSON, XML and more

Read more at Serializing to JSON, XML and more.

<a name="contribute"></a>Want To Contribute?

<a name="ci"></a>Continuous Integration

AppVeyor performs the following:

  • Build and test all branches
  • Build and test pull requests, notifies on success or error
  • Deploy nugets on master branch, if nuspec versions changed

<a name="who-are-using"></a>Who are Using This?

It would be awesome to know who are using this library. If you would like your project listed here, create an issue or edit the README.md and send a pull request. Max logo size is 300x35 pixels and should be in .png, .gif or .jpg formats.

Motion Catalyst logo

Swing Catalyst and Motion Catalyst, Norway

Sports performance applications for Windows and iOS, that combine high-speed video with sensor data to bring facts into your training and visualize the invisible forces at work

Units.NET started here in 2007 when reading strain gauge measurements from force plates and has been very useful in integrating a number of different sensor types into our software and presenting the data in the user's preferred culture and units.

https://www.swingcatalyst.com (for golf)<br> https://www.motioncatalyst.com (everything else)

- Andreas Gullberg Larsen, CTO (andreas@motioncatalyst.com)

PK Sound logo

PK Sound, Canada

Award-winning performers and composers put everything they’ve got into their music. PK Sound makes sure their fans will hear it all – brilliantly, precisely, consistently.

PK Sound uses UnitsNet in Kontrol - the remote control counterpart to Trinity, the world's only robotic line array solution.

http://www.pksound.ca/pk-sound/announcing-the-official-release-of-kontrol/ (for an idea of what the Kontrol project is)<br> http://www.pksound.ca/trinity/ (the speakers that Kontrol currently controls)<br> http://www.pksound.ca/ (everything else)

- Jules LaPrairie, Kontrol software team member

Microsoft.IoT.Devices

Microsoft.IoT.Devices extends Windows IoT Core and makes it easier to support devices like sensors and displays. It provides event-driven access for many digital and analog devices and even provides specialized wrappers for devices like joystick, rotary encoder and graphics display.

http://aka.ms/iotdevices (home page including docs)<br> http://www.nuget.org/packages/Microsoft.IoT.Devices (NuGet package)

Crawlspace

Software for creating printable hex maps for use in pen and paper RPGs. Both a user-friendly app and a high-level library for generating labelled hexmaps.

https://bitbucket.org/MartinEden/Crawlspace

- Martin Eden, project maintainer

ANSYS, Inc. Logo

ANSYS, Inc. (ANSYS Discovery Live)

ANSYS Discovery Live provides instantaneous 3D simulation, tightly coupled with direct geometry modeling, to enable interactive design exploration and rapid product innovation. It is an interactive experience in which you can manipulate geometry, material types or physics inputs, then instantaneously see changes in performance.

https://www.ansys.com https://www.ansys.com/products/3d-design/ansys-discovery-live

- Tristan Milnthorp, Principal Software Architect (tristan.milnthorp@ansys.com)

Primoris Sigma Stargen

Stargen is a decades old software to create realistic planets and satellites from a given Star. It's based on work from various scientists and been used for years. Primoris Sigma Stargen is a C# port of the utility that makes it a Framework to extend it with new algorithms for planetary formation and physics equations.

https://github.com/ebfortin/primoris.universe.stargen

<img src="https://cdn.harringtonhoists.com/assets/harringtonhoists/logo-60629cc144429045d4c85740ab225e219add75b2c5c1e2c444ffa9500347a414.png" height="35">

Harrington Hoists, Inc. (A Subsidiary of KITO Americas, Inc.)

Harrington Hoists, Inc. is located in Manheim, PA, Elizabethtown, PA, South Holland, IL and Corona, CA. Harrington is a leading manufacturer of manual, electric and air chain hoists as well as wire rope hoists and crane products serving the North American material handling industry.

Harrington uses UnitsNet in their internal software to perform many different calculations related to crane dimensioning, girder strength, electrical safety verification, etc.

https://www.harringtonhoists.com<br> https://kito.com

- Luke Westfall, Design Automation Engineer

Structural Analysis Format - SDK project

<img src="https://gblobscdn.gitbook.com/spaces%2F-M__87HTlQktMqcjAf65%2Favatar-1620901174483.png?alt=media" height="35" />

The Structural Analysis Format (SAF) has been created to allow structural engineering applications to exchange data using a straight forward and simple to understand format. While inspired by IFC, SAF has its benefits that it's easily modifyable by the end-user (it's an xlsx file), well documented and easy to understand. UnitsNet is used by the SDK provided by SCIA to facilitate import / export between metric & imperial systems

https://www.saf.guide https://github.com/StructuralAnalysisFormat/StructuralAnalysisFormat-SDK

- Dirk Schuermans, Software Engineer for SCIA nv

Units.NET on other platforms

The powerful strong-typed unites based on Units.NET unite definition is available on other platforms!

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETStandard 2.0

    • No dependencies.
  • net7.0

    • No dependencies.

NuGet packages (88)

Showing the top 5 NuGet packages that depend on UnitsNet:

Package Downloads
UnitsNet.Serialization.JsonNet

A helper library for serializing and deserializing types in Units.NET using Json.NET.

UnitsNet.NumberExtensions

Adds extension methods to number types to more easily create quantities, such as 5.Meters() instead of Length.FromMeters(5).

Iot.Device.Bindings

This package provides a set of Device Bindings ("Device drivers") that use System.Device.Gpio package to communicate with sensors and microcontrollers.

Honeybee.UI

UI library build with Eto Forms for editing Honeybee Schema (DotNet) on both Windows and Mac system.

MetalHeaven.ExternalDataContracts

Metal Heaven Versioned Externals DataContracts

GitHub repositories (7)

Showing the top 7 popular GitHub repositories that depend on UnitsNet:

Repository Stars
microsoft/PowerToys
Microsoft PowerToys is a collection of utilities that help you customize Windows and streamline everyday tasks
dotnet/iot
This repo includes .NET Core implementations for various IoT boards, chips, displays and PCBs.
axzxs2001/Asp.NetCoreExperiment
原来所有项目都移动到**OleVersion**目录下进行保留。新的案例装以.net 5.0为主,一部分对以前案例进行升级,一部分将以前的工作经验总结出来,以供大家参考!
raspberry-sharp/raspberry-sharp-io
A .NET/Mono IO Library for Raspberry Pi
nanoframework/nanoFramework.IoT.Device
📦 This repo includes .NET nanoFramework implementations for various sensors, chips, displays, hats and drivers
porrey/Virtual-ZPL-Printer
An ethernet based virtual Zebra Label Printer that can be used to test applications that produce bar code labels.
BriefFiniteElementNet/BriefFiniteElement.Net
BriefFiniteElementDotNET (BFE.NET) is a library for linear-static Finite Element Method (FEM) analysis of solids and structures in .NET
Version Downloads Last Updated
6.0.0-pre017 15,628 7/29/2025
6.0.0-pre016 139 7/27/2025
6.0.0-pre015 271 7/26/2025
6.0.0-pre014 52,759 3/9/2025
6.0.0-pre013 8,868 12/29/2024
6.0.0-pre012 10,735 8/31/2024
6.0.0-pre011 2,840 8/4/2024
6.0.0-pre010 1,468 7/11/2024
6.0.0-pre009 185 7/10/2024
6.0.0-pre008 191 7/10/2024
6.0.0-pre007 1,572 6/10/2024
6.0.0-pre006 12,700 4/4/2024
6.0.0-pre005 362 3/27/2024
6.0.0-pre004 500 3/12/2024
6.0.0-pre003 869 3/3/2024
6.0.0-pre002 61,621 2/26/2024
6.0.0-pre001 566 2/23/2024
5.75.0 102,673 7/26/2025
5.74.0 326,249 4/2/2025
5.73.0 134,053 3/10/2025
5.72.0 2,242 3/10/2025
5.71.0 3,498 3/9/2025
5.70.0 128,684 2/26/2025
5.69.0 101,507 2/4/2025
5.68.0 1,180 2/4/2025
5.67.0 25,966 1/29/2025
5.66.0 74,071 1/19/2025
5.65.0 200,680 12/28/2024
5.64.0 1,871 12/26/2024
5.63.0 4,098 12/25/2024
5.62.0 1,428 12/25/2024
5.61.0 56,308 12/15/2024
5.60.0 344,339 10/20/2024
5.59.0 85,777 9/29/2024
5.58.0 102,197 9/2/2024
5.57.0 42,375 8/23/2024
5.56.0 95,462 8/7/2024
5.55.0 61,330 7/25/2024
5.54.0 145,582 7/11/2024
5.53.0 8,534 7/10/2024
5.52.0 147,721 6/16/2024
5.51.0 1,796 6/15/2024
5.50.0 496,529 4/4/2024
5.49.0 80,767 3/12/2024
5.48.0 56,447 2/27/2024
5.47.0 9,376 2/23/2024
5.43.0 234,210 1/23/2024
5.42.0 100,606 1/2/2024
5.41.0 15,730 12/28/2023
5.40.0 6,643 12/22/2023
5.39.0 10,495 12/19/2023
5.38.2 49,080 12/7/2023
5.37.0 3,633 12/6/2023
5.36.0 167,561 11/10/2023
5.35.0 206,750 10/4/2023
5.34.0 78,818 9/21/2023
5.33.0 10,159 9/16/2023
5.32.0 144,499 9/1/2023
5.31.0 292,740 8/12/2023
5.30.0 5,831 8/10/2023
5.29.0 87,190 7/28/2023
5.28.0 57,386 7/24/2023
5.27.0 45,949 7/20/2023
5.26.0 13,550 7/17/2023
5.25.0 14,885 7/12/2023
5.24.0 3,786 7/11/2023
5.23.0 2,368 7/11/2023
5.22.0 2,396 7/11/2023
5.21.0 118,450 6/17/2023
5.20.0 2,401 6/16/2023
5.19.0 19,815 6/10/2023
5.18.0 22,988 6/6/2023
5.17.0 53,338 6/3/2023
5.16.0 46,614 5/27/2023
5.15.0 10,231 5/23/2023
5.14.0 14,668 5/19/2023
5.13.0 307,850 5/5/2023
5.12.0 58,030 4/18/2023
5.11.0 30,809 4/7/2023
5.10.0 34,843 4/1/2023
5.9.0 159,387 3/13/2023
5.8.0 9,479 3/8/2023
5.7.0 7,940 3/7/2023
5.6.0 2,661 3/7/2023
5.5.0 85,054 2/26/2023
5.4.0 8,319 2/23/2023
5.3.0 33,027 2/17/2023
5.2.0 6,777 2/15/2023
5.1.0 320,524 2/5/2023
5.0.0 17,628 2/2/2023
5.0.0-rc013 1,790 1/30/2023
5.0.0-rc012 1,744 1/26/2023
5.0.0-rc011 2,235 1/17/2023
5.0.0-rc010 1,701 1/6/2023
5.0.0-rc009 1,858 1/2/2023
5.0.0-rc008 1,701 12/29/2022
5.0.0-rc007 1,695 12/27/2022
5.0.0-rc006 1,727 12/26/2022
5.0.0-rc005 2,771 12/13/2022
5.0.0-rc004 1,868 12/5/2022
5.0.0-rc003 1,694 12/3/2022
5.0.0-rc002 1,726 12/1/2022
5.0.0-rc001 1,735 11/29/2022
5.0.0-alpha007 1,681 11/30/2022
5.0.0-alpha006 6,829 6/7/2022
5.0.0-alpha005 2,111 3/20/2022
5.0.0-alpha004 104,036 2/8/2022
5.0.0-alpha003 3,326 11/13/2021
5.0.0-alpha001 5,783 11/1/2021
4.152.0 212,736 11/9/2023
4.151.0 110,527 2/26/2023
4.150.0 499,329 1/5/2023
4.149.0 194,087 11/17/2022
4.148.0 88,688 11/3/2022
4.147.0 9,363 11/2/2022
4.146.0 35,231 10/31/2022
4.145.0 278,617 9/3/2022
4.144.0 159,782 8/14/2022
4.143.0 29,309 8/5/2022
4.142.0 3,762 8/4/2022
4.141.0 20,208 7/31/2022
4.140.0 39,456 7/23/2022
4.139.0 3,203 7/23/2022
4.138.0 3,109 7/22/2022
4.137.0 26,218 7/7/2022
4.136.0 36,821 6/29/2022
4.135.0 17,884 6/26/2022
4.134.0 87,149 6/14/2022
4.133.0 5,712 6/13/2022
4.132.0 74,528 5/30/2022
4.131.0 19,060 5/25/2022
4.130.0 4,985 5/22/2022
4.129.0 102,421 5/4/2022
4.128.0 108,465 4/5/2022
4.127.0 254,368 3/30/2022
4.126.0 59,063 3/20/2022
4.125.0 109,264 3/6/2022
4.124.0 34,399 3/3/2022
4.123.0 70,718 2/26/2022
4.122.0 3,962 2/25/2022
4.121.0 61,557 2/15/2022
4.120.0 5,792 2/11/2022
4.119.0 28,726 2/9/2022
4.118.0 6,665 2/9/2022
4.117.0 3,673 2/8/2022
4.116.0 17,220 1/28/2022
4.115.0 29,600 1/26/2022
4.114.0 20,472 1/24/2022
4.113.0 14,924 1/16/2022
4.112.0 80,463 12/31/2021
4.111.0 15,203 12/30/2021
4.110.0 164,391 12/7/2021
4.109.0 21,364 12/1/2021
4.108.0 39,259 11/25/2021
4.107.0 13,479 11/23/2021
4.106.0 8,705 11/23/2021
4.105.0 15,886 11/22/2021
4.104.0 209,034 11/15/2021
4.103.0 210,443 11/12/2021
4.102.0 341,522 9/3/2021
4.101.0 61,778 8/13/2021
4.100.0 34,004 8/5/2021
4.99.0 36,576 7/20/2021
4.98.0 22,941 7/16/2021
4.97.1 26,574 7/5/2021
4.97.0 8,799 6/29/2021
4.96.0 16,572 6/25/2021
4.95.0 11,989 6/17/2021
4.94.0 17,416 6/12/2021
4.93.0 37,975 5/28/2021
4.92.1 10,262 5/21/2021
4.92.0 2,929 5/21/2021
4.91.0 8,068 5/17/2021
4.90.0 38,757 5/7/2021
4.89.1 44,128 4/22/2021
4.89.0 134,197 4/9/2021
4.88.0 3,135 4/9/2021
4.87.0 56,997 3/21/2021
4.86.0 106,154 3/13/2021
4.85.0 34,533 2/27/2021
4.84.0 4,470 2/26/2021
4.83.0 101,194 1/18/2021
4.82.0 56,387 1/6/2021
4.81.0 158,652 12/26/2020
4.80.0 3,503 12/24/2020
4.79.0 50,441 12/17/2020
4.78.0 4,302 12/16/2020
4.77.0 190,050 12/8/2020
4.76.0 48,245 11/26/2020
4.75.0 4,629 11/25/2020
4.74.0 29,413 11/14/2020
4.73.0 68,122 10/19/2020
4.72.0 90,297 10/4/2020
4.71.0 49,544 9/27/2020
4.70.1 95,700 9/12/2020
4.70.0 50,950 9/1/2020
4.69.0 88,629 8/9/2020
4.68.0 43,654 7/23/2020
4.67.0 81,337 6/30/2020
4.66.0 18,604 6/22/2020
4.65.0 38,741 6/10/2020
4.64.0 8,981 6/9/2020
4.63.0 3,441 6/9/2020
4.62.0 26,305 5/29/2020
4.61.0 18,454 5/23/2020
4.60.0 46,431 5/13/2020
4.59.0 83,084 4/28/2020
4.58.0 114,354 4/5/2020
4.57.0 9,872 3/31/2020
4.56.0 6,969 3/29/2020
4.55.0 3,886 3/29/2020
4.54.0 19,173 3/21/2020
4.53.0 4,045 3/16/2020
4.52.0 14,534 3/7/2020
4.51.0 7,880 3/4/2020
4.50.0 6,745 2/28/2020
4.49.0 17,145 2/24/2020
4.48.0 3,678 2/22/2020
4.47.0 10,403 2/20/2020
4.46.0 56,830 2/18/2020
4.45.0 18,613 2/10/2020
4.44.0 23,633 1/25/2020
4.43.0 43,027 1/11/2020
4.42.0 43,273 12/11/2019
4.41.0 3,421 12/8/2019
4.40.0 16,834 11/22/2019
4.39.0 121,535 10/12/2019
4.38.0 39,493 9/24/2019
4.37.0 9,874 9/20/2019
4.36.0 6,906 9/13/2019
4.35.0 29,780 8/18/2019
4.34.0 3,020 8/16/2019
4.33.0 5,375 8/9/2019
4.32.0 30,374 7/21/2019
4.31.0 2,958 7/20/2019
4.30.0 2,858 7/18/2019
4.29.0 5,981 7/17/2019
4.28.0 9,466 7/10/2019
4.27.0 105,443 7/9/2019
4.26.0 18,421 6/27/2019
4.25.0 33,674 6/8/2019
4.24.0 36,953 5/10/2019
4.23.0 12,756 5/4/2019
4.22.0 3,459 5/1/2019
4.21.0 3,298 4/29/2019
4.20.0 41,990 4/21/2019
4.19.0 2,928 4/19/2019
4.18.0 7,632 4/13/2019
4.17.0 41,421 3/26/2019
4.16.0 27,541 3/14/2019
4.15.0 3,436 3/12/2019
4.14.0 3,722 3/10/2019
4.13.0 5,076 3/6/2019
4.12.0 5,564 3/5/2019
4.11.0 25,718 2/25/2019
4.10.0 3,138 2/23/2019
4.9.0 20,179 2/15/2019
4.8.0 6,128 2/13/2019
4.7.0 23,718 2/1/2019
4.6.0 3,000 2/1/2019
4.5.1 2,961 2/1/2019
4.5.0 2,985 2/1/2019
4.4.0 33,408 1/16/2019
4.3.0 6,175 1/11/2019
4.2.0 3,473 1/11/2019
4.1.0 10,259 12/20/2018
4.0.0 28,901 12/16/2018
4.0.0-beta2 13,902 11/16/2018
4.0.0-beta1 9,030 11/8/2018
4.0.0-alpha5 2,145 11/4/2018
4.0.0-alpha4 9,107 10/14/2018
4.0.0-alpha3 3,439 9/28/2018
3.111.0 95,646 12/14/2018
3.110.0 3,793 12/10/2018
3.109.0 30,791 11/15/2018
3.108.0 21,720 11/5/2018
3.107.1 20,174 11/3/2018
3.107.0 2,445 11/3/2018
3.106.0 23,098 10/12/2018
3.105.0 13,029 9/24/2018
3.104.0 270,506 7/23/2018
3.103.0 22,458 7/16/2018
3.102.0 36,335 6/26/2018
3.101.0 2,992 6/26/2018
3.100.0 8,168 6/21/2018
3.99.0 45,281 5/11/2018
3.98.0 10,661 5/5/2018
3.97.0 7,081 4/25/2018
3.96.0 8,433 4/16/2018
3.95.0 118,774 4/13/2018
3.94.0 6,972 3/24/2018
3.93.0 16,791 3/6/2018
3.92.0 3,308 3/5/2018
3.91.0 4,681 3/5/2018
3.90.0 14,845 2/24/2018
3.89.0 6,342 2/9/2018
3.88.0 27,464 1/27/2018
3.87.0 4,986 1/14/2018
3.86.0 39,690 1/3/2018
3.85.0 8,498 12/11/2017
3.84.0 2,953 12/10/2017
3.83.1-test003 2,662 12/7/2017
3.83.1-test001 2,560 12/7/2017
3.83.0 3,307 12/5/2017
3.82.0 4,627 12/2/2017
3.81.0 3,958 11/26/2017
3.80.0 2,782 11/25/2017
3.79.0 3,364 11/23/2017
3.78.0 18,821 11/9/2017
3.77.0 18,333 10/5/2017
3.76.0 11,100 9/30/2017
3.75.1 3,655 9/29/2017
3.75.0 2,929 9/29/2017
3.74.0 8,485 9/17/2017
3.73.0 17,513 9/8/2017
3.72.0 6,162 9/1/2017
3.71.0 11,901 8/28/2017
3.70.0 4,152 8/20/2017
3.69.0 22,464 8/7/2017
3.68.0 4,049 7/30/2017
3.67.0 2,882 7/27/2017
3.66.0 59,468 7/7/2017
3.65.0-alpha3 4,110 6/5/2017
3.65.0-alpha1 2,401 6/4/2017
3.64.0 43,966 5/30/2017
3.63.0 2,844 5/27/2017
3.62.0 26,958 5/8/2017
3.61.0 16,211 5/5/2017
3.60.0 2,729 5/4/2017
3.59.0 4,154 5/4/2017
3.58.0 37,859 4/17/2017
3.57.0 39,651 3/16/2017
3.56.0 2,795 3/15/2017
3.55.0 2,861 3/13/2017
3.54.0 3,083 3/9/2017
3.53.0 2,866 3/8/2017
3.52.0 3,218 2/28/2017
3.51.0 5,270 2/7/2017
3.50.1 2,761 2/6/2017
3.50.0 15,446 1/28/2017
3.49.1 5,254 1/17/2017
3.49.0 4,165 1/7/2017
3.48.0 10,446 11/11/2016
3.47.0 4,262 11/2/2016
3.46.2 3,041 11/2/2016
3.46.1 5,333 10/23/2016
3.46.0 2,762 10/23/2016
3.45.0 2,932 10/21/2016
3.44.0 2,706 10/21/2016
3.43.0 2,716 10/18/2016
3.42.0 12,450 9/29/2016
3.41.0 16,639 9/14/2016
3.40.0 22,330 8/2/2016
3.39.1 8,166 7/21/2016
3.39.0 2,771 7/21/2016
3.38.1 26,970 7/8/2016
3.37.0 2,966 6/28/2016
3.36.0 8,048 6/3/2016
3.35.0 2,848 6/3/2016
3.34.0 72,179 4/21/2016
3.33.0 2,766 4/18/2016
3.32.0 18,519 4/8/2016
3.31.0 2,920 4/5/2016
3.30.0 2,898 4/2/2016
3.29.0 3,106 3/16/2016
3.29.0-alpha2 2,350 3/13/2016
3.28.1 3,183 3/2/2016
3.28.0 2,807 3/1/2016
3.27.0 4,958 2/26/2016
3.26.0 2,934 2/19/2016
3.25.0 3,022 2/6/2016
3.24.0 2,932 1/31/2016
3.23.0 3,011 1/23/2016
3.22.0 3,480 1/17/2016
3.21.1 2,727 1/17/2016
3.21.0 7,407 12/9/2015
3.20.0 10,118 11/24/2015
3.19.2 2,889 11/19/2015
3.19.1 26,795 9/9/2015
3.19.0 2,959 9/9/2015
3.18.0 2,833 8/30/2015
3.17.0 4,930 8/25/2015
3.16.0 3,880 8/12/2015
3.15.0 3,822 8/11/2015
3.14.0 6,257 6/26/2015
3.13.1 2,824 6/25/2015
3.13.0-beta 2,657 4/27/2015
3.12.0 30,013 4/14/2015
3.11.0 32,680 4/8/2015
3.10.0 4,380 3/30/2015
3.9.0 2,887 3/30/2015
3.8.0 2,834 3/29/2015
3.7.1 2,752 3/27/2015
3.7.0 2,857 3/27/2015
3.6.0 2,984 3/19/2015
3.5.0 3,241 3/17/2015
3.4.0 3,260 3/2/2015
3.4.0-alpha2 2,398 3/2/2015
3.4.0-alpha 2,434 3/2/2015
3.3.0 8,183 11/21/2014
3.2.0 7,254 10/17/2014
3.1.0 3,761 9/19/2014
3.0.0 3,711 7/23/2014
3.0.0-beta 2,736 7/22/2014
2.0.0 6,905 2/9/2014
2.0.0-beta 2,864 2/9/2014
2.0.0-alpha 2,766 2/5/2014
1.13.0.15 3,278 1/31/2014
1.12.0-beta 2,477 1/4/2014
1.11.0 82,701 11/18/2013
1.10.0 3,197 11/15/2013
1.9.0 2,798 11/7/2013
1.8.0 2,743 10/30/2013
1.7.0 2,975 8/8/2013
1.6.0 2,864 8/6/2013
1.5.0 2,893 8/2/2013
1.4.0 2,897 7/22/2013
1.3.0 2,901 7/21/2013
1.2.0 2,946 7/21/2013