Repository navigation
[Query] Config
Generated from 'wiki-query.ts' on 2026-11-08, 08:41:45 UTC (v2.17.4), do not edit directly.
Config Query [overview]
Returns the current configuration of flowR.
This query is requested with the type config.
Run in the REPL: :query @config [<path> | <glob>] | @config +<path>=<value> | @config +reset
This query provides access to the current configuration of the flowR instance. See the Interface wiki page for more information on what the configuration represents. Additionally, you can use this query to update the configuration of flowR on-the-fly (please do not rely on this mechanism it is mostly of interest for demonstrations).
[ { "type": "config", "update": { "ignoreSourceCalls": true } } ]Show Results
Results (prettified and summarized):
Query: config (0 ms)
╰ Updated configuration:
- ignoreSourceCalls=true
╰ Specialized for project kind unknown (overrides linter.disabledRules)
Show Detailed Results as Json
The analysis ran (including parsing and normalization and the query) within the generation environment.
The JSON contains the ids of the nodes in question (see the Interface wiki page).
{"config":{".meta":{},"config":{"logLevel":"fatal","ignoreSourceCalls":true,"ignoreLoadCalls":false,"semantics":{"environment":{"overwriteBuiltIns":{"loadDefaults":true,"definitions":[]}},"ambient":{"drawingWritesDevice":false}},"defaultPlugins":["file:description","versions:description","versions:sigdb","versions:library","versions:on-demand","versions:namespace","versions:renv","versions:rv","versions:uvr","versions:rig","versions:packrat","versions:session-info","loading-order:description","loading-order:implicit-sources","loading-order:rprofile","loading-order:included-files","meta:description","meta:rproject","meta:uvr","meta:rig","meta:rig-script","file-roles:vignette","file-roles:test","file-roles:inst","file:rmd","file:qmd","file:rnw","file:ipynb","file:namespace","file:news","file:rd-macros","file:rd","file:rd-index","file:rd-topics","file:rd-meta","file:datalist","file:sysdata","file:rda","file:license","file:virtualenv","file:rproject","file:uvr","file:rig","file:rprofile"],"repl":{"quickStats":false,"dfProcessorHeat":false,"hints":true,"plugins":["flowr:default"],"autoUseFileProtocol":true,"queryStats":true,"showPlugins":false},"project":{"resolveUnknownPathsOnDisk":true,"failOnInaccessiblePath":false,"assumeImplicitEcho":true},"linter":{"disabledRules":["software-has-license","software-has-tests"],"disabledTags":["cmd-check"]},"specializeConfig":{"package":{"project":{"assumeImplicitEcho":false},"solver":{"resolveSource":{"assumeFilesExist":true}},"linter":{"disabledRules":[],"disabledTags":[]}},"project":{"solver":{"resolveSource":{"assumeFilesExist":true}}},"shiny-app":{"project":{"implicitSources":["global.R","R/*.R","ui.R","server.R","app.R"]},"solver":{"resolveSource":{"assumeFilesExist":true}}},"script":{"inherit":"unknown"},"notebook":{"inherit":"unknown"},"unknown":{"linter":{"disabledRules":["software-has-license","software-has-tests"]}}},"engines":[],"defaultEngine":"tree-sitter","solver":{"variables":"alias","evalStrings":true,"trackEnvironments":true,"sigdb":{"enabled":true,"loadProjectDependencies":true,"eagerlyLoad":false,"eagerlyLoadExports":false,"blobCacheBudgetMb":16,"assumedRVersion":"auto","linkBaseR":false,"linkDescriptionDependencies":false,"linkBaseRCalls":false,"linkPackageCalls":false,"warmInBackground":false,"additionalPaths":[],"autoSync":false,"versionSelection":"newest","versionOverrides":{},"installedLibrary":{"enabled":false,"paths":[],"useEnvironment":true,"useProjectLibrary":true,"maxDepth":3,"packages":[]},"onDemand":{"enabled":false}},"versionManagement":{"linkedVersionGroups":[]},"resolveSource":{"dropPaths":"no","ignoreCapitalization":true,"inferWorkingDirectory":"active-script","searchPath":[],"repeatedSourceLimit":2,"assumeFilesExist":false},"transitiveSideEffectRounds":32,"maxOverlayDepth":4,"instrument":{},"slicer":{"threshold":50,"autoExtend":false}},"abstractInterpretation":{"wideningThreshold":4,"followCalls":true,"dataFrame":{"maxColNames":50,"readLoadedData":{"readExternalFiles":true,"maxReadLines":1000000}}},"incremental":{"alwaysIncremental":false,"parsing":{"activated":false,"heuristics":{"activated":true,"mtime":true,"linesFrom":500,"bytesFrom":50000,"alwaysWithEdits":false,"minFiles":1}}},"gas":{"thresholds":{"memory":{"problematic":0.7,"critical":0.9},"timeMs":{"problematic":100000,"critical":120000}},"features":{}}},"specialization":{"kind":"unknown","overwrite":{"linter":{"disabledRules":["software-has-license","software-has-tests"]}}}},".meta":{}}Please note that, in the REPL, a special syntax starting with + (which should be autocompleted) can be used to update the configuration on the fly:
$ docker run -it --rm eagleoutice/flowr # or npm run flowr
flowR repl v2.17.4, R v4.6.1 (r-shell engine)
R> :query @config +solver.slicer.threshold=10000Output
Query: config (0 ms)
╰ Updated configuration:
- solver.slicer.threshold=10000
╰ Specialized for project kind unknown (overrides linter.disabledRules)
Set the slicing threshold to 10,000.
In the REPL you can also read a single option by its .-separated path, or several at once with a glob—* covers
one path segment, ** any number. This only reads: setting a value still names exactly one key.
$ docker run -it --rm eagleoutice/flowr # or npm run flowr
flowR repl v2.17.4, R v4.6.1 (r-shell engine)
R> :query @config **.enabledOutput
Query: config (0 ms)
╰ Config:
- solver.sigdb.enabled (boolean): true
Resolve library()/use() exports from a signature database (default true); when false no database is consulted.
- solver.sigdb.installedLibrary.enabled (boolean): false
Recover packages no signature database knows from their installed copy (default false).
- solver.sigdb.onDemand.enabled (boolean): false
Fetch and recover the sources of packages no signature database knows when the analyzed code uses them (default false, accesses the network).
╰ Specialized for project kind unknown (overrides linter.disabledRules)
Read every enabled option, wherever it sits in the configuration.
R> :query @config solver.*Output
Query: config (0 ms)
╰ Config:
- solver.assumeAttachedPackages (array): undefined
Packages to treat as attached without a `library()` call, so what the built-in configuration states about them applies to the analyzed code. The base packages R attaches on startup already resolve without it.
- solver.evalStrings (boolean): true
Should we include eval(parse(text="...")) calls in the dataflow graph?
- solver.instrument (object)
- dataflowExtractors: undefined (any)
- solver.maxOverlayDepth (number): 4
How many binding overlays may stack on one environment frame before a write flattens them (default 4); a pure performance knob, trading lookup cost against copy cost without changing any result.
- solver.resolveSource (object)
If lax source calls are active, flowR searches for sourced files much more freely, based on the configurations you give it. This option is only in effect if `ignoreSourceCalls` is set to false.
- dropPaths: "no" (string)
- ignoreCapitalization: true (boolean)
- inferWorkingDirectory: "active-script" (string)
- searchPath: [] (array)
- repeatedSourceLimit: 2 (number)
- assumeFilesExist: false (boolean)
- solver.sigdb (object)
Resolving library exports from a signature database.
- enabled: true (boolean)
- loadProjectDependencies: true (boolean)
- eagerlyLoad: false (boolean)
- eagerlyLoadExports: false (boolean)
- blobCacheBudgetMb: 16 (number)
- assumedRVersion: "auto" (string)
- linkBaseR: false (boolean)
- linkDescriptionDependencies: false (boolean)
- linkBaseRCalls: false (boolean)
- linkPackageCalls: false (boolean)
- warmInBackground: false (boolean)
- additionalPaths: [] (array)
- autoSync: false (boolean)
- versionSelection: "newest" (string)
- versionOverrides: {} (object)
... and 2 more, inspect them with solver.sigdb.<key>
- solver.slicer (object)
The configuration for the slicer.
- threshold: 50 (number)
- autoExtend: false (boolean)
- solver.trackEnvironments (boolean): true
Track user-created environments (new.env, assign/get/local with envir=, dollar-assign, attach). When false, all envir-style calls fall through conservatively.
- solver.transitiveSideEffectRounds (number): 32
How many rounds the transitive side-effect fixpoint may run before it is cut off (default 32); the propagation stops on its own as soon as a round adds nothing.
- solver.variables (string): "alias"
How to resolve variables and their values.
- solver.versionManagement (object)
Policies for reasoning about dependency versions.
- linkedVersionGroups: [] (array)
╰ Specialized for project kind unknown (overrides linter.disabledRules)
Read the direct children of solver (use solver.** for the whole subtree).
One of the most useful options to change on-the-fly are probably those under repl. For example, setting repl.quickStats
enables quick statistics after each REPL command. Likewise, repl.dfProcessorHeat enables the dataflow processor heatmap after each REPL command.
Implementation Details
The Config Query is executed by executeConfigQuery.
Currently maintained by Florian Sihler and Oliver Gerstl at Ulm University
Email | GitHub | Penguins | Portfolio
- 🧑💻 Developer Onboarding
- 💻 Setup
- 👓 Overview
- 🪟 Interfacing with flowR
- 🌋 Core
- 🧹 Testing & Linting (Benchmark Page)
⁉️ FAQ- ℹ️ Extra Information