Update to Nim-2.0.0

This commit is contained in:
Emery Hemingway 2023-08-24 16:16:04 +01:00
parent 8e06628d21
commit 6b6187f508
5 changed files with 40 additions and 34 deletions

View File

@ -1,4 +1,4 @@
version = "20230730"
version = "20230824"
author = "Emery Hemingway"
description = "Syndicated Nix Actor"
license = "Unlicense"

View File

@ -1,4 +1,4 @@
let
flake = builtins.getFlake "syndicate";
flake = builtins.getFlake "/home/emery/src/syndicate-flake";
pkgs = import <nixpkgs> { overlays = [ flake.overlays.default ]; };
in pkgs.nix_actor
in pkgs.nim2Packages.nix_actor

View File

@ -143,36 +143,42 @@ type
DaemonSideArgs {.preservesDictionary.} = object
`daemon-socket`: string
main.initNix()
libexpr.initGC()
proc runNixActor(nixState: EvalState) =
let erisStore = newMemoryStore()
runActor("nix_actor") do (root: Cap; turn: var Turn):
connectStdio(root, turn)
runActor("main") do (root: Cap; turn: var Turn):
let
erisStore = newMemoryStore()
nixStore = openStore()
nixState = newEvalState(nixStore)
connectStdio(root, turn)
let pat = ?CapArgs
during(turn, root, pat) do (ds: Cap):
during(turn, root, ?CapArgs) do (ds: Cap):
discard publish(turn, ds,
initRecord("nixVersion", toPreserve($nixVersion.c_str)))
discard publish(turn, ds,
initRecord("nixVersion", toPreserve($nixVersion.c_str)))
discard bootNixFacet(turn, ds)
discard bootNixFacet(turn, ds)
during(turn, ds, ?Observe(pattern: !Eval) ?? {0: grabLit(), 1: grabDict()}) do (e: string, o: Assertion):
var ass = Eval(expr: e)
doAssert fromPreserve(ass.options, unpackLiterals(o))
# unused options
try:
ass.result = eval(nixState, ass.expr)
discard publish(turn, ds, ass)
except CatchableError as err:
stderr.writeLine "failed to evaluate ", ass.expr, ": ", err.msg
except StdException as err:
stderr.writeLine "failed to evaluate ", ass.expr, ": ", err.what
let pat = ?Observe(pattern: !Eval) ?? {0: grabLit(), 1: grabDict()}
during(turn, ds, pat) do (e: string, o: Assertion):
var ass = Eval(expr: e)
doAssert fromPreserve(ass.options, unpackLiterals(o))
# unused options
try:
ass.result = eval(nixState, ass.expr)
discard publish(turn, ds, ass)
except CatchableError as err:
stderr.writeLine "failed to evaluate ", ass.expr, ": ", err.msg
except StdException as err:
stderr.writeLine "failed to evaluate ", ass.expr, ": ", err.what
during(turn, root, ?ClientSideArgs) do (socketPath: string):
bootClientSide(turn, ds, erisStore, socketPath)
during(turn, root, ?ClientSideArgs) do (socketPath: string):
bootClientSide(turn, ds, erisStore, socketPath)
during(turn, root, ?DaemonSideArgs) do (socketPath: string):
bootDaemonSide(turn, ds, erisStore, socketPath)
during(turn, root, ?DaemonSideArgs) do (socketPath: string):
bootDaemonSide(turn, ds, erisStore, socketPath)
proc main =
initNix()
initGC()
let nixStore = openStore()
runNixActor(newEvalState(nixStore))
main()

View File

@ -83,11 +83,11 @@ type
ExprObj {.importcpp: "nix::Expr", header: "nixexpr.hh".} = object
discard
Expr* = ptr ExprObj
EvalState* {.importcpp: "nix::ref<nix::EvalState>", header: "eval.hh".} = object
EvalState* {.importcpp: "std::shared_ptr<nix::EvalState>", header: "eval.hh".} = object
discard
proc newEvalState*(store: Store): EvalState {.
importcpp: "nix::newEvalState(@)", header: "seepuspus.hh".}
importcpp: "nix::newEvalState(@)", header: "seepuspus.hh", constructor.}
proc parseExprFromString*(state: EvalState; s, basePath: cstring): Expr {.
importcpp: "#->parseExprFromString(@)".}

View File

@ -3,7 +3,7 @@
namespace nix {
ref<EvalState> newEvalState(ref<Store> store)
std::shared_ptr<nix::EvalState> newEvalState(ref<Store> store)
{
auto searchPath = Strings();
auto evalState =
@ -15,7 +15,7 @@ namespace nix {
searchPath, store, store)
#endif
;
return ref<EvalState>(evalState);
return evalState;
}
}