Bump AsmResolver.DotNet from 6.0.0-beta.5 to 6.0.0#1166
Open
dependabot[bot] wants to merge 1 commit into
Open
Conversation
--- updated-dependencies: - dependency-name: AsmResolver.DotNet dependency-version: 6.0.0 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Updated AsmResolver.DotNet from 6.0.0-beta.5 to 6.0.0.
Release notes
Sourced from AsmResolver.DotNet's releases.
6.0.0
After 2 years of development, v6.0.0 is officially here!
This version focuses on five key milestones:
Expanded Architecture Support: A new
Platformabstraction enables support for more architectures, including ARM32 and ARM64. Furthermore, this version revamps the entire PE file building mechanism, and introducesTemplatedPEFileBuilderas a flexible foundation for building native Windows PEs and mixed-mode .NET modules.Multi-Assembly Processing: A single .NET assembly is rarely fully self-contained and typically references code in external assemblies (e.g., DLLs). This version introduces
RuntimeContext, which mimics anAppDomainorAssemblyLoadContext. It is responsible for automating assembly resolution and shared metadata caching, and significantly improves .NET cross-binary processing.API Simplification: The API has undergone many Quality-of-Life improvements, removing many redundant interfaces and namespaces, adding more NRT annotations, and improving AOT trimming support. Furthermore, it is no longer required to manually import metadata as AsmResolver now auto-importing references at build time.
Improved Portability: With the help of @MonoMod, we now support more build targets, including .NET Framework 3.5. We thereby extend compatibility to legacy environments like older versions of Unity/Mono.
Performance Boosts: Next to
RuntimeContext's shared caching model and more lazy evaluation, we now leverageSpan<T>, source generators, and other modern .NET features in more places, delivering significantly faster PE processing with fewer allocations and lowering memory consumption across the board.We've seen a huge uptick in the number of contributors, bug testers and new users over this period. A huge thank you to all of you! Without you this release wouldn't have been possible!
Migrating from v5.x
Migrating from v5.x requires addressing breaking changes. See the Migration Guide for more information.
Full Changelog
Changelog is relative to v5.5.1.
General Changes
12 changes
Improvements
System.Text.Jsonas a hard dependency for older .NET (FX) targets (#450, #538).IPEFileandIPEImage) (#445, #561, #562).EmptyErrorListener.Instancefor reading input files by default (#472, #564).IInputFile::BaseAddress(a1af121)IReadOnlyList<T>explicitly to collection classes for better compatibility with lower .NET targets (62ed463)PatchContext::WriterBase(#653)Performance
BinaryStreamWriterfor .NET 10+ targets (#695, thanks @Sergio0694).Utf8String::CreateUnsafefactory method which avoids cloning many small byte arrays (#709, thanks @Windows10CE)Utf8StringimplementISpanFormattableandIUtf8SpanFormattable(#699, thanks @Sergio0694).... (truncated)
6.0.0-rc.1
This is the release candidate for 6.0.0, addressing some important regressions/shortcomings found in beta.6. Note that with this release the API design will be frozen, and only improvements/bug fixes will be implemented until full release.
Improvements
NullAssemblyResolverandPathAssemblyResolver(#721, thanks @js6pak)CorLibTypeFactory.FromTypeto avoid many unnecessary string allocations (#717, thanks @wondercrash).ImportWithmethods with more specific return types (#720, thanks @js6pak).IMemberDescriptorequality checks inSignatureComparer(#722, thanks @js6pak).TryResolvemethods (e2bf223392c433e27b1ae2455da864a384601176).CorLibTypeFactory, making it easier to create one yourself (367968a73ab33e4fed98812c2f7662bbd8c96e9a)paramsoverloads in favor of using more explicit collection expressions for parameter types.Bug Fixes
TargetRuntimeProberwould crash with anArgumentNullExceptionwhen using AsmResolver in a .NET FX host (#723).TypeSignature::IsAssignableToand friends did not use the signature comparer of the providedRuntimeContext(0484a392827493a4c6d6db2b20ed4e7a48034be9)MetadataTable::TryGetRidByKeywould not respect the sorted flag, causing someFieldRvato not select the appropriateClassLayoutrow properly (#724, #728).FieldRvaDataReaderwould not always select the correct metadata stream in EnC situations (#724, #728).6.0.0-beta.6
This release brings the long-needed metadata resolution revamp. The previous system often caused incorrect, duplicated, or silent failed assembly resolutions, which sometimes resulted in bad metadata to be emitted in output binaries. The new system makes
RuntimeContextact more like anAppDomain/AssemblyLoadContext, centralizing assembly management and requiring all metadata resolution to go through it. Resolution is now also much more explicit, by always requiring aRuntimeContextinstance. This ensures more reliable, predictable behavior when creating and processing .NET metadata.Check out the updated documentation on RuntimeContexts on how to use the new APIs.
Full change log below:
New Features
RuntimeContexts (#704).IAssemblyResolveris drastically simplified and is no longer responsible for caching anymore.IMetadataResolverand friends are removed.RuntimeContextconstruction is drastically simplified.RuntimeContextis now responsible for resolving and maintaining assembly and metadata caches.RuntimeContext::LoadAssemblymethods to load assemblies into the context (similar toAssemblyDefinition::FromX, but using the context for reader parameters, cache and automatic wiring of dependencies).Resolvemethods in favor of aResolveandTryResolvemethod taking aRuntimeContext. Additionally, all properties and methods that may have implicitly required resolution will now take aRuntimeContextas well.SignatureComparercan now take aRuntimeContextin its constructor. When none is provided, the comparer will no longer try to resolve forwarder types and compare signatures as-is.TargetRuntimeProberto detect the target runtime of a PE image without loading it as a fullModuleDefinition(#704).MetadataDirectory::GetImpliedStreamSelection()(#704).S_TRAMPOLINEandS_GTHREAD32andS_LTHREAD32PDB symbols (#711, thanks @dongle-the-gadget).Improvements
UnmanagedPEFileBuildertoTemplatedPEFileBuilderto more accurately reflect its behavior (727c554571a848f2e09a1d7aa4365c287bd90934)KnownCorLibs) (#702, 55c847fd7617755ef09fffdf3512d454151bc7df).BinaryStreamWriterfor .NET 10+ targets (#695, thanks @Sergio0694).Utf8StringimplementISpanFormattableandIUtf8SpanFormattable(#699, thanks @Sergio0694).Utf8String::CreateUnsafefactory method (#709, thanks @Windows10CE)TypeAttributes::WindowsRuntime(#710, thanks @Sergio0694).ModuleDefinition::CreateConstructoroverload takingCorLibTypeFactory(#712, thanks @Sergio0694).Class2,Structure2,Union2andInterface2PDB leaf record types (#714, thanks @ds5678).Bug Fixes
Commits viewable in compare view.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)