11import atexit
2- from typing import Optional
2+ from typing import Optional , Sequence
33
44from .ffi import load_mono , ffi
55
@@ -17,13 +17,17 @@ def __init__(
1717 libmono ,
1818 * ,
1919 domain = None ,
20+ debug = False ,
21+ jit_options : Optional [Sequence [str ]] = None ,
2022 config_file : Optional [str ] = None ,
2123 global_config_file : Optional [str ] = None ,
2224 ):
2325 self ._assemblies = {}
2426
2527 initialize (
2628 config_file = config_file ,
29+ debug = debug ,
30+ jit_options = jit_options ,
2731 global_config_file = global_config_file ,
2832 libmono = libmono ,
2933 )
@@ -95,6 +99,8 @@ def __call__(self, ptr, size):
9599
96100def initialize (
97101 libmono : str ,
102+ debug : bool = False ,
103+ jit_options : Optional [Sequence [str ]] = None ,
98104 config_file : Optional [str ] = None ,
99105 global_config_file : Optional [str ] = None ,
100106) -> None :
@@ -113,6 +119,13 @@ def initialize(
113119
114120 config_encoded = config_file .encode ("utf8" )
115121
122+ if jit_options :
123+ options = [ffi .new ("char[]" , o .encode ("utf8" )) for o in jit_options ]
124+ _MONO .mono_jit_parse_options (len (options ), options )
125+
126+ if debug :
127+ _MONO .mono_debug_init (_MONO .MONO_DEBUG_FORMAT_MONO )
128+
116129 _ROOT_DOMAIN = _MONO .mono_jit_init (b"clr_loader" )
117130 _MONO .mono_domain_set_config (_ROOT_DOMAIN , b"." , config_encoded )
118131 _check_result (_ROOT_DOMAIN , "Failed to initialize Mono" )
0 commit comments