Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bump Microsoft.Diagnostics.Runtime.Utilities from 2.0.0-rc.20303.3 to 2.0.206203 #735

Conversation

dependabot[bot]
Copy link
Contributor

@dependabot dependabot bot commented on behalf of github Jan 18, 2021

Bumps Microsoft.Diagnostics.Runtime.Utilities from 2.0.0-rc.20303.3 to 2.0.206203.

Changelog

Sourced from Microsoft.Diagnostics.Runtime.Utilities's changelog.

ClrMD 2.0 Beta Release Notes

Over the last few weeks we have been rewriting a lot of the internal core of ClrMD to fix a lot of issues that have been problematic in the library. ClrMD 2.0 is faster, allows you to control how much memory the library uses, and is thread safe (with exceptions), but it has a lot of breaking changes which will require you to update existing code to use it.

Quick Notes

We plan to continue fixing bugs in ClrMD 1.1 for the foreseeable future, so you are not forced to upgrade if you do not want to. I do plan to only add new features to ClrMD 2.0, but the community is welcome to submit Pull Requests to backport or add features to ClrMD 1.1.

Please note that the API surface area of ClrMD 2.0 is not finalized and there may be breaking changes between now and when the library is out of beta. I expect to release the non-beta version around March/April 2020.

Changes from ClrMD 1.1

Added features:

  1. Memory Usage/Performance - ClrMD has reduced its overall memory usage and improved performance.
  2. Cache Control - You can now control what ClrMD caches to via DataTarget.CacheOptions. Note that disabling caches does greatly slow the library down but it also drastically reduces memory usage. You can also call ClrRuntime.FlushCachedData at any time to empty ClrMD's caches and reclaim memory.
  3. Thread Safety - If ClrRuntime.IsThreadSafe returns true then you are allowed to call all functions from multiple threads. Please note that you likely will not see much performance improvements by running algorithms in parallel. The CLR debugging layer, mscordaccore.dll, takes a giant lock around most operations which means we do not get easy performance gains. This should make your code much easier to write if you need to do work on another thread.
  4. Nullable Reference Types - ClrMD fully implements nullable reference types so you will know exactly what you need to null check from the library.
  5. Architectural Overhaul - ClrMD is now much less internally coupled. Most implementation types are now public, allowing you to use those types directly or to use the I*Builder interfaces to "mock" objects more easily. While the changes aren't perfect for mocking the library, it's definitely better than were we were before.
  6. Clean up Exceptions Thrown by ClrMD - This is planned but not yet completed.
  7. Provide a set of Benchmarks - ClrMD will provide a reasonable set of benchmarks so you know how much an operation should cost. This is planned but not yet completed.

Removed:

  1. Removed Blocking Objects - This was buggy in its initial implementation and never worked right. We do not intend to support this or rebuild it in 2.0.
  2. SymbolLocator partially removed - ClrMD still supports communicating with a symbol server to locate binaries but it's no longer intended to be a general purpose symbol server client.
  3. CLR v2 and v4 (prior to 4.5) support removed - ClrMD supports all .Net Core versions and Desktop .Net 4.5 and beyond. If you need to debug earlier versions of CLR, please use ClrMD 1.1.
  4. PDB Reading Removed - The implementation I was carrying in ClrMD was buggy and did not support PortablePDBs. I do not intend to keep this functionality in ClrMD 2.0. It's just too difficult to keep working and it's not needed or used by the rest of the library.

Why did we make these changes?

The first version of ClrMD is nearly 10 years old now, and it's starting to show its age. Over the years I've made some bad design decisions and added some questionable features that I wish I could fix or move to another (supported) library, but I've tried to maintain compatibility for folks who already built tools on top of ClrMD and that's hamstrung development in a lot of areas.

Please feel free to file issues against this beta version of ClrMD if you have questions, a feature request, or a bug to report.

Better performance, less memory.

We use Span in place of most byte[] data reading operations, and use ArrayPool instead of doing our own allocating. We have eliminated a ton of needless garbage generated at runtime.

Better architecture

The old ClrMD implementation had a deep, confusing, and poorly thought out internal class hierarchy. This mostly grew organically from years of development and not be cleaned up due to compatibility concerns. The entire library has been refactored from the ground up to fix this. We've also removed Lazy usage throughout a lot of the codebase because it made debugging problems with ClrMD difficult to do. We still evaluate most properties lazily, just without the use of that class.

Thanks

Thank you to everyone who contributed feedback, issues, and code for ClrMD 2.0. Especially NextTurn, who submitted countless changes and pull requests to make this possible.

Commits

Dependabot compatibility score

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 will merge this PR once CI passes on it, as requested by @AArnott.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually

Bumps [Microsoft.Diagnostics.Runtime.Utilities](https://github.com/Microsoft/clrmd) from 2.0.0-rc.20303.3 to 2.0.206203.
- [Release notes](https://github.com/Microsoft/clrmd/releases)
- [Changelog](https://github.com/microsoft/clrmd/blob/master/doc/ReleaseNotes2.0.md)
- [Commits](https://github.com/Microsoft/clrmd/commits)

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot bot added the dependencies Pull requests that update a dependency file label Jan 18, 2021
@AArnott
Copy link
Member

AArnott commented Jan 21, 2021

@dependabot squash and merge

@dependabot @github
Copy link
Contributor Author

dependabot bot commented on behalf of github Jan 21, 2021

One of your CI runs failed on this pull request, so Dependabot won't merge it.

Dependabot will still automatically merge this pull request if you amend it and your tests pass.

Base automatically changed from master to main January 28, 2021 02:05
@dependabot @github
Copy link
Contributor Author

dependabot bot commented on behalf of github Jan 28, 2021

Looks like Microsoft.Diagnostics.Runtime.Utilities is up-to-date now, so this is no longer needed.

@dependabot dependabot bot closed this Jan 28, 2021
@dependabot dependabot bot deleted the dependabot/nuget/Microsoft.Diagnostics.Runtime.Utilities-2.0.206203 branch January 28, 2021 02:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dependencies Pull requests that update a dependency file
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant