Skip to content

Releases: NightOwl888/ICU4N

v60.1.0-alpha.354

v60.1.0-alpha.354 Pre-release
Pre-release

Choose a tag to compare

@NightOwl888 NightOwl888 released this 11 Mar 00:23

Change Log

  1. BUG: Fixed infinite recursion issue when using the locales zh-CN, zh-HK, zh-MO, zh-SG, zh-TW (Fixes #29).
  2. Added Lazy<T> to make GetOrAdd() method calls atomic (Fixes #31).
  3. Added test targets for x86 on all target frameworks.
  4. Upgraded to J2N 2.0.0-beta-0012
  5. Upgraded to Nerdbank.GitVersioning 3.3.37
  6. Added tests for .NET 5.0
  7. Removed support for .NET Standard 1.3
  8. Downgraded Microsoft.Extensions.Caching.Memory to 2.0.0

v60.1.0-alpha.353

v60.1.0-alpha.353 Pre-release
Pre-release

Choose a tag to compare

@NightOwl888 NightOwl888 released this 21 Sep 13:34

Change Log

  1. apache/lucenenet#343: Fixed configuration of NuGet package so the LICENSE.txt and icon files are in the root of the NuGet package, not in the content directory

v60.1.0-alpha.352

v60.1.0-alpha.352 Pre-release
Pre-release

Choose a tag to compare

@NightOwl888 NightOwl888 released this 28 Jul 14:34

This release contains impactful performance improvements.

Change Log

  1. ICU4N.Support.Collections: Factored out ListExtensions and moved CopyTo method to J2N
  2. PERFORMANCE: Swapped in J2N's optimized ICollection<T>.ToArray() method where appropriate
  3. PERFORMANCE: ICU4N.TestFramework: Fixed TestBoilerplate.GetSet() method so it doesn't lookup a value in every loop from the same dictionary it is iterating over
  4. PERFORMANCE: ICU4N.Text.UTF16Extension::CharAt(): Fixed StringBuilder overload to copy out the characters it is analyzing to an array, since the indexer of the .NET StringBuilder is extremely slow.
  5. PERFORMANCE: Replaced BitArray with BitSet in BreakIterator and Normalizer
  6. PERFORMANCE: Fixed HashSet<T> capacity allocation with J2N's HashSet<T>, which has a capacity constructor overload on all target platforms
  7. PERFORMANCE: ICU4N.Impl.ICUResourceBundle: Removed extra HashSet for tracking unique values, since the existing list can be utilized for that without the extra memory allocations and operations
  8. PERFORMANCE: Swapped in J2N's HashSet<T> in other appropriate places
  9. ICU4N.TestFramework: Added implicit operator support for Character, Integer, Long, and Double classes
  10. PERFORMANCE: Factored out IDictionary<TKey, TValue>.Get(TKey) extension method in favor of IDictionary.TryGetValue(TKey, out TValue) where a performance advantage can be gained
  11. PERFORMANCE: Added asserts overloads for generic collection types and UnicodeSet
  12. PERFORMANCE: ICU4N.Tests.Transliterator: Optimized UnicodeMapTest by replacing Integer reference type with int
  13. PERFORMANCE: ICU4N.Text.UTF16Extension.tt: Updated code generation to create a special case overload for StringBuilder, whose indexer is extremely slow in .NET
  14. PERFORMANCE: Changed ICU4N.Text.ReplaceableString implementation to cache a copy of the string in the StringBuilder, since the Char32At() method needs to index into the characters and a string is much faster than StringBuilder. The cached string is updated whenever a change is made through the ReplaceableString API or if the StringBuilder it wraps changes in Length or GetHashCode() or when ReplaceableString.ToString() is called.
  15. PERFORMANCE: ICU4N.Collation.Impl.Coll.CollationDataBuilder: Changed to use String.IndexOf() which performs far better than StringBuilderExtensions.IndexOf()
  16. PERFORMANCE: ICU4N.Tests.Collation: Updated Counter class to use Interlocked rather than a lock
  17. PERFORMANCE: ICU4N.Impl.ICUNotifier: Updated to use a Queue<T> rather than List<T>
  18. PERFORMANCE: Use LazyInitializer throughout the project to load data rather than using a lock and volatile member
  19. PERFORMANCE: Changed classes where appropriate to use a lock object instead of lock (this)
  20. PERFORMANCE: ICU4N.Globalization.UCharacterNameIterator: Removed unnecessary redundant lock
  21. PERFORMANCE: ICU4N.Util.VersionInfo: Use ConcurrentDictionary and remove locking
  22. PERFORMANCE: ICU4N.Transliterator: Use lock object, LazyInitializer, and ConcurrentDictionary where appropriate to avoid lock (this)
  23. Changed properties to use expression-style syntax, where appropriate
  24. PERFORMANCE: Optimized empty collection creation
  25. PERFORMANCE: Eliminated InvalidCastExceptions and created if-then blocks that test the type compatibility instead
  26. PERFORMANCE: Implmentd GetHashCode() where it was "not designed" in the original implementation
  27. BREAKING: ICU4N.Util.UResourceBundle: Changed GetLocaleID() and GetBaseName() to properties LocaleID and BaseName
  28. ICU4N.Tests.Collation.Dev.Test.Util.ICUResourceBundleCollationTest: Enabled TestFunctionalEquivalent() test, as it now passes
  29. ICU4N.Tests.Dev.Test.Rbbi.RBBITestExtended::TestExtended(): Enabled the test, as it now passes
  30. ICU4N.Impl.ICUService: Fixed broken reference in XML doc comment
  31. Ugraded to J2N 2.0.0-beta-0009

v60.1.0-alpha.351

v60.1.0-alpha.351 Pre-release
Pre-release

Choose a tag to compare

@NightOwl888 NightOwl888 released this 15 Jul 21:08

Change Log

  1. BREAKING: Moved LocaleIDParser, LocaleIDs, and LocaleUtility to ICU4N.Globalization namespace
  2. ICU4N.Support.Collections: Deleted unneeded GenericComparer and swapped in the implementation from J2N.
  3. BREAKING: ICU4N.Impl.ICULocaleService: Refactored Get() and GetKey() overloads to use out parameters rather than passing in single dimensional arrays (Java has no out parameters, so this was a workaround in ICU4J)
  4. Upgraded to J2N 2.0.0-beta-0008
  5. Upgraded to Nerdbank.GitVersioning 3.0.28

v60.1.0-alpha.350

v60.1.0-alpha.350 Pre-release
Pre-release

Choose a tag to compare

@NightOwl888 NightOwl888 released this 15 Jul 20:51

Change Log

  1. Fixed bug in build generation of InternalsVisibleTo attributes that was introduced by a breaking change in Visual Studio 2019
  2. BREAKING: Replaced ICU4N.Util.ULocale with a .NETified ICU4N.Globalization.UCultureInfo class that matches the API of System.Globalization.CultureInfo. (Closes #3)

v60.1.0-alpha.300

v60.1.0-alpha.300 Pre-release
Pre-release

Choose a tag to compare

@NightOwl888 NightOwl888 released this 01 Jun 00:17

Change Log

  1. Added tests for ICU4N.Globalization.UScript.TryGetName and ICU4N.Globalization.UScript.TryGetShortName
  2. Added PackageIconUrl MSBuild property for backward compatibility, since the current build tools do not yet support PackageIcon

v60.1.0-alpha.238

v60.1.0-alpha.238 Pre-release
Pre-release

Choose a tag to compare

@NightOwl888 NightOwl888 released this 10 Apr 00:49

Change Log

  1. Added .NET Framework 4.0 target
  2. ICU4N: Eliminated unnecessary reference to Microsoft.CSharp
  3. Updated NuGet package icon

v60.1.0-alpha.231

v60.1.0-alpha.231 Pre-release
Pre-release

Choose a tag to compare

@NightOwl888 NightOwl888 released this 05 Apr 23:13

Change Log

1, Upgraded J2N dependency to version 2.0.0-beta-0007
2. BREAKING: ICU4N.Support.Text.ParsePosition: Factored out and replaced with implementation from J2N
3. Moved MSBuild features to solution-level Directory.Build.targets file to simplify maintenance
4. Moved InternalsVisibleTo attribute generation to solution-level Directory.Build.targets file to simplify maintenance
5. Fixed various build warnings

v60.1.0-alpha.225

v60.1.0-alpha.225 Pre-release
Pre-release

Choose a tag to compare

@NightOwl888 NightOwl888 released this 13 Mar 18:52

Change Log

  1. Upgraded LangVersion (C# language version) to 8.0

  2. BREAKING: Refactored SoftReference to utilize Microsoft.Extensions.Caching.Memory.MemoryCache to provide a way to use caching policies to evict the data. Reworked CacheBase, CacheValue, ICUResourceBundle, ICUResourceBundleImpl, ICUResourceBundleReader, Norm2AllModes, ResourceBundleWrapper, SoftCache, BreakIterator, NumberingSystem, and ULocale to eliminate unnecessary cache subclasses that have been replaced by a delegate method to create cached data in GetOrCreate() and factored out the D (data) parameter of CacheBase/SoftCache.

  3. Changed LocaleObjectCache to use an LRU cache.

  4. ICU4N.Impl.LocaleDisplayNamesImpl: Changed locking to use ReaderWriterLockSlim rather than a lock object to get better read throughput

  5. ICU4N.Impl.SortedSetRelation: Removed unnecessary memory allocations when using ExceptWith

  6. BUG: ICU4N.Util.UResourceBundle: GetAssembly() must provide each assembly type if it is referenced in the client project, so we use Type.GetType(string) to load a type. If non-null, it means the assembly is referenced and we can return the assembly instance. Lack of options for /coll, /curr, and /tranlit were causing some missing resources, which specifically caused ICU4N.Dev.Test.Collate.CollationAPITest::TestContractions() to fail.

  7. ICU4N.Impl.ResourceBundleWrapper: Changed fallback root to use the baseName to determine which assembly to use as root

  8. BREAKING: ICU4N.Impl.ICUService: Changed return type from SortedDictionary<string, string> to IDictionary<string, string> to decouple from the SortedDictionary<string, string> implementation

  9. ICU4N.Text.RuleBasedBreakIterator::DumpCache(): Fixed string formatting

  10. ICU4N.Text.FilteredBreakIterator, ICU4N.Util.CharsTrieBuilder: Added T4 templates to generate ICharSequence overloads

  11. BREAKING: Changed all IAppendable implementations to conform to .NET semantics. Append(value, startIndex, length) instead of Append(value, startIndex, endIndex).

  12. Made ICharSequence and IAppendable member overloads public

  13. BREAKING: Marked ICU4N.Impl.PluralRulesLoader, ICU4N.Support.Text.ChoiceFormat, ICU4N.Support.Text.FieldPosition, ICU4N.Support.Text.Formatter, ICU4N.Text.MessageFormat, ICU4N.Text.MessagePattern, ICU4N.Text.MessagePatternUtil, ICU4N.Text.NumberFormat, ICU4N.Text.PluralFormat, ICU4N.Text.PluralRanges, ICU4N.Text.SelectFormat, ICU4N.Text.UFormat as internal. We don't want these exposed until they are redesigned to be like .NET formatters.

  14. BREAKING: Removed most obsolete members from the public API (#7)

  15. BREAKING: ICU4N.Support.Collections: Marked all types internal

  16. BREAKING: ICU4N.Support.Globalization: Made CompareInfoComparer internal. Changed namespace of CompareInfoExtensions to ICU4N.Globalization. Renamed CompareInfoExtensions.ToComparer() > CompareInfoExtensions.AsComparer().

  17. BREAKING: ICU4N.Support.Text.AttributedString: Marked internal

  18. BREAKING: ICU4N.Support: Marked AnonymousComparer, IntegerExtensions, and Number classes internal

  19. BREAKING: Marked ICUConfig, ICUDebug, and ICU4N.Support.SystemProperties internal

v60.1.0-alpha.203

v60.1.0-alpha.203 Pre-release
Pre-release

Choose a tag to compare

@NightOwl888 NightOwl888 released this 12 Feb 18:06

Change Log

1, Upgraded J2N dependency to version 2.0.0-beta-0002
2. BREAKING: ICU4N.Support.AssemblyExtensions: Factored out and replaced with implementation from J2N
3. BREAKING: ICU4N.Support.TypeExtensions: Factored out and replaced with implementation from J2N
4. ICU4N.Collation.Text.RuleBasedCollator: Fixed null reference check to ignore the overridden ==operator in types that implement ICharSequence