All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Added support for netstandard2.0
- Exception messages on .NET 6+ contain more information when dynamic library loading fails
- Update dependencies to the latest stable versions
- Fixed a bug when using a library compiled against icu-dotnet netstandard1.6, when your project referenced a different version of icu-dotnet
- Removed support for netstandard1.6
- Removed Icu.SortKey class which was only in the netstandard1.6 version of the dll
2.10.0 - 2024-06-17
- Support macOS
- Move .NET 6.0 builds to .NET 8.0
- Update some GitHub Actions versions
2.9.0 - 2023-02-15
- Support .net 6.0
- Fixed crash in
Wrapper.Cleanup
(#176)
2.8.1 - 2022-07-08
- Fix bug in
UnicodeSet.ToCharacters()
with upper Unicode planes (LT-21010)
2.8.0 - 2022-06-24
- Added
Wrapper.SetPreferredIcu4cDirectory()
method to specify a directory where to preferably look for icu4c
- Increased maximum supported version to 90 (#167)
- Fix a problem confining ICU version if it's located in a different
directory. See
Wrapper.SetPreferredIcu4cDirectory()
. - Also check in
runtimes/win7-*/native
for ICU binaries - Include
icu.net.dll.config
file in nuget package. This is important for running on MacOSX. - Fix construction of locale with language and keywords (cbersch)
- Fix passing locale to ubrk_open (cbersch)
- Fix race condition during initialization of native methods container (cbersch)
- Change .NET Standard target to reference System.ValueTuple 4.4 instead of 4.5
2.7.1 - 2021-03-04
- Fix CI builds
2.7.0 - 2021-03-04
- Add build number to AssemblyFileVersion
- Add basic non-static
Transliterator
class with transliterate functionality (tylerpayne) - Add
Icu.Wrapper.Verbose
property to assist in diagnosing load problems - Add OSX support for loading icu libraries
- Speed up
BreakIterator.GetBoundaries
(#127; atlastodor) - Fix
SortKey.ToString
- Fix return type of
GetCombiningClass
to match C++ API
2.6.0 - 2019-09-27
- Add
TimeZone
class (#108; j-troc) - Create nuget symbol package
- Add
BiDi
class (#121; jeffska)
- Crash on Linux disposing
RuleBasedCollator
(#124)
2.5.4 - 2019-01-09
- Normalization of strings that failed to decompose under certain conditions (#106)
- Throw only on errors, not on errorcode that has
WARNING
in name ifthrowOnWarnings == false
2.5.3 - 2018-12-17
- remove double call of dispose when disposing
RuleBasedCollator
- Fix
BreakIterator.SetText
if break iterator hasn't been initialized before (emrobinson) - Fix random
AccessViolationException
in break iterator (#81) (emrobinson)
2.5.2 - 2018-12-10
AssemblyVersion
only changes when major or minor version number changes (instead ofAssemblyFileVersion
accidentally introduced in previous patch version). This is necessary so that the assembly signature doesn't change and icu.net.dll referenced in a project can be replaced with a bugfix version without requiring to change the binding redirect.
- Ignore exceptions that might occur when releasing
SafeRuleBasedCollatorHandle
(but generate a ReleaseHandleFailed Managed Debugging Assistant).
2.5.1 - 2018-11-28
AssemblyFileVersion
only changes when major or minor version number changes.
- Set ErrorCode to
ErrorCode.NoErrors
before calling native methods. This fixes some strange and hard-to-debug errors.
2.5.0 - 2018-11-26
- now supports case folding tokenizer (#88)
- additional Character methods: CharDirection, GetIntPropertyValue, ToLower, ToTitle, ToUpper, IsLetter, IsMark, IsSeparator
- partially implemented Normalizer2 class
- partially implemented ResourceBundle class
- partially implemented CodepageConversion class
- partially implemented MessageFormatter and Transliterator classes
- add BreakIterator.GetEnumerator() method and BreakEnumerator class to allow enumerating over word segments as described in the ICU user guide (the existing method BreakIterator.Split ignores spaces and punctuation)
- Wrapper.MinSupportedIcuVersion and Wrapper.MaxSupportedIcuVersion constants
- output error on Linux if unmanaged libraries can't be loaded
- allow to confine version number after initialization. In this case we internally do a reset and re-initialize with the new version number.
- icu.net.dll for netstandard1.6 now has the correct version number (#72)
2.4.0 - 2018-10-24
- icu.net.dll for netstandard1.6 has the wrong version number (always 1.0.0) (#72)
- Fix crash if filename contains minor version number, e.g.
libicuuc.so.60.1
- Update UProperty to match ICU 62
- Support for Tizen (Tomasz Zalewski; issue #82)
2.3.4 - 2018-08-27
- Change PlatformTarget to AnyCPU (issue #70). The wrong x86 target sneaked in with the changes for version 2.3.3.
2.3.3 - 2018-07-03
- Allow ICU up to version 70
2.3.2 - 2018-03-14
- Update dependency information in nuget package.
2.3.1 - 2018-03-14
- Remove dependency on
System.Runtime.InteropServices.RuntimeInformation
for 4.6.1 assembly. It has problems when running under Mono 4.
2.3.0 - 2018-02-28
- Add Wrapper.Init() method to allow initialization of ICU for multi-threaded applications (#54)
- Implement
BreakIterator.Clone()
method (#56) to allow break iterator to be used in multi-threaded applications
- Create netstandard package (#37/#59, conniey). This allows to use the package with .NET Core as well as any other .NET version compatible with .NET Standard 1.6. Additionally we still include the binaries for .NET 4.0 and .NET 4.5.1.
- Improved warning message if ICU is not initialized.
- Enhanced readme.
- Fix signature of u_charType (#54)
- Don't depend on libc6-dev package (#62)
2.2.0 - 2017-09-29
- fix buffer overflow in Normalize() (#47)
- Assembly marked as CLSCompliant (#33)
- additionally look in lib/x86 and lib/x64 as well as lib/win-* and lib/linux-* for ICU binaries (#51)
- Add minimal support of regular expressions (#32, MURATA Makoto)
2.1.0 - 2017-03-17
- implement
IDisposable
in collators
- Implement
RuleBasedBreakIterator
class (Connie Yau) - Make
BreakIterator
closer toIcu::BreakIterator
(Connie Yau) - Enable and fix XML documentation (MURATA Makoto, Connie Yau)
- support 64-bit ICU4C (#14 and #30). The unmanaged binaries can either be
directly in the output directory next to
icu.net.dll
, or in ax64
subdirectory (the 32-bit binaries in ax86
subdirectory).
2.0.1 - 2016-12-19
- Prefer local directory when loading unmanaged ICU binaries. This addresses #20.
- Fix
CollationStrength.Identical
value to match value used by unmanaged binaries. - Fix casing of a few native methods.
- Call native cleanup from Wrapper.Cleanup
- Reset ICU version and method pointers on cleanup.
- Removed obsolete debian packaging files
- Dynamically load ICU binaries, thus allowing to work with any ICU version
- Cross-platform nuget package that is known to work on Windows and Linux
- ICU binaries moved to separate nuget packages (
Icu4C.Win.*
) - Change versioning scheme. Previously the versions for the nuget package included the ICU version. Now we follow Semantic Versioning.