Releases: CommunityToolkit/dotnet
Releases · CommunityToolkit/dotnet
8.1.0 Preview 2
Breaking changes (since 8.1.0 Preview 1) 💥
- The
StreamExtensions.Read<T>
method now throws anEndOfStreamException
when reaching end of stream
What's Changed (since 8.0.0) 🆕
- Use
Nullable.GetValueRefOrDefaultRef
where possible by @Sergio0694 in #499 - Bump NuGet packages to latest stable versions by @Sergio0694 in #501
- Drop .NET Core 3.1 TFM by @Sergio0694 in #502
- Fix
IBufferWriterExtensions
type of exception thrown documentation by @pziezio in #497 - Move all source files into src\subfolder by @Sergio0694 in #507
- Use PolySharp for polyfills, and centralize shared MSBuild properties by @Sergio0694 in #510
- Replace
Unsafe.SizeOf<T>()
withsizeof(T)
by @Sergio0694 in #511 - Replace
Unsafe.NullRef<T>()
withref *(T*)null
by @Sergio0694 in #512 - Fix
StreamExtensions.Read<T>
when using buffered streams by @Sergio0694 in #520 - Use ref fields on .NET 7 for all span-like types by @Sergio0694 in #519
- Add analyzer for incorrect
[INotifyPropertyChanged]
and[ObservableObject]
use by @Sergio0694 in #531 - Add analyzer for references to fields with
[ObservableProperty]
by @Sergio0694 in #532 - Use
Stream.ReadExactly
on .NET 7 by @Sergio0694 in #535
New Contributors
Full Changelog: v8.1.0-preview1...v8.1.0-preview2
8.1.0 Preview 1
Breaking changes (since 8.0.0) 💥
- All
Ref<T>
-like types in the HighPerformance package are now .NET 7 only - Removed a .NET Standard 2.0 only overload for
LockExtensions
(which was marked as preview)
What's Changed (since 8.0.0) 🆕
- Correct typo in converters by @heku in #394
- Fix for using C# 8.0 projects (e.g. UWP projects stuck on .NET Core 3) by @zhuman in #398
- Multi-target Roslyn dependency in MVVM Toolkit generators by @Sergio0694 in #428
- Move language diagnostics to diagnostic analyzers by @Sergio0694 in #433
- Move diagnostics for orphaned observable property attributes to analyzer by @Sergio0694 in #434
- Don't use ISymbol in IncrementalValuesProvider nodes by @Sergio0694 in #435
- Update URLs for Status Badges in Readme by @michael-hawker in #439
- Use ForAttributeWithMetadataName when possible by @Sergio0694 in #436
- readme enhancement for nuget package by @WeihanLi in #444
- Replace characters from StringBuilder to reduce string allocations by @Youssef1313 in #447
- Enable explicit attribute forwarding for [ObservableProperty] by @Sergio0694 in #449
- Improve Perf for Azure Pipelines build by @Nirmal4G in #450
- Use EditorConfig to apply file headers by @Nirmal4G in #452
- Remove Roslyn 4.3 workaround, bump to 4.3.1 by @Sergio0694 in #462
- More MVVM Toolkit generator improvements by @Sergio0694 in #460
- Add IObservable extensions for IMessenger by @Sergio0694 in #461
- Fix [RelayCommand] for methods that can't be lowered by @Sergio0694 in #475
- Add and use new EquatableArray type in source generators by @Sergio0694 in #469
- Add .NET 7 TFM to HighPerformance target, switch to C# 11 by @Sergio0694 in #481
- Remove unnecessary finalizers by @Sergio0694 in #483
- Update NuGet icon by @Sergio0694 in #486
- More source generator optimizations by @Sergio0694 in #487
- Moar source generator optimizations by @Sergio0694 in #489
New Contributors
- @heku made their first contribution in #394
- @zhuman made their first contribution in #398
- @WeihanLi made their first contribution in #444
- @Youssef1313 made their first contribution in #447
Full Changelog: v8.0.0...v8.1.0-preview1
8.0.0
Breaking changes (since 7.1.x) 💥
- #292: Add FlowExceptionsToTaskScheduler command option
- #288: Rename attributes, enable class-level support
- [AlsoNotifyChangeFor] ---> [NotifyPropertyChangedFor]
- [AlsoNotifyCanExecuteFor] ---> [NotifyCanExecuteChangedFor]
- [AlsoValidateProperty] ---> [NotifyDataErrorInfo]
- [AlsoBroadcastChange] ---> [NotifyPropertyChangeRecipients]
- [ICommand] ---> [RelayCommand]
- #248: Block [ObservableProperty] on properties causing conflicts
- #267: property validation is now opt-in, and [NotifyDataErrorInfo] is needed
- #169: Revamp observable collection APIs
- #183: Remove SpinLock extension taking an object
- #190: Change IndexOf APIs to return -1 if not found
- #173: Remove obsolete APIs
- #151: Move collection types to MVVM Toolkit
- #131: Remove CanExecute checks from Execute logic
- #113: Propagate task exceptions to TaskScheduler.UnobservedTaskException
- #127: Switch async commands to default to no concurrent execution
- #79: Add [RequiresPreviewFeatures] to unsafe APIs (HighPerformance)
- #77: Strip source generator attributes by default (MVVM Toolkit)
- #63: Switch source generators to incremental generators (MVVM Toolkit)
- #60: Add null checks for parameters of public APIs (MVVM Toolkit)
- #42: Switch .NET 5 target to .NET 6
- Remove .NET Standard 1.4, .NET Core 2.1 and .NET 5 targets.
- Switch setters in attribute properties to init-only. (MVVM Toolkit)
- Move
NullabilityExtensions
toCommunityToolkit.HighPerformance
namespace. (HighPerformance)
Improvements (since 7.1.x) ✨
- #285: Properly forward nullability annotations for [ICommand]
- #277: Add diagnostic for duplicate ICommand-s in base types
- #279: Add support for "On" prefix for command methods
- #284: Use ".g.cs" extension for all generated files
- #267: Add [AlsoValidateProperty] attribute
- #181: Fix [ICommand] generator crashing with overloads, add diagnostics
- #161: Allow Task-returns on methods with [ICommand]
- #179: Make NullabilityAttributesGenerator incremental
- #141: Extend source generator diagnostics in several scenarios
- #119: [ObservableProperty] generates partial OnPropertyChanging/Changed methods
- #128: Add cancel command support
- #135: Add [DynamicallyAccessedMembers] annotations
- #122: Fix async command event notifications
- #124: Add to generated observable properties
- #64: Add NullableExtensions.DangerousGetValueOrNullReference (HighPerformance)
- #30: Add concurrency control to AsyncRelayCommand types (MVVM Toolkit)
- #48: Enable INotifyPropertyChanging AppContext switch (MVVM Toolkit)
- #50: Add [ICommand] CanExecute property (MVVM Toolkit)
- #29: Add [CallerArgumentExpression] to Guard APIs (Diagnostics)
- #66: Add vectorized Count support for nint/nuint (HighPerformance)
- #70: Add interpolated handler overload for Guard.IsTrue/IsFalse (Diagnostics)
- #53: Add [AlsoNotifyCanExecuteFor] attribute (MVVM Toolkit)
- #78: Remove class constraint from Guard.Is[Not]Null APIs (Diagnostics)
- #76: Add trimming support
- #68: Add [StackTraceHidden] attribute to internal ThrowHelper type (Diagnostics)
- #69: Remove [Pure] attribute usages
- #67: Add missing trailing dot to exception messages (Diagnostics)
- #47: Switch all generated code to global:: (MVVM Toolkit)
- #31: Improve header for generated files (MVVM Toolkit)
- #59: Optimize StrongReferenceMessenger (MVVM Toolkit)
- #44: Optimize WeakReferenceMessenger (MVVM Toolkit)
NOTE: for a full list of all changes in past previews, see the changelog for 8.0.0 Preview1-4.
What's Changed (since 8.0.0-Preview4) 🆕
- Update EditorConfig and Git files by @Nirmal4G in #304
- Add missing trimming annotations by @Sergio0694 in #310
- Add "this." prefix to all field accesses by @Sergio0694 in #309
- Add unique prefixes to all .targets properties and items by @Sergio0694 in #321
- Improve exceptions for invalid command arguments by @Sergio0694 in #301
- Fix [RelayCommand] CanExecute when nullable arguments are used by @Sergio0694 in #302
- Add aka.ms links to MVVM generator diagnostics by @Sergio0694 in #326
- Asynchronous implementation of
MemorySource<TSource>.CopyToAsync
by @OronDF343 in #266 - Replace linker suppressions with attributes by @Sergio0694 in #359
New Contributors
- @OronDF343 made their first contribution in #266
Full Changelog: v8.0.0-preview4...v8.0.0
8.0.0 Preview 4
Changes:
Breaking Changes 💥:
- #292: Add FlowExceptionsToTaskScheduler command option
- #288: Rename attributes, enable class-level support
- [AlsoNotifyChangeFor] ---> [NotifyPropertyChangedFor]
- [AlsoNotifyCanExecuteFor] ---> [NotifyCanExecuteChangedFor]
- [AlsoValidateProperty] ---> [NotifyDataErrorInfo]
- [AlsoBroadcastChange] ---> [NotifyPropertyChangeRecipients]
- [ICommand] ---> [RelayCommand]
- #248: Block [ObservableProperty] on properties causing conflicts
- #267: property validation is now opt-in, and [NotifyDataErrorInfo] is needed
Improvements ✨:
- #285: Properly forward nullability annotations for [ICommand]
- #277: Add diagnostic for duplicate ICommand-s in base types
- #279: Add support for "On" prefix for command methods
- #284: Use ".g.cs" extension for all generated files
- #267: Add [AlsoValidateProperty] attribute
Bugs 🐛:
- #254: Latest preview assemblies are not signed
- #224: [ObservableProperty] Mvvm SourceGenerator does not work for Generics
Others:
- #290: Update Company and Authors metadata items
- #289: Strong-name sign assemblies
- #275: Fix ICommand generator with inherited CanExecute members
- #276: Fix source generators for types in global namespace
- #278: Enable trim analyzers in MVVM Toolkit again
- #281: Remove temporary strings in source generators formatting
- #237: Typos
- #258: Fix [ICommand] CanExecute with inherited generated property
- #261: Fix build errors with generic generation target types
- #260: Disable source generators for abstract types
- #250: Fix [AlsoBroadcastChange] not working when followed by other attributes
- #249: Make source generators culture invariant
- #247: Remove [Conditional] from MVVM Toolkit attributes
- #236: Fix ObservableValidator duplicate generated partial declarations
- #211: Fix generation of nested types that are not classes
This list of changes was auto generated.
8.0.0 Preview 3
Changes:
Breaking Changes 💥:
- #169: Revamp observable collection APIs
- #183: Remove SpinLock extension taking an object
- #190: Change IndexOf APIs to return -1 if not found
- #173: Remove obsolete APIs
- #151: Move collection types to MVVM Toolkit
Improvements ✨:
- #181: Fix [ICommand] generator crashing with overloads, add diagnostics
- #161: Allow Task-returns on methods with [ICommand]
- #179: Make NullabilityAttributesGenerator incremental
- #141: Extend source generator diagnostics in several scenarios
Others:
- #202: Fix incorrect MVVMTK0015 with inherited members
- #184: Fix MissingMethodExceptions for Stream extensions
- #160: Fix nullability annotations in generated properties
- #152: Add new [AlsoBroadcastChange] attribute
- #139: Fix async relay command CanExecute raised with no concurrency
This list of changes was auto generated.
8.0.0 Preview 2
Changes:
Breaking Changes 💥:
- #131: Remove CanExecute checks from Execute logic
- #113: Propagate task exceptions to TaskScheduler.UnobservedTaskException
- #127: Switch async commands to default to no concurrent execution
New features 🆕:
- #119: [ObservableProperty] generates partial OnPropertyChanging/Changed methods
- #128: Add cancel command support
Improvements ✨:
- #135: Add [DynamicallyAccessedMembers] annotations
- #122: Fix async command event notifications
- #124: Add to generated observable properties
Bugs 🐛:
- #13: MVVM Source Generators: CS1028 Error if #region block
- #45: StrongReferenceMessenger.Unregister[All] fixes
Others:
- #132: Remove [DebuggerNonUserCode] from visible members
- #134: Remove ArrayPoolBufferWriter explicit constructor
- #130: Fixed typos in Span2D implicit operators
- #120: Fix IRecipient generator for partial recipient declarations
- #111: Fix AsyncRelayCommand with allowConcurrentExecutions == false not raising CanExecuteChanged
- #110: Fix [ObservableRecipient] with inherited base attributes
This list of changes was auto generated.
8.0.0 Preview 1
Changes:
Breaking Changes 💥:
- #79: Add [RequiresPreviewFeatures] to unsafe APIs (HighPerformance)
- #77: Strip source generator attributes by default (MVVM Toolkit)
- #63: Switch source generators to incremental generators (MVVM Toolkit)
- #60: Add null checks for parameters of public APIs (MVVM Toolkit)
- #42: Switch .NET 5 target to .NET 6
- Remove .NET Standard 1.4, .NET Core 2.1 and .NET 5 targets.
- Switch setters in attribute properties to init-only. (MVVM Toolkit)
- Move
NullabilityExtensions
toCommunityToolkit.HighPerformance
namespace. (HighPerformance)
New features 🆕:
- #64: Add NullableExtensions.DangerousGetValueOrNullReference (HighPerformance)
- #30: Add concurrency control to AsyncRelayCommand types (MVVM Toolkit)
- #48: Enable INotifyPropertyChanging AppContext switch (MVVM Toolkit)
- #50: Add [ICommand] CanExecute property (MVVM Toolkit)
- #29: Add [CallerArgumentExpression] to Guard APIs (Diagnostics)
- #66: Add vectorized Count support for nint/nuint (HighPerformance)
- #70: Add interpolated handler overload for Guard.IsTrue/IsFalse (Diagnostics)
- #53: Add [AlsoNotifyCanExecuteFor] attribute (MVVM Toolkit)
Improvements ✨:
- #78: Remove class constraint from Guard.Is[Not]Null APIs (Diagnostics)
- #76: Add trimming support
- #68: Add [StackTraceHidden] attribute to internal ThrowHelper type (Diagnostics)
- #69: Remove [Pure] attribute usages
- #67: Add missing trailing dot to exception messages (Diagnostics)
- #47: Switch all generated code to global:: (MVVM Toolkit)
- #31: Improve header for generated files (MVVM Toolkit)
- #59: Optimize StrongReferenceMessenger (MVVM Toolkit)
- #44: Optimize WeakReferenceMessenger (MVVM Toolkit)
Bug fixes 🐛:
- #13: MVVM Source Generators: CS1028 Error if #region block (MVVM Toolkit)
- #45: StrongReferenceMessenger.Unregister[All] fixes (MVVM Toolkit)
- #65: Fix RuntimeHelpers.IsReferenceOrContainsReferences polyfill (HighPerformance)
Documentation 📃:
Others:
- #92: Disable generation of header files if no targets are present (MVVM Toolkit)
- #91: Update .targets for MVVM Toolkit to fix .wapproj issues (MVVM Toolkit)
- #90: Update base version number to reflect upcoming version
- #88: Bump NuGet package reference versions
- #89: Fix conflicting generation of nullability attributes (MVVM Toolkit)
- #87: Calculate the current C# compiler version (MVVM Toolkit)
- #75: Minor code style tweaks
- #6: Update readme build number and add contributor image
- #4: Test CI Setup
This list of changes was auto generated.