Skip to content

Releases: SimplifyNet/Simplify

Simplify.Xml 1.4.1

Choose a tag to compare

@i4004 i4004 released this 25 Jun 15:43
812988a

Added

  • .NET 10 support

Changed

  • RemoveAllXmlNamespaces now removes all namespace declarations in a single regex pass instead of an O(n²) per-match string replacement loop (same result)
  • Duplicate converter classes (IObjectConverter, ObjectConverter, ChainedObjectConverter) removed from Simplify.Xml; project now references Simplify.System converters to eliminate DRY violation

Simplify.Xml 1.4.1

Choose a tag to compare

@i4004 i4004 released this 25 Jun 14:47
39022f1

Added

  • .NET 10 support

Changed

  • RemoveAllXmlNamespaces now removes all namespace declarations in a single regex pass instead of an O(n²) per-match string replacement loop (same result)
  • Duplicate converter classes (IObjectConverter, ObjectConverter, ChainedObjectConverter) removed from Simplify.Xml; project now references Simplify.System converters to eliminate DRY violation

Simplify.WindowsServices 2.16

Choose a tag to compare

@i4004 i4004 released this 25 Jun 15:42
812988a

Fixed

  • Crontab job timers were never stopped/disposed on service stop/dispose, leaking timers that kept firing during and after shutdown; all job timers are now stopped before waiting for running tasks and on dispose
  • Data race in CrontabProcessor between IsMatching and CalculateNextOccurrences over the shared occurrences list; access is now synchronized
  • Lifetime scope leak in basic job execution when resolving or invoking the job throws; the scope is now disposed on failure
  • Exceptions thrown from the crontab timer callback (OnCronTimerTick/OnStartWork) escaped to a thread-pool thread and terminated the service process; they are now routed to the OnException event
  • Unhandled job exceptions were rethrown from inside the worker task, surfacing as an AggregateException from Task.WaitAll and aborting graceful shutdown; they are no longer rethrown
  • Basic (long-running) job blocked OnStart (causing Service Control Manager start timeouts) and its lifetime scope was registered for disposal only after the job method returned, leaking the scope; the job now runs as a background task and the scope is registered before it runs

Dependencies

  • Simplify.DI bump to 4.3
  • Simplify.System bump to 1.6.3
  • Microsoft.Extensions.Configuration bump to 10.0.9

Simplify.Templates 2.0.3

Choose a tag to compare

@i4004 i4004 released this 25 Jun 15:57
58d851f

Added

  • .NET 10 support

Fixed

  • TemplateBuilder.BuildAsync ignored the preprocessing result, so FixLineEndingsHtml had no effect in the asynchronous build path

Dependencies

  • Internal Simplify.Xml.Sources bump to 1.4.1
  • Internal Simplify.System.Sources 1.6.3 added

Simplify.System.Sources 1.6.3

Choose a tag to compare

@i4004 i4004 released this 26 Jun 04:07
39022f1

Added

  • .NET 10 support

Fixed

  • WeakSingleton<T> was not fully thread-safe: the lock-free TryGetTarget fast path could race with target re-creation (WeakReference<T> instance members are not guaranteed thread-safe); reads and writes are now fully synchronized under a single lock
  • ApplicationEnvironment.Name, TimeProvider.Current, AssemblyInfo.Entry lazy initialization was not thread-safe (??=) and could return different instances under concurrent first access; initialization is now synchronized with double-checked locking
  • ObjectConverter<T> parameterless protected constructor left ConvertFunc null; Convert now guards against null with a descriptive exception
  • BytesExtensions.GetString silently dropped the last byte of an odd-length array; it now throws ArgumentNullException/ArgumentException instead of returning truncated data
  • AssemblyInfo.Title fallback resolved the name of the executing assembly (Simplify.System) instead of the wrapped assembly; it now returns the wrapped assembly name and no longer relies on Assembly.Location (empty in single-file/AOT)
  • DateTimeExtensions.TrimMilliseconds reset DateTimeKind to Unspecified; it now preserves the original Utc/Local/Unspecified kind

Simplify.System 1.6.3

Choose a tag to compare

@i4004 i4004 released this 25 Jun 12:49
39022f1

Added

  • .NET 10 support

Fixed

  • WeakSingleton<T> was not fully thread-safe: the lock-free TryGetTarget fast path could race with target re-creation (WeakReference<T> instance members are not guaranteed thread-safe); reads and writes are now fully synchronized under a single lock
  • ApplicationEnvironment.Name, TimeProvider.Current, AssemblyInfo.Entry lazy initialization was not thread-safe (??=) and could return different instances under concurrent first access; initialization is now synchronized with double-checked locking
  • ObjectConverter<T> parameterless protected constructor left ConvertFunc null; Convert now guards against null with a descriptive exception
  • BytesExtensions.GetString silently dropped the last byte of an odd-length array; it now throws ArgumentNullException/ArgumentException instead of returning truncated data
  • AssemblyInfo.Title fallback resolved the name of the executing assembly (Simplify.System) instead of the wrapped assembly; it now returns the wrapped assembly name and no longer relies on Assembly.Location (empty in single-file/AOT)
  • DateTimeExtensions.TrimMilliseconds reset DateTimeKind to Unspecified; it now preserves the original Utc/Local/Unspecified kind

Simplify.String.Sources 1.2.3

Choose a tag to compare

@i4004 i4004 released this 26 Jun 04:06
8015d74

Changed

  • Documented StringHelper.StripHtmlTags as a cosmetic tag remover (simple <.*?> regex), explicitly not an HTML/XSS sanitizer

Added

  • .NET 10 explicit support

Simplify.Scheduler 1.7

Choose a tag to compare

@i4004 i4004 released this 25 Jun 15:42
812988a

Fixed

  • Crontab job timers were never stopped/disposed on shutdown, leaking timers that kept firing during and after stop; all job timers are now stopped before waiting for running tasks and on dispose
  • Data race in CrontabProcessor between IsMatching and CalculateNextOccurrences over the shared occurrences list; access is now synchronized
  • Lifetime scope leak in basic job execution when resolving or invoking the job throws; the scope is now disposed on failure
  • MultitaskScheduler now unsubscribes from the static Console.CancelKeyPress event on dispose, preventing the disposed instance from being rooted and from receiving Ctrl+C after disposal
  • Exceptions thrown from the crontab timer callback (OnCronTimerTick/OnStartWork) escaped to a thread-pool thread and terminated the process; they are now routed to the OnException event
  • Unhandled job exceptions were rethrown from inside the worker task, surfacing as an AggregateException from Task.WaitAll and aborting graceful shutdown; they are no longer rethrown
  • Basic (long-running) job lifetime scope was registered for disposal only after the job method returned, leaking the scope for never-completing jobs and blocking startup; the scope is now registered before the job runs and the job is executed without blocking startup

Added

  • .NET 10 support

Dependencies

  • Simplify.DI bump to 4.3
  • Simplify.System bump to 1.6.3
  • Microsoft.Extensions.Configuration bump to 10.0.9

Simplify.Resources 1.1

Choose a tag to compare

@i4004 i4004 released this 25 Jun 14:44
39022f1

Added

  • .NET 10 support
  • ResourcesStringTable.GetRequiredString, throws KeyNotFoundException if key is not found

Fixed

  • ResourcesStringTable now throws a descriptive InvalidOperationException instead of a NullReferenceException when the entry assembly cannot be resolved (e.g. in unmanaged/host scenarios)
  • ResourcesStringTable(Assembly, ...) constructor now validates the assembly parameter with ArgumentNullException
  • StringTable.Entry setter now uses nameof(value) in ArgumentNullException instead of an empty parameter name
  • StringTable.Entry lazy initialization was not thread-safe (??=) and could allocate duplicate instances under concurrent first access; initialization is now synchronized with double-checked locking

Simplify.Repository.FluentNHibernate 1.7.4

Choose a tag to compare

@i4004 i4004 released this 25 Jun 15:53
a37decb

Added

  • .NET 10 support

Dependencies

  • Simplify.FluentNHibernate bump to 3.3.1
  • Simplify.DI bump to 4.3