mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-09-07 08:02:40 +00:00
* feat: add QuickJS as alternative JS engine for flow expression evaluation Add rquickjs as an optional alternative to deno_core for evaluating JavaScript expressions in flow transformations. QuickJS offers ~8-16x faster startup times for simple expressions, making it ideal for evaluating many small expressions in flows. Key changes: - Add new `quickjs` feature flag for windmill-worker - Implement js_eval_quickjs.rs with true async Rust callbacks for variable(), resource(), and results.xxx access (no pre-fetching) - Share expression transformation logic (replace_with_await, replace_with_await_result) between both implementations - Add USE_QUICKJS_FOR_FLOW_EVAL env var to switch engines at runtime - When only quickjs feature is enabled (no deno_core), QuickJS is automatically used - Add comprehensive parity tests comparing QuickJS and deno_core output Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * all * quickjs * quickjs * all * all * all --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
106 lines
2.5 KiB
Rust
106 lines
2.5 KiB
Rust
#[cfg(all(feature = "enterprise", feature = "bigquery"))]
|
|
mod bigquery_executor;
|
|
#[cfg(all(feature = "enterprise", feature = "mssql"))]
|
|
mod mssql_executor;
|
|
#[cfg(feature = "enterprise")]
|
|
mod snowflake_executor;
|
|
|
|
mod agent_workers;
|
|
#[cfg(feature = "python")]
|
|
mod ansible_executor;
|
|
mod bash_executor;
|
|
mod pwsh_executor;
|
|
|
|
#[cfg(feature = "java")]
|
|
mod java_executor;
|
|
|
|
#[cfg(feature = "ruby")]
|
|
mod ruby_executor;
|
|
|
|
mod ai;
|
|
mod ai_executor;
|
|
mod bun_executor;
|
|
pub mod common;
|
|
mod config;
|
|
mod csharp_executor;
|
|
|
|
#[cfg(feature = "private")]
|
|
mod dedicated_worker_ee;
|
|
mod dedicated_worker_oss;
|
|
mod deno_executor;
|
|
#[cfg(feature = "duckdb")]
|
|
mod duckdb_executor;
|
|
mod global_cache;
|
|
mod go_executor;
|
|
mod graphql_executor;
|
|
mod handle_child;
|
|
#[cfg(all(feature = "private", feature = "enterprise"))]
|
|
mod otel_tracing_proxy_ee;
|
|
mod otel_tracing_proxy_oss;
|
|
pub mod job_logger;
|
|
#[cfg(feature = "private")]
|
|
pub mod job_logger_ee;
|
|
mod job_logger_oss;
|
|
mod js_eval;
|
|
#[cfg(feature = "quickjs")]
|
|
pub mod js_eval_quickjs;
|
|
#[cfg(test)]
|
|
mod js_eval_parity_tests;
|
|
pub mod memory_common;
|
|
#[cfg(feature = "private")]
|
|
pub mod memory_ee;
|
|
pub mod memory_oss;
|
|
#[cfg(feature = "mysql")]
|
|
mod mysql_executor;
|
|
#[cfg(feature = "nu")]
|
|
mod nu_executor;
|
|
#[cfg(feature = "oracledb")]
|
|
mod oracledb_executor;
|
|
#[cfg(feature = "private")]
|
|
pub mod otel_ee;
|
|
mod otel_oss;
|
|
mod pg_executor;
|
|
#[cfg(feature = "php")]
|
|
mod php_executor;
|
|
#[cfg(feature = "python")]
|
|
mod python_executor;
|
|
#[cfg(feature = "python")]
|
|
mod python_versions;
|
|
pub mod result_processor;
|
|
#[cfg(feature = "rust")]
|
|
mod rust_executor;
|
|
mod sanitized_sql_params;
|
|
mod schema;
|
|
pub mod scoped_dependency_map;
|
|
pub mod sql_utils;
|
|
mod universal_pkg_installer;
|
|
mod prepare_deps;
|
|
mod worker;
|
|
mod worker_flow;
|
|
mod worker_lockfiles;
|
|
mod worker_utils;
|
|
pub mod workspace_dependencies;
|
|
|
|
pub use worker::*;
|
|
pub use worker_lockfiles::{
|
|
process_relative_imports, trigger_dependents_to_recompute_dependencies,
|
|
};
|
|
#[cfg(all(feature = "private", feature = "enterprise"))]
|
|
pub use otel_tracing_proxy_ee::{
|
|
set_current_job_context, start_jobs_otel_tracing, TRACING_PROXY_PORT,
|
|
};
|
|
#[cfg(all(feature = "private", feature = "enterprise", feature = "deno_core"))]
|
|
pub use otel_tracing_proxy_ee::{load_internal_otel_exporter, DENO_OTEL_INITIALIZED, OTLP_COLLECTOR_PORT};
|
|
|
|
pub use result_processor::handle_job_error;
|
|
|
|
pub use bun_executor::{
|
|
compute_bundle_local_and_remote_path, get_common_bun_proc_envs, install_bun_lockfile,
|
|
prebundle_bun_script, prepare_job_dir,
|
|
};
|
|
pub use deno_executor::generate_deno_lock;
|
|
pub use prepare_deps::run_prepare_deps_cli;
|
|
|
|
#[cfg(feature = "python")]
|
|
pub use python_versions::PyV;
|