mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-15 07:43:26 +00:00
Improve nimeval, changes some defaults (#14351)
* Improve nimeval, changes some defaults This improves nimeval to make it easier to use NimScript as an embedded scripting languages. It does change some of the defaults, so in case anything used the old version and depended on the old behaviour these would have to be changed. * Remove dependency on nimhcr for nimscript
This commit is contained in:
@@ -99,14 +99,16 @@ proc findNimStdLibCompileTime*(): string =
|
||||
|
||||
proc createInterpreter*(scriptName: string;
|
||||
searchPaths: openArray[string];
|
||||
flags: TSandboxFlags = {}): Interpreter =
|
||||
flags: TSandboxFlags = {},
|
||||
defines = @[("nimscript", "true")],
|
||||
registerOps = true): Interpreter =
|
||||
var conf = newConfigRef()
|
||||
var cache = newIdentCache()
|
||||
var graph = newModuleGraph(cache, conf)
|
||||
connectCallbacks(graph)
|
||||
initDefines(conf.symbols)
|
||||
defineSymbol(conf.symbols, "nimscript")
|
||||
defineSymbol(conf.symbols, "nimconfig")
|
||||
for define in defines:
|
||||
defineSymbol(conf.symbols, define[0], define[1])
|
||||
registerPass(graph, semPass)
|
||||
registerPass(graph, evalPass)
|
||||
|
||||
@@ -119,6 +121,8 @@ proc createInterpreter*(scriptName: string;
|
||||
var vm = newCtx(m, cache, graph)
|
||||
vm.mode = emRepl
|
||||
vm.features = flags
|
||||
if registerOps:
|
||||
vm.registerAdditionalOps() # Required to register parts of stdlib modules
|
||||
graph.vm = vm
|
||||
graph.compileSystemModule()
|
||||
result = Interpreter(mainModule: m, graph: graph, scriptName: scriptName)
|
||||
|
||||
@@ -3026,5 +3026,5 @@ export widestrs
|
||||
import system/io
|
||||
export io
|
||||
|
||||
when not defined(createNimHcr):
|
||||
when not defined(createNimHcr) and not defined(nimscript):
|
||||
include nimhcr
|
||||
|
||||
Reference in New Issue
Block a user