[{"data":1,"prerenderedAt":1047},["ShallowReactive",2],{"doc:\u002Fguides\u002Fquickstart":3,"nav:guides":1001},{"doc":4,"source":1000},{"id":5,"title":6,"body":7,"description":993,"extension":994,"meta":995,"navigation":155,"path":996,"seo":997,"stem":998,"__hash__":999},"guides\u002Fguides\u002Fquickstart.md","Quick start",{"type":8,"value":9,"toc":987},"minimark",[10,14,24,29,98,102,877,881,946,950,983],[11,12,6],"h1",{"id":13},"quick-start",[15,16,17,18,23],"p",{},"This page evaluates a Pkl file and reads it into a Zig struct. It assumes the package is installed as described in ",[19,20,22],"a",{"href":21},"installation","Installation",".",[25,26,28],"h2",{"id":27},"a-pkl-file","A Pkl file",[30,31,36],"pre",{"className":32,"code":33,"language":34,"meta":35,"style":35},"language-pkl shiki shiki-themes github-light github-dark","\u002F\u002F config.pkl\nname = \"inventory\"\nport = 8080\ntags = new Listing { \"api\"; \"internal\" }\n","pkl","",[37,38,39,48,59,69],"code",{"__ignoreMap":35},[40,41,44],"span",{"class":42,"line":43},"line",1,[40,45,47],{"class":46},"sJ8bj","\u002F\u002F config.pkl\n",[40,49,51,55],{"class":42,"line":50},2,[40,52,54],{"class":53},"sVt8B","name = ",[40,56,58],{"class":57},"sZZnC","\"inventory\"\n",[40,60,62,65],{"class":42,"line":61},3,[40,63,64],{"class":53},"port = ",[40,66,68],{"class":67},"sj4cs","8080\n",[40,70,72,75,79,83,86,89,92,95],{"class":42,"line":71},4,[40,73,74],{"class":53},"tags = ",[40,76,78],{"class":77},"szBVR","new",[40,80,82],{"class":81},"sScJk"," Listing ",[40,84,85],{"class":53},"{ ",[40,87,88],{"class":57},"\"api\"",[40,90,91],{"class":53},"; ",[40,93,94],{"class":57},"\"internal\"",[40,96,97],{"class":53}," }\n",[25,99,101],{"id":100},"read-it-from-zig","Read it from Zig",[30,103,107],{"className":104,"code":105,"language":106,"meta":35,"style":35},"language-zig shiki shiki-themes github-light github-dark","const std = @import(\"std\");\nconst zig_pkl = @import(\"zig_pkl\");\n\nconst Config = struct {\n    name: []const u8,\n    port: u16,\n    tags: []const []const u8,\n};\n\npub fn main(init: std.process.Init) !void {\n    const allocator = init.gpa;\n    const io = init.io;\n\n    \u002F\u002F One manager owns one `pkl server` process.\n    const manager = try zig_pkl.Manager.init(allocator, io, &.{ \"pkl\", \"server\" }, zig_pkl.Logger.noop);\n    defer manager.deinit();\n\n    \u002F\u002F An evaluator holds the settings modules are evaluated with.\n    var rejected: ?[]u8 = null;\n    defer if (rejected) |text| allocator.free(text);\n    const evaluator = try manager.createEvaluator(zig_pkl.Options.preconfigured(), &rejected);\n    defer evaluator.close();\n\n    const module_uri = try zig_pkl.uri.fromFile(allocator, io, \"config.pkl\");\n    defer allocator.free(module_uri);\n\n    var failure: ?[]u8 = null;\n    defer if (failure) |text| allocator.free(text);\n    const config = evaluator.evaluateInto(Config, allocator, .uri(module_uri), null, &failure) catch |err| {\n        if (failure) |text| std.debug.print(\"{s}\\n\", .{text});\n        return err;\n    };\n    defer zig_pkl.convert.freeInto(Config, allocator, config);\n\n    std.debug.print(\"{s} listens on {d}\\n\", .{ config.name, config.port });\n}\n","zig",[37,108,109,133,151,157,172,189,203,222,228,233,273,295,314,319,325,393,409,414,420,447,484,526,540,545,584,602,607,629,661,723,772,783,789,821,826,871],{"__ignoreMap":35},[40,110,111,114,118,121,124,127,130],{"class":42,"line":43},[40,112,113],{"class":77},"const",[40,115,117],{"class":116},"s4XuR"," std",[40,119,120],{"class":77}," =",[40,122,123],{"class":67}," @import",[40,125,126],{"class":53},"(",[40,128,129],{"class":57},"\"std\"",[40,131,132],{"class":53},");\n",[40,134,135,137,140,142,144,146,149],{"class":42,"line":50},[40,136,113],{"class":77},[40,138,139],{"class":116}," zig_pkl",[40,141,120],{"class":77},[40,143,123],{"class":67},[40,145,126],{"class":53},[40,147,148],{"class":57},"\"zig_pkl\"",[40,150,132],{"class":53},[40,152,153],{"class":42,"line":61},[40,154,156],{"emptyLinePlaceholder":155},true,"\n",[40,158,159,161,164,166,169],{"class":42,"line":71},[40,160,113],{"class":77},[40,162,163],{"class":116}," Config",[40,165,120],{"class":77},[40,167,168],{"class":77}," struct",[40,170,171],{"class":53}," {\n",[40,173,175,178,181,183,186],{"class":42,"line":174},5,[40,176,177],{"class":116},"    name",[40,179,180],{"class":53},": []",[40,182,113],{"class":77},[40,184,185],{"class":77}," u8",[40,187,188],{"class":53},",\n",[40,190,192,195,198,201],{"class":42,"line":191},6,[40,193,194],{"class":116},"    port",[40,196,197],{"class":53},": ",[40,199,200],{"class":77},"u16",[40,202,188],{"class":53},[40,204,206,209,211,213,216,218,220],{"class":42,"line":205},7,[40,207,208],{"class":116},"    tags",[40,210,180],{"class":53},[40,212,113],{"class":77},[40,214,215],{"class":53}," []",[40,217,113],{"class":77},[40,219,185],{"class":77},[40,221,188],{"class":53},[40,223,225],{"class":42,"line":224},8,[40,226,227],{"class":53},"};\n",[40,229,231],{"class":42,"line":230},9,[40,232,156],{"emptyLinePlaceholder":155},[40,234,236,239,242,245,247,250,252,255,257,260,262,265,268,271],{"class":42,"line":235},10,[40,237,238],{"class":77},"pub",[40,240,241],{"class":77}," fn",[40,243,244],{"class":81}," main",[40,246,126],{"class":53},[40,248,249],{"class":116},"init",[40,251,197],{"class":53},[40,253,254],{"class":116},"std",[40,256,23],{"class":53},[40,258,259],{"class":116},"process",[40,261,23],{"class":53},[40,263,264],{"class":116},"Init",[40,266,267],{"class":53},") ",[40,269,270],{"class":77},"!void",[40,272,171],{"class":53},[40,274,276,279,282,284,287,289,292],{"class":42,"line":275},11,[40,277,278],{"class":77},"    const",[40,280,281],{"class":116}," allocator",[40,283,120],{"class":77},[40,285,286],{"class":116}," init",[40,288,23],{"class":53},[40,290,291],{"class":116},"gpa",[40,293,294],{"class":53},";\n",[40,296,298,300,303,305,307,309,312],{"class":42,"line":297},12,[40,299,278],{"class":77},[40,301,302],{"class":116}," io",[40,304,120],{"class":77},[40,306,286],{"class":116},[40,308,23],{"class":53},[40,310,311],{"class":116},"io",[40,313,294],{"class":53},[40,315,317],{"class":42,"line":316},13,[40,318,156],{"emptyLinePlaceholder":155},[40,320,322],{"class":42,"line":321},14,[40,323,324],{"class":46},"    \u002F\u002F One manager owns one `pkl server` process.\n",[40,326,328,330,333,335,338,340,342,345,347,349,351,354,357,359,361,364,367,370,372,375,378,381,383,386,388,391],{"class":42,"line":327},15,[40,329,278],{"class":77},[40,331,332],{"class":116}," manager",[40,334,120],{"class":77},[40,336,337],{"class":77}," try",[40,339,139],{"class":116},[40,341,23],{"class":53},[40,343,344],{"class":116},"Manager",[40,346,23],{"class":53},[40,348,249],{"class":81},[40,350,126],{"class":53},[40,352,353],{"class":116},"allocator",[40,355,356],{"class":53},", ",[40,358,311],{"class":116},[40,360,356],{"class":53},[40,362,363],{"class":77},"&",[40,365,366],{"class":53},".{ ",[40,368,369],{"class":57},"\"pkl\"",[40,371,356],{"class":53},[40,373,374],{"class":57},"\"server\"",[40,376,377],{"class":53}," }, ",[40,379,380],{"class":116},"zig_pkl",[40,382,23],{"class":53},[40,384,385],{"class":116},"Logger",[40,387,23],{"class":53},[40,389,390],{"class":116},"noop",[40,392,132],{"class":53},[40,394,396,399,401,403,406],{"class":42,"line":395},16,[40,397,398],{"class":77},"    defer",[40,400,332],{"class":116},[40,402,23],{"class":53},[40,404,405],{"class":81},"deinit",[40,407,408],{"class":53},"();\n",[40,410,412],{"class":42,"line":411},17,[40,413,156],{"emptyLinePlaceholder":155},[40,415,417],{"class":42,"line":416},18,[40,418,419],{"class":46},"    \u002F\u002F An evaluator holds the settings modules are evaluated with.\n",[40,421,423,426,429,431,434,437,440,442,445],{"class":42,"line":422},19,[40,424,425],{"class":77},"    var",[40,427,428],{"class":116}," rejected",[40,430,197],{"class":53},[40,432,433],{"class":77},"?",[40,435,436],{"class":53},"[]",[40,438,439],{"class":77},"u8",[40,441,120],{"class":77},[40,443,444],{"class":77}," null",[40,446,294],{"class":53},[40,448,450,452,455,458,461,463,466,469,471,473,475,478,480,482],{"class":42,"line":449},20,[40,451,398],{"class":77},[40,453,454],{"class":77}," if",[40,456,457],{"class":53}," (",[40,459,460],{"class":116},"rejected",[40,462,267],{"class":53},[40,464,465],{"class":77},"|",[40,467,468],{"class":116},"text",[40,470,465],{"class":77},[40,472,281],{"class":116},[40,474,23],{"class":53},[40,476,477],{"class":81},"free",[40,479,126],{"class":53},[40,481,468],{"class":116},[40,483,132],{"class":53},[40,485,487,489,492,494,496,498,500,503,505,507,509,512,514,517,520,522,524],{"class":42,"line":486},21,[40,488,278],{"class":77},[40,490,491],{"class":116}," evaluator",[40,493,120],{"class":77},[40,495,337],{"class":77},[40,497,332],{"class":116},[40,499,23],{"class":53},[40,501,502],{"class":81},"createEvaluator",[40,504,126],{"class":53},[40,506,380],{"class":116},[40,508,23],{"class":53},[40,510,511],{"class":116},"Options",[40,513,23],{"class":53},[40,515,516],{"class":81},"preconfigured",[40,518,519],{"class":53},"(), ",[40,521,363],{"class":77},[40,523,460],{"class":116},[40,525,132],{"class":53},[40,527,529,531,533,535,538],{"class":42,"line":528},22,[40,530,398],{"class":77},[40,532,491],{"class":116},[40,534,23],{"class":53},[40,536,537],{"class":81},"close",[40,539,408],{"class":53},[40,541,543],{"class":42,"line":542},23,[40,544,156],{"emptyLinePlaceholder":155},[40,546,548,550,553,555,557,559,561,564,566,569,571,573,575,577,579,582],{"class":42,"line":547},24,[40,549,278],{"class":77},[40,551,552],{"class":116}," module_uri",[40,554,120],{"class":77},[40,556,337],{"class":77},[40,558,139],{"class":116},[40,560,23],{"class":53},[40,562,563],{"class":116},"uri",[40,565,23],{"class":53},[40,567,568],{"class":81},"fromFile",[40,570,126],{"class":53},[40,572,353],{"class":116},[40,574,356],{"class":53},[40,576,311],{"class":116},[40,578,356],{"class":53},[40,580,581],{"class":57},"\"config.pkl\"",[40,583,132],{"class":53},[40,585,587,589,591,593,595,597,600],{"class":42,"line":586},25,[40,588,398],{"class":77},[40,590,281],{"class":116},[40,592,23],{"class":53},[40,594,477],{"class":81},[40,596,126],{"class":53},[40,598,599],{"class":116},"module_uri",[40,601,132],{"class":53},[40,603,605],{"class":42,"line":604},26,[40,606,156],{"emptyLinePlaceholder":155},[40,608,610,612,615,617,619,621,623,625,627],{"class":42,"line":609},27,[40,611,425],{"class":77},[40,613,614],{"class":116}," failure",[40,616,197],{"class":53},[40,618,433],{"class":77},[40,620,436],{"class":53},[40,622,439],{"class":77},[40,624,120],{"class":77},[40,626,444],{"class":77},[40,628,294],{"class":53},[40,630,632,634,636,638,641,643,645,647,649,651,653,655,657,659],{"class":42,"line":631},28,[40,633,398],{"class":77},[40,635,454],{"class":77},[40,637,457],{"class":53},[40,639,640],{"class":116},"failure",[40,642,267],{"class":53},[40,644,465],{"class":77},[40,646,468],{"class":116},[40,648,465],{"class":77},[40,650,281],{"class":116},[40,652,23],{"class":53},[40,654,477],{"class":81},[40,656,126],{"class":53},[40,658,468],{"class":116},[40,660,132],{"class":53},[40,662,664,666,669,671,673,675,678,680,683,685,687,690,692,694,696,699,702,704,706,708,710,713,716,719,721],{"class":42,"line":663},29,[40,665,278],{"class":77},[40,667,668],{"class":116}," config",[40,670,120],{"class":77},[40,672,491],{"class":116},[40,674,23],{"class":53},[40,676,677],{"class":81},"evaluateInto",[40,679,126],{"class":53},[40,681,682],{"class":116},"Config",[40,684,356],{"class":53},[40,686,353],{"class":116},[40,688,689],{"class":53},", .",[40,691,563],{"class":81},[40,693,126],{"class":53},[40,695,599],{"class":116},[40,697,698],{"class":53},"), ",[40,700,701],{"class":77},"null",[40,703,356],{"class":53},[40,705,363],{"class":77},[40,707,640],{"class":116},[40,709,267],{"class":53},[40,711,712],{"class":77},"catch",[40,714,715],{"class":77}," |",[40,717,718],{"class":116},"err",[40,720,465],{"class":77},[40,722,171],{"class":53},[40,724,726,729,731,733,735,737,739,741,743,745,748,750,753,755,758,761,764,767,769],{"class":42,"line":725},30,[40,727,728],{"class":77},"        if",[40,730,457],{"class":53},[40,732,640],{"class":116},[40,734,267],{"class":53},[40,736,465],{"class":77},[40,738,468],{"class":116},[40,740,465],{"class":77},[40,742,117],{"class":116},[40,744,23],{"class":53},[40,746,747],{"class":116},"debug",[40,749,23],{"class":53},[40,751,752],{"class":81},"print",[40,754,126],{"class":53},[40,756,757],{"class":57},"\"{s}",[40,759,760],{"class":67},"\\n",[40,762,763],{"class":57},"\"",[40,765,766],{"class":53},", .{",[40,768,468],{"class":116},[40,770,771],{"class":53},"});\n",[40,773,775,778,781],{"class":42,"line":774},31,[40,776,777],{"class":77},"        return",[40,779,780],{"class":116}," err",[40,782,294],{"class":53},[40,784,786],{"class":42,"line":785},32,[40,787,788],{"class":53},"    };\n",[40,790,792,794,796,798,801,803,806,808,810,812,814,816,819],{"class":42,"line":791},33,[40,793,398],{"class":77},[40,795,139],{"class":116},[40,797,23],{"class":53},[40,799,800],{"class":116},"convert",[40,802,23],{"class":53},[40,804,805],{"class":81},"freeInto",[40,807,126],{"class":53},[40,809,682],{"class":116},[40,811,356],{"class":53},[40,813,353],{"class":116},[40,815,356],{"class":53},[40,817,818],{"class":116},"config",[40,820,132],{"class":53},[40,822,824],{"class":42,"line":823},34,[40,825,156],{"emptyLinePlaceholder":155},[40,827,829,832,834,836,838,840,842,845,847,849,852,854,856,859,861,863,865,868],{"class":42,"line":828},35,[40,830,831],{"class":116},"    std",[40,833,23],{"class":53},[40,835,747],{"class":116},[40,837,23],{"class":53},[40,839,752],{"class":81},[40,841,126],{"class":53},[40,843,844],{"class":57},"\"{s} listens on {d}",[40,846,760],{"class":67},[40,848,763],{"class":57},[40,850,851],{"class":53},", .{ ",[40,853,818],{"class":116},[40,855,23],{"class":53},[40,857,858],{"class":116},"name",[40,860,356],{"class":53},[40,862,818],{"class":116},[40,864,23],{"class":53},[40,866,867],{"class":116},"port",[40,869,870],{"class":53}," });\n",[40,872,874],{"class":42,"line":873},36,[40,875,876],{"class":53},"}\n",[25,878,880],{"id":879},"what-happened","What happened",[882,883,884,895,912,922,937],"ul",{},[885,886,887,890,891,894],"li",{},[37,888,889],{},"Manager.init"," started ",[37,892,893],{},"pkl server",". Keep one manager for the life of the program; starting the server is the slowest step.",[885,896,897,899,900,903,904,907,908,23],{},[37,898,502],{}," sent the evaluator settings. ",[37,901,902],{},"Options.preconfigured()"," allows local files, module paths, and packages. For untrusted input use ",[37,905,906],{},"Options.restricted()","; see ",[19,909,911],{"href":910},"security","Security",[885,913,914,917,918,921],{},[37,915,916],{},"uri.fromFile"," turned a path into the canonical ",[37,919,920],{},"file:"," URI that Pkl expects.",[885,923,924,926,927,929,930,933,934,936],{},[37,925,677],{}," evaluated the module and copied the result into ",[37,928,682],{},". When Pkl reports an error, the call returns ",[37,931,932],{},"error.EvaluationFailed"," and ",[37,935,640],{}," holds Pkl's message.",[885,938,939,942,943,945],{},[37,940,941],{},"convert.freeInto"," released everything ",[37,944,677],{}," allocated.",[25,947,949],{"id":948},"next-steps","Next steps",[882,951,952,959,966,976],{},[885,953,954,958],{},[19,955,957],{"href":956},"evaluation","Evaluation",": typed and dynamic values, expressions, and module output.",[885,960,961,965],{},[19,962,964],{"href":963},"..\u002Fcodegen","Code generation",": generate the Zig types from the Pkl module instead of writing them.",[885,967,968,197,972,975],{},[19,969,971],{"href":970},"projects","Projects",[37,973,974],{},"PklProject"," settings and dependencies.",[885,977,978,982],{},[19,979,981],{"href":980},"..\u002F..\u002Fexamples","Examples",": ten runnable programs.",[984,985,986],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":35,"searchDepth":50,"depth":50,"links":988},[989,990,991,992],{"id":27,"depth":50,"text":28},{"id":100,"depth":50,"text":101},{"id":879,"depth":50,"text":880},{"id":948,"depth":50,"text":949},"This page evaluates a Pkl file and reads it into a Zig struct. It assumes the package is installed as described in Installation.","md",{},"\u002Fguides\u002Fquickstart",{"title":6,"description":993},"guides\u002Fquickstart","w2gh45c4BUK2v3hWBTFNgQrZdWl9bApdk1PBz-Fs-K0","docs\u002Fguides\u002Fquickstart.md",[1002,1006,1010,1014,1017,1021,1024,1028,1032,1036,1039,1040,1044],{"title":1003,"path":1004,"stem":1005},"Version compatibility","\u002Fguides\u002Fcompatibility","guides\u002Fcompatibility",{"title":1007,"path":1008,"stem":1009},"Concurrency","\u002Fguides\u002Fconcurrency","guides\u002Fconcurrency",{"title":1011,"path":1012,"stem":1013},"Errors","\u002Fguides\u002Ferrors","guides\u002Ferrors",{"title":957,"path":1015,"stem":1016},"\u002Fguides\u002Fevaluation","guides\u002Fevaluation",{"title":1018,"path":1019,"stem":1020},"External readers","\u002Fguides\u002Fexternal-readers","guides\u002Fexternal-readers",{"title":22,"path":1022,"stem":1023},"\u002Fguides\u002Finstallation","guides\u002Finstallation",{"title":1025,"path":1026,"stem":1027},"Logging","\u002Fguides\u002Flogging","guides\u002Flogging",{"title":1029,"path":1030,"stem":1031},"Migrating from pkl-zig","\u002Fguides\u002Fmigration","guides\u002Fmigration",{"title":1033,"path":1034,"stem":1035},"Ownership","\u002Fguides\u002Fownership","guides\u002Fownership",{"title":971,"path":1037,"stem":1038},"\u002Fguides\u002Fprojects","guides\u002Fprojects",{"title":6,"path":996,"stem":998},{"title":1041,"path":1042,"stem":1043},"Readers","\u002Fguides\u002Freaders","guides\u002Freaders",{"title":911,"path":1045,"stem":1046},"\u002Fguides\u002Fsecurity","guides\u002Fsecurity",1792908673086]