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

Add DNMD into src/native #107961

Draft
wants to merge 219 commits into
base: main
Choose a base branch
from
Draft

Conversation

jkoritzinsky
Copy link
Member

@jkoritzinsky jkoritzinsky commented Sep 17, 2024

Add dnmd into the dotnet/runtime repo for usage by cDAC (and in the future, usage as the native ECMA-335 metadata library for the repo as a whole).

Depends on #107889

Includes basic structure, readme.md and Cmake for building.
Update CoTaskMemAlloc to 8-byte align.
Add base COM interfaces
Update C++ #ifdef
Add == operator for GUIDs
Updates GUID and BSTR tests.
Scenario tests broken on Windows.
uppercase hexidecmal strings for GUIDs.
Move util.h out of public inc/ dir
Add test for InvalidCastException
Fix memory leak in scenario test
Add dncp::com_ptr smart pointer for IUnknown
Add common wide string APIs
Create dotnet based project system for ease of use.

Create MSBuild system that works with
the basic dotnet commands.

Add notes to readme on how to test using
the dotnet SDK.
@jkoritzinsky jkoritzinsky added NO-MERGE The PR is not ready for merge yet (see discussion for detailed reasons) Hackathon Issues picked for Hackathon NO-REVIEW Experimental/testing PR, do NOT review it labels Sep 17, 2024
@dotnet-issue-labeler dotnet-issue-labeler bot added the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label Sep 17, 2024
- [`IMetaDataDispenser`][api_dispenser]
- [`IMetaDataImport`][api_import] / [`IMetaDataImport2`][api_import2]
- [`IMetaDataAssemblyImport`][api_assemblyimport]
- `dnmd_interfaces_static` - A static library version of `dnmd_interfaces`.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need its shared variant or can we just used the static lib (or minipal type of object) linked into the projects requiring the functionality?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The shared lib is useful for sharing out to other orgs/products that need to parse ECMA metadata.

Also for a debug flow for the cdacreader with DNNE, it would be helpful to have the shared lib.


## Build

> `git submodule update --init --recursive`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have avoided submodules in the past. We can copy https://github.com/AaronRobinsonMSFT/dncp sources over as well?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've actually removed the dncp dependency. I need to update this readme.

@am11
Copy link
Member

am11 commented Sep 18, 2024

If this is a one-time permanent move, then the location choice is good. Otherwise, this seems like something which can perhaps live in src/native/external (esp. if we are planning to sync the changes from upstream like rest of the dependencies)?

@jkoritzinsky
Copy link
Member Author

This is a permanent move once I do the fit-and-finish work. It'll still be buildable directly (with CI validation) and treated as a standalone project that is included into various products, but the project's home will be in this repo.

@am11 am11 added area-Infrastructure and removed needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners labels Sep 18, 2024
Copy link
Contributor

Tagging subscribers to this area: @dotnet/runtime-infrastructure
See info in area-owners.md if you want to be subscribed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-Infrastructure Hackathon Issues picked for Hackathon NO-MERGE The PR is not ready for merge yet (see discussion for detailed reasons) NO-REVIEW Experimental/testing PR, do NOT review it
Projects
Status: No status
Development

Successfully merging this pull request may close these issues.

3 participants