@@ -200,12 +200,20 @@ impl VirtualMachine {
200
200
201
201
vm. builtins . init_dict (
202
202
vm. ctx . intern_str ( "builtins" ) ,
203
- Some ( vm. ctx . intern_str ( stdlib:: builtins:: DOC . unwrap ( ) ) . to_owned ( ) ) ,
203
+ Some (
204
+ vm. ctx
205
+ . intern_static_str ( stdlib:: builtins:: DOC . unwrap ( ) )
206
+ . to_owned ( ) ,
207
+ ) ,
204
208
& vm,
205
209
) ;
206
210
vm. sys_module . init_dict (
207
211
vm. ctx . intern_str ( "sys" ) ,
208
- Some ( vm. ctx . intern_str ( stdlib:: sys:: DOC . unwrap ( ) ) . to_owned ( ) ) ,
212
+ Some (
213
+ vm. ctx
214
+ . intern_static_str ( stdlib:: sys:: DOC . unwrap ( ) )
215
+ . to_owned ( ) ,
216
+ ) ,
209
217
& vm,
210
218
) ;
211
219
// let name = vm.sys_module.get_attr("__name__", &vm).unwrap();
@@ -274,14 +282,14 @@ impl VirtualMachine {
274
282
// builtins.open to io.OpenWrapper, but this is easier, since it doesn't
275
283
// require the Python stdlib to be present
276
284
let io = import:: import_builtin ( self , "_io" ) ?;
277
- let set_stdio = |name, fd, mode : & str | {
285
+ let set_stdio = |name, dunder_name , fd, mode : & str | {
278
286
let stdio = crate :: stdlib:: io:: open (
279
287
self . ctx . new_int ( fd) . into ( ) ,
280
288
Some ( mode) ,
281
289
Default :: default ( ) ,
282
290
self ,
283
291
) ?;
284
- let dunder_name = self . ctx . intern_str ( format ! ( "__{name}__" ) ) ;
292
+ let dunder_name = self . ctx . intern_static_str ( dunder_name ) ;
285
293
self . sys_module . set_attr (
286
294
dunder_name, // e.g. __stdin__
287
295
stdio. clone ( ) ,
@@ -290,9 +298,9 @@ impl VirtualMachine {
290
298
self . sys_module . set_attr ( name, stdio, self ) ?;
291
299
Ok ( ( ) )
292
300
} ;
293
- set_stdio ( "stdin" , 0 , "r" ) ?;
294
- set_stdio ( "stdout" , 1 , "w" ) ?;
295
- set_stdio ( "stderr" , 2 , "w" ) ?;
301
+ set_stdio ( "stdin" , "__stdin__" , 0 , "r" ) ?;
302
+ set_stdio ( "stdout" , "__stdout__" , 1 , "w" ) ?;
303
+ set_stdio ( "stderr" , "__stderr__" , 2 , "w" ) ?;
296
304
297
305
let io_open = io. get_attr ( "open" , self ) ?;
298
306
self . builtins . set_attr ( "open" , io_open, self ) ?;
0 commit comments