Arlodotexe / OwlCore

Have you ever seen an Owl do a barrel roll? Me neither. Essential supplemental tooling for .NET development.
MIT License
24 stars 3 forks source link

Breaking release: 0.1.0 #9

Closed Arlodotexe closed 1 year ago

Arlodotexe commented 1 year ago

Overview

Makes things more maintainable, gives breathing room for new code, and pushes us towards a stable 1.0.0. Doing things proper.

Release Notes

This package now follows a modified variant of semver2.0, standard across all new OwlCore packages. Breaking changes may occur as a minor version bump if the major version is 0.

This release marks a major effort to consolidate namespaces and migrate away from deprecated code.

New

OwlCore.Extensions is now in a separate nuget package. OwlCore.ComponentModel is now in a separate nuget package. OwlCore.Storage has been added as a transitive reference. OwlCore.Remoting is now in a separate nuget package and not included as a transitive reference. Added a FlushDefaultValues property to SettingsBase. Default value is true to match existing behavior. When set to false, it will skip writing default values to disk - recommended if your default values never change. Added a FlushOnlyChangedValues property to SettingsBase. Default value is false to match existing behavior. When set to true, only values that are changed in memory will be flushed to storage - recommended if you don't expect others to modify the settings files.

Improvements

In SettingsBase, when the stream for a setting isn't fully read (which makes deserialization impossible), the setting won't be loaded and LoadFailed will be emitted.

Breaking changes

OwlCore.AbstractStorage has been removed. Please migrate to the (much better) OwlCore.Storage instead. OwlCore.AbstractUI.Models.AbstractUICollection.Items property has been removed. Enumerate or modify the collection directly instead. OwlCore.Services.SettingsBase has been migrated to OwlCore.Storage. OwlCore.Validation.Ensure and all usages of it have been removed in favor of CommunityToolkit.Diagnostics.Guard. OwlCore.Services.IInstanceCacheRepository and OwlCore.Services.InstanceCacheRepository have been removed. Just use a Dictionary{T, T} instead. OwlCore.Provisos.IAsyncInit was moved to OwlCore.ComponentModel.IAsyncInit. OwlCore.Events.CollectionChangedEventHandler was moved to OwlCore.ComponentModel.CollectionChangedEventHandler. OwlCore.Events.CollectionChangedItem{T} was moved to OwlCore.ComponentModel.CollectionChangedItem{T}. OwlCore.Provisos.IAsyncSerializer{T} was moved to OwlCore.ComponentModel.IAsyncSerializer{T}. OwlCore.Services.IDelegatable{T} was moved to OwlCore.ComponentModel.IDelegatable{T}. OwlCore.Services.SettingsBase was moved to OwlCore.ComponentModel.SettingsBase. OwlCore.Services.LogLevel was moved to OwlCore.ComponentModel.LogLevel. OwlCore.Services.Logger was moved to OwlCore.ComponentModel.Logger. OwlCore.Services.LoggerMessageEventArgs was moved to OwlCore.ComponentModel.LoggerMessageEventArgs. OwlCore.Validation.Mime.MimeTypeMap has been moved to extension methods in OwlCore.Extensions. ReferenceEqualityComparer has been moved from OwlCore.EqualityComparers to OwlCore.Collections.Generic, matching the namespace of the System.Collections.Generic.ReferenceEqualityComparer in .NET 5+. OwlCore.APIs.GetAllItemsAsync has been moved to OwlCore.Flow.GetPaginatedItemsAsync. OwlCore.Flow.EasySemaphore has been moved to an extension method, as OwlCore.Extensions.SemaphoreSlimExtensions.DisposableWaitAsync. OwlCore.Flow.WhenCancelled has been moved to an extension method, as OwlCore.Extensions.AsyncExtensions.WhenCancelledAsync.