Skip to content

Xamarin iOS should call monovm_initialize for .NET 6 #10504

@CoffeeFlux

Description

@CoffeeFlux

monovm_initialize is a cleaned-up equivalent to coreclr_initialize, which is one of the .NET Core hosting functions in CoreClrHost.h.

Signature: https://github.com/dotnet/runtime/blob/1d9e50cb4735df46d3de0cee5791e97295eaf588/src/mono/mono/mini/mono-private-unstable.h#L30

It needs to be called in net6 embedding projects before the runtime is started. Specifically, what it's doing is:

  • Passing in various runtime properties, a subset of which we support. The important ones are:
    • TRUSTED_PLATFORM_ASSEMBLIES: Hard-coded list of assemblies, intended to be used for the BCL and fast-path'd in the loading algorithm. They also have some ALC loading implications (default context only).
    • APP_PATHS: Essentially the same as MONO_PATH. Prefer TRUSTED_PLATFORM_ASSEMBLIES where possible.
    • NATIVE_DLL_SEARCH_DIRECTORIES: Extra directories to check when loading native libraries for pinvokes.
    • System.Globalization.Invariant: Alternative way to set the DOTNET_SYSTEM_GLOBALIZATION_INVARIANT env var.
    • PINVOKE_OVERRIDE: First-chance native callback to control P/Invoke resolution, see Static linking of native libs runtime#44505
  • Adding netcore-specific loader hooks, some of which use those properties
  • Setting the runtime to use strict assembly name checking, as we still default to the historical behavior otherwise

The runtime properties are also set in files like .runtimeconfig.json, which is parsed in by the default host and passed to coreclr_initialize. Mono embedders not using the default host will have to handle this themselves, probably at build time in the case of Xamarin, if they wish to support those files.

Applications not calling monovm_initialize may result in a runtime error at some undetermined point in the future.



Time estimate: 2 weeks

Metadata

Metadata

Assignees

Labels

dotnetAn issue or pull request related to .NET (6)dotnet-pri1.NET 6: important for stable releaseestimate-2wfeatureA feature to be implementediOSIssues affecting iOSmacOSIssues affecting macOS

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions