Skip to content

Releases: RemyDuijkeren/NodaMoney

2.0.0

23 Feb 03:17
Compare
Choose a tag to compare

Thi is a big and long-awaited release with a focus on performance.

A lot of was around the Currency type: should it be a class or a struct? We choose to keep Currency a struct, so Money type only exist of structs (Decimal and Currency), but it was too big to be a struct, so we trimmed it down to its essence. The rest we moved to a new type CurrencyInfo, which is a record class.

This and the new features in .NET resulted into overall performance improvement on:

  • creation of currency (32x faster) and money (20x faster)
  • smaller footprint and memory allocation (30x less allocations)
  • faster operations, formatting, and parsing

Added

  • ISO 4217 Amendment Number 170 VED/926
  • ISO 4217 Amendment Number 171 SLE/925 SLL/694
  • ISO 4217 Amendment Number 172 SLL/694
  • ISO 4217 Amendment Number 174 HRK/191
  • ISO 4217 Amendment Number 176 ANG/532 XCG/532
  • ISO 4217 Amendment Number 178 CUC/931 CUP/192
  • System.Text.Json serialization support
  • Added CurrencyInfo to provide information about a currency and acts as an IFormatProvider. It implicitly cast
    to Currency.
  • Support for .NET 9.0, .NET 8.0, .NET Standard 2.0 and .NET Standard 2.1
  • Support for OLE Automation Currency conversion using ToOACurrency() and FromOACurrency()
  • Add support for Generic Math
  • Add Parsing for ReadOnlySpan<char>
  • Formatting added format L for currency format using full english name (was format F)
  • Added InternationalSymbol to CurrencyInfo (Symbol: $, InternationalSymbol: US$)
  • Added AlternativeSymbols to CurrencyInfo
  • Added NumericCode to CurrencyInfo. This is a three-digit code number as string (like '034')
  • Added MinimalAmount to CurrencyInfo. This is the minimal amount the currency can be increased or decreased.

Changed

  • JSON Serialization format is changed from { "Cost": {"Amount":1.23,"Currency":"USD"} } to { "Cost":"USD 1.23" }. This is a breaking change for JSON serialization, but deserialization of the old format is supported for migration purposes (only for System.Text.Json, not Newtonsoft.Json!).
  • XML Serialization format is change from <Money Amount="765.43" Currency="USD" /> to <Money Currency="USD">765.43</Money>. This is a breaking change for XML serialization, but deserialization of the old format is supported for migration purposes.
  • Currency is now a 2byte struct and only contains basic information. Other info is moved to CurrencyInfo.
  • Namespaces are replaced by IsIso4217 (yes/no). Codes need now to be unique overall.
  • Formatting format G is now Currency format with currency code instead of currency symbol
  • Formatting format C is Currency format with currency symbol, but if there is none, currency code will be used.
  • Changed Number on CurrencyInfo from string to short
  • Changed DecimalDigits on CurrencyInfo from decimal to int
  • Changed MinorUnit on CurrencyInfo to MinorUnit type

Removed

  • Removed support for JavaScriptSerializer in ASP.NET (NodaMoney.Serialization.AspNet)
  • Removed support .NET Core 3.1, .NET 4.0 and .NET 4.5 (implicitly supported by .NET Standard 2.0)
  • CurrencyBuilder is removed (use CurrencyInfo to Create, Register and Unregister).
  • Formatting format I is removed (replaced by format G)
  • Formatting format O is removed (replaced by format R)
  • Formatting format F is removed (replaced by format L)
  • Removed MajorUnit from CurrencyInfo

1.0.5

29 Aug 18:14
5ee1065
Compare
Choose a tag to compare

Improvements and bug-fixes

  • ISO 4217 Amendment Number 167
  • ISO 4217 Amendment Number 168
  • ISO 4217 Amendment Number 169
  • Fix for rounded value in ExchangeRate #60

Potentially breaking change

  • None

If you have any feedback, please let us know by creating a GitHub issue!

1.0.4

18 Apr 13:47
Compare
Choose a tag to compare

Improvements and bug-fixes

  • ISO 4217 Amendment Number 166

Potentially breaking change

  • None

If you have any feedback, please let us know by creating a GitHub issue!

v1.0.3

17 Dec 18:21
Compare
Choose a tag to compare

Improvements and bug-fixes

  • ISO 4217 Amendment Number 165
  • Fix Money XmlSerialization

Potentially breaking change

  • None

If you have any feedback, please let us know by creating a GitHub issue!

v1.0.2

19 Nov 18:33
5cb4dd5
Compare
Choose a tag to compare

Improvements and bug-fixes

  • ISO 4217 Amendment Number 164 #54
  • Improved Money deserialization #55

Potentially breaking change

  • Changed .NET Standard 1.6 to 1.3

If you have any feedback, please let us know by creating a GitHub issue!

v1.0.1

21 Aug 19:32
Compare
Choose a tag to compare

Improvements and bug-fixes

  • ISO 4217 Amendment Number 163
  • Issue #49 Plus Operator
  • Convert .NET Core .json to .csproj

Potentially breaking change

  • Removed PCL, replaced by .NET Standard

If you have any feedback, please let us know by creating a GitHub issue!

v1.0.0

10 Oct 19:50
Compare
Choose a tag to compare

NodaMoney is releasing the 1.0 version!

Improvements and bug-fixes

  • Changed ExchangeRate to accept 6 decimals instead of 4 decimals #43
  • Add Chinese Yuan to MostUsedCurrencies (var yuan = Money.Yuan(23))
  • ISO 4217 Amendment Number 161 implemented #33
  • Added Standard Money Format 'I' to display code instead of symbol #46
  • Added the El Salvador Colón (SVC) to ISO-4217 list
  • Added historic ISO-4217 currencies #30
  • Added default currency sign ¤ (Currency.CurrencySign)
  • Fixed NodaMoney.Serialization.AspNet targets problem #42
  • NodaMoney now targets .NET 4.0, .NET 4.5, .NET Standard 1.0, .NET Standard 1.6, PCL
  • Changed from GitFlow to GitHub Flow strategy
  • Restructured the solution and changed all the projects to .NET core.
  • Move from MSTest to Xunit

Potentially breaking change

  • Projects are converted to .NET Core, which shouldn't be a problem, but nevertheless it is a big change which can cause unexpected problems.

If you have any feedback, please let us know by creating a GitHub issue!

v0.6.0

27 Apr 19:19
Compare
Choose a tag to compare

The release is a small update where we started with adding historic currencies.

Improvements and bug-fixes

  • Added ISO 4217 Amendment Number 162 (#36)
  • Started with Feature #30 Historic currencies, added namespace 'ISO-4217-HISTORIC'.
  • Fix #37, Add CSD as Historic currency
  • Fix #35 Removed dependency on Concurrent Dictionary
  • Fix #38, Fixed Nuget installing files into your project root
  • Move build to PSake

Potentially breaking change

  • None, that we know of

If you have any feedback, please let us know by creating a GitHub issue!

v0.5

05 Nov 21:38
Compare
Choose a tag to compare

The release is a small update where Parse and TryParse support is added.

As part of this release we had 22 commits.

Improvements and bug-fixes

  • Added feature #8 Namespaces, so that own currencies can be added (see readme).
  • Added IsObsolete flag to Currency, to be used for historic currencies (LTV, LVL, ZMK, ZWL and EEK are added this way).
  • Added ISO 4217 Amendment Number 160 (change names of HRK and RON)
  • Update of the source to use C# 6 features

Potentially breaking change

  • None, that we know of

If you have any feedback, please let us know by creating a GitHub issue!

v0.4

27 May 21:17
Compare
Choose a tag to compare

The release is a small update where Parse and TryParse support is added.

As part of this release we had 27 commits.

Improvements and bug-fixes

  • Added implementation of Parse and TryParse.
  • Fixed a bug #24 when serializing Money object that is embedded in another instance.
  • Update decimal places for CLF currency to 4
  • Added Nuget package for NodaMoney.Serialization.AspNet.

Potentially breaking change

  • None, that we know of

If you have any feedback, please let us know by creating a GitHub issue!