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

RefEmit for coreclr can not persist assemblies to disk, and refemit debugging is not supported by coreclr #4555

Closed
KevinRansom opened this issue Oct 7, 2015 · 4 comments
Assignees
Milestone

Comments

@KevinRansom
Copy link
Member

Hi,

I am afraid to say that I really need three features to be added to refemit on coreclr. I understand that they may be considered not desirable, however I need them or their absence is going to limit what we can do with FSI and TypeProviders on Coreclr. F# supports generative type providers, these use metadata discovered at compile time from db, schemas, web services, reflection e.t.c. to generate types that can be called by F# source code typed in by a developer.

In order to deploy the assemblies created by the generative type provider we need access to a Save command.

  1. We have considered rewriting this to emit assemblies directly rather than using refemit, however:
    o that would be expensive, in terms of the rewrite and testing.
    o The Type Providers themselves use RefEmit, and so as well as porting them to the coreclr, developers are going to have to use a new Api for emitting the types. We want the migration to be relatively straightforward.

We also would like coreclr to emit portable PDB’s.
2. To allow the debugging of the code generated by generative compilers.

We also need the coreclr to support debugging of in-memory assemblies generated with ref-emit.
3. To support FSI debugging. VS 2015 introduced a much liked feature that allows the VS debugger or any other debugger to debug an interactive session, we need symbols for this. We would like to enable it on VS code too.

The desktop supported facilities similar to these, and we have built tooling that relies on these behaviors. We also believe that facilities similar to these will be required by many other tool builders.

Thanks

Kevin

@DemiMarie
Copy link

F# probably needs this feature more than C# or VB.NET ever will. I hope that it is implemented.

@joshfree
Copy link
Member

joshfree commented Nov 4, 2015

updating the milestone to Future since it's my understanding that this issue is off track for 1.0.0. We'll need to revisit this for 1.1

@weshaggard weshaggard assigned jkotas and unassigned weshaggard Mar 23, 2016
@zhenlan
Copy link
Member

zhenlan commented Sep 2, 2016

Just an update - I have been pinged by quite a few customers online/offline. The absence of the API to persist an assembly to disk is a blocking issue for us from building a tool for pre-generated serializers (issue dotnet/corefx#4561).

@jkotas
Copy link
Member

jkotas commented Jan 30, 2017

Duplicate of https://github.com/dotnet/corefx/issues/4491. Let's use the corefx issue to track this.

@jkotas jkotas closed this as completed Jan 30, 2017
@msftgits msftgits transferred this issue from dotnet/coreclr Jan 30, 2020
@msftgits msftgits added this to the Future milestone Jan 30, 2020
@ghost ghost locked as resolved and limited conversation to collaborators Jan 4, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

7 participants