Releases: RemyDuijkeren/NodaMoney
2.0.0
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
toshort
- Changed DecimalDigits on CurrencyInfo from
decimal
toint
- 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
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
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
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
Improvements and bug-fixes
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
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
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
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
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
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!