21namespace neograph::program {
23struct JavaScriptCompileLimits {
24 std::size_t memory_limit_bytes = 32u * 1024u * 1024u;
29 std::size_t max_stack_bytes = 512u * 1024u;
30 std::uint64_t max_interrupt_polls = 1'000'000u;
31 std::uint64_t max_wall_time_ms = 60'000u;
32 std::size_t max_generated_document_bytes = 16u * 1024u * 1024u;
50struct ProgramCompilerConfig {
54 std::string compiler_build_id;
57 JavaScriptCompileLimits javascript;
63 std::string quickjs_release = std::string(ProgramSource::JAVASCRIPT_ENGINE_VERSION);
64 std::string quickjs_archive_digest =
65 std::string(ProgramSource::JAVASCRIPT_QUICKJS_ARCHIVE_DIGEST);
66 std::string quickjs_build_options =
67 std::string(ProgramSource::JAVASCRIPT_QUICKJS_BUILD_OPTIONS);
68 std::string javascript_profile = std::string(ProgramSource::JAVASCRIPT_PROFILE);
69 std::uint32_t javascript_profile_version = ProgramSource::JAVASCRIPT_PROFILE_VERSION;
70 std::uint32_t ng_api_version = ProgramSource::JAVASCRIPT_NG_API_VERSION;
76 bool require_acyclic =
false;
83 bool echo_routes =
false;
92 bool soundness_check =
false;
94 std::size_t soundness_state_cap = 100000;
103 const std::vector<Diagnostic>& diagnostics()
const noexcept;
106 std::vector<Diagnostic> diagnostics_;
109class NEOGRAPH_PROGRAM_API ProgramCompiler {
112 static constexpr std::uint32_t PROGRAM_SCHEMA_VERSION =
113 neograph::program::PROGRAM_SCHEMA_VERSION_V1;
115 ProgramCompiler(RegistrySnapshot registry, ProgramCompilerConfig config);
116 ProgramCompiler(ProgramCompiler&&) noexcept;
117 ProgramCompiler& operator=(ProgramCompiler&&) noexcept;
118 ProgramCompiler(const ProgramCompiler&) = delete;
119 ProgramCompiler& operator=(const ProgramCompiler&) = delete;
122 const std::
string& compiler_build_id() const noexcept;
123 const std::
string& registry_snapshot_fingerprint() const noexcept;
124 ProgramBundle compile(const ProgramSource& source) const;
130 ProgramBundle compile(const ProgramSource& source, const RunBudget& javascript_budget) const;
135 ProgramBundle compile(const ProgramSource& source,
142 ProgramBundle compile(const ProgramSource& source,
143 const RunBudget& javascript_budget,
144 const ContractRecord& input_contract,
145 const ContractRecord& output_contract) const;
147 ProgramBundle compile(const ProgramSource& source, const
ModuleResolution& resolution) const;
151 std::unique_ptr<Impl> impl_;
Immutable, content-addressed Program compilation artifacts.
Marks an exception type as a configuration or definition verdict.
Also a graph::ConfigurationFailure (#364): inside a Core node it is NG.ConfigError,...
Marker for exceptions that are configuration or definition verdicts (#364).
Immutable, owner-scoped Program modules and bounded child composition.
Immutable executable registry snapshots for Program admission.
Immutable outcome of one Program run attempt.
Published Program source-schema version identifiers.
Result of resolving one module and its complete pinned dependency closure.
Host-owned admissible runtime budget interval for a JavaScript Program.