Skip to content

Add support to process assemblies with generics <T> #183

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

Merged
merged 316 commits into from
Apr 10, 2025
Merged

Conversation

josesimoes
Copy link
Member

@josesimoes josesimoes commented Mar 21, 2025

Description

  • Rework metadata tables to include elements to hold data on generic types and instances.
  • Add support for MethodSpec and TypeSpec.
  • Rework most of the tables to include data for generic types and instances.
  • Add sanity checks and code in a bunch of several places.
  • Rewrote PDBX writer from XML to json.
  • Add new extensions to improve usage.
  • Rewrote dumper to follow format from ILDASM.
  • Add new unit tests to cover changes.
  • Update YAML for AZDO so that a specific nanoCLR can be used when running the unit tests allowing to fully cover all possible changes.
  • Update dumper and writer unit tests.
  • Update dependencies on console, msbuild tasks and core.
  • Update sub-modules to ref generic branches (to be replaced with main, following merge).
  • Code style fixes throughout source files.
  • Add/update license header in all source files.

Motivation and Context

How Has This Been Tested?

  • Running unit tests
    [tested against nanoclr buildId 55254]

Screenshots

Types of changes

  • Improvement (non-breaking change that improves a feature, code or algorithm)
  • Bug fix (non-breaking change which fixes an issue with code or algorithm)
  • New feature (non-breaking change which adds functionality to code)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Config and build (change in the configuration and build system, has no impact on code or features)
  • Dependencies (update dependencies and changes associated, has no impact on code or features)
  • Unit Tests (add new Unit Test(s) or improved existing one(s), has no impact on code or features)
  • Documentation (changes or updates in the documentation, has no impact on code or features)

Checklist:

  • My code follows the code style of this project (only if there are changes in source code).
  • My changes require an update to the documentation (there are changes that require the docs website to be updated).
  • I have updated the documentation accordingly (the changes require an update on the docs in this repo).
  • I have read the CONTRIBUTING document.
  • I have tested everything locally and all new and existing tests passed (only if there are changes in source code).
  • I have added new tests to cover my changes.

Summary by CodeRabbit

  • Chores

    • Updated various project dependencies to their latest versions for improved stability and performance.
    • Enhanced build pipeline configuration with refined formatting and execution flow adjustments.
  • New Features

    • Introduced a preview release (version 4.0-preview) that paves the way for upcoming experimental capabilities.

- Need to have all the others properly filled in order to get parameters types.
- Add crawler to find generic parameter type.
- Generic param PE record now includes parameter type.
- Add extension to encode typeRef.
- Add helper class to encode/decode type tokens.
- Rework dumper to make use of these.
- Update code accordingly.
- Update helper class to support.
- Now using NanoTypeOrMethodDefToken.
- Add comments with names from the docs.
- Remove unused padding.
- To sync enum across CLR, MDP and VS extension.
- To sync with other components.
- Include extra information to help debug and validate output.
- Improve field output.
- Locals output now includes class name and type tokens (nano and CLR).
- Tokens are now output with upper case hexa.
- Now only generates MetodhDef and Ref.
@josesimoes josesimoes changed the base branch from main to develop April 9, 2025 16:11
@josesimoes josesimoes force-pushed the generics-wip branch 8 times, most recently from 3e4dcc4 to e7e0e89 Compare April 10, 2025 12:00
- Rename job for clarity sake.
- Add processing of tag to use preview version of nanoCLR.
- Add task to download preview version of nanoCLR on demand.
- Add task to set env variable with nanoCLR for unit tests.
- Fix filter for deployables.
@josesimoes josesimoes force-pushed the generics-wip branch 6 times, most recently from 124d6ff to 78fd60e Compare April 10, 2025 14:59
@josesimoes josesimoes merged commit e1ae538 into develop Apr 10, 2025
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants