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" author = "Emery Hemingway"
description = "Syndicated Nix Actor" description = "Syndicated Nix Actor"
license = "Unlicense" license = "Unlicense"

View File

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

View File

@ -143,23 +143,21 @@ type
DaemonSideArgs {.preservesDictionary.} = object DaemonSideArgs {.preservesDictionary.} = object
`daemon-socket`: string `daemon-socket`: string
main.initNix() proc runNixActor(nixState: EvalState) =
libexpr.initGC() let erisStore = newMemoryStore()
runActor("nix_actor") do (root: Cap; turn: var Turn):
runActor("main") do (root: Cap; turn: var Turn):
let
erisStore = newMemoryStore()
nixStore = openStore()
nixState = newEvalState(nixStore)
connectStdio(root, turn) connectStdio(root, turn)
during(turn, root, ?CapArgs) do (ds: Cap): let pat = ?CapArgs
during(turn, root, pat) do (ds: Cap):
discard publish(turn, ds, discard publish(turn, ds,
initRecord("nixVersion", toPreserve($nixVersion.c_str))) 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): let pat = ?Observe(pattern: !Eval) ?? {0: grabLit(), 1: grabDict()}
during(turn, ds, pat) do (e: string, o: Assertion):
var ass = Eval(expr: e) var ass = Eval(expr: e)
doAssert fromPreserve(ass.options, unpackLiterals(o)) doAssert fromPreserve(ass.options, unpackLiterals(o))
# unused options # unused options
@ -176,3 +174,11 @@ runActor("main") do (root: Cap; turn: var Turn):
during(turn, root, ?DaemonSideArgs) do (socketPath: string): during(turn, root, ?DaemonSideArgs) do (socketPath: string):
bootDaemonSide(turn, ds, erisStore, socketPath) 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 ExprObj {.importcpp: "nix::Expr", header: "nixexpr.hh".} = object
discard discard
Expr* = ptr ExprObj 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 discard
proc newEvalState*(store: Store): EvalState {. 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 {. proc parseExprFromString*(state: EvalState; s, basePath: cstring): Expr {.
importcpp: "#->parseExprFromString(@)".} importcpp: "#->parseExprFromString(@)".}

View File

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