@@ -121,11 +121,28 @@ def __call__(self, ptr, size):
121
121
return unboxed [0 ]
122
122
123
123
124
+ def _warn_mono_version (ver_str : str ):
125
+ ver = re .match (r"^(?P<major>\d+)\.(?P<minor>\d+)\.[\d.]+" , ver_str )
126
+ if ver is not None :
127
+ major = int (ver .group ("major" ))
128
+ minor = int (ver .group ("minor" ))
129
+
130
+ if major < 6 or (major == 6 and minor < 12 ):
131
+ import warnings
132
+
133
+ warnings .warn (
134
+ "Hosting Mono versions before v6.12 is known to be problematic. "
135
+ "If the process crashes shortly after you see this message, try "
136
+ "updating Mono to at least v6.12."
137
+ )
138
+
139
+
124
140
def initialize (
125
141
libmono : Optional [Path ],
126
142
debug : bool = False ,
127
143
jit_options : Optional [Sequence [str ]] = None ,
128
144
config_file : Optional [str ] = None ,
145
+ disable_warning : Optional [bool ] = False ,
129
146
global_config_file : Optional [str ] = None ,
130
147
assembly_dir : Optional [str ] = None ,
131
148
config_dir : Optional [str ] = None ,
@@ -168,20 +185,8 @@ def initialize(
168
185
build = _MONO .mono_get_runtime_build_info ()
169
186
_check_result (build , "Failed to get Mono version" )
170
187
ver_str = ffi .string (build ).decode ("utf8" ) # e.g. '6.12.0.122 (tarball)'
171
-
172
- ver = re .match (r"^(?P<major>\d+)\.(?P<minor>\d+)\.[\d.]+" , ver_str )
173
- if ver is not None :
174
- major = int (ver .group ("major" ))
175
- minor = int (ver .group ("minor" ))
176
-
177
- if major < 6 or (major == 6 and minor < 12 ):
178
- import warnings
179
-
180
- warnings .warn (
181
- "Hosting Mono versions before v6.12 is known to be problematic. "
182
- "If the process crashes shortly after you see this message, try "
183
- "updating Mono to at least v6.12."
184
- )
188
+ if not disable_warning :
189
+ _warn_mono_version (ver_str )
185
190
186
191
atexit .register (_release )
187
192
return ver_str
0 commit comments