Julia Syntax Lowering
Developmentjulia-syntax-loweringJulia Syntax Lowering is an Agent Skill for development published in the JuliaLang/julia repository on GitHub: a SKILL.md instruction file an AI agent can load to do this task.
Develop and test JuliaSyntax and JuliaLowering in Julia's source tree. Use when modifying JuliaSyntax/ or JuliaLowering/, running package or targeted tests, or checking JuliaLowering execution.
How to use this skill
Bring this guide into your coding agent with a prompt tailored to the tool you use.
- Open your project in Codex.
- Copy and paste the prompt below.
- Review files and risks before approving any action.
Inspect the Agent Skill at https://github.com/JuliaLang/julia/blob/HEAD/doc/src/devdocs/agents/skills/julia-syntax-lowering/SKILL.md and all supporting files. Report provenance, permissions, scripts, dependencies, and security risks. Propose an exact installation into .agents/skills/julia-syntax-lowering, but wait for my approval before writing files or running scripts.
Copying this prompt does not install or run the skill. Review third-party files before use.
JuliaSyntax & JuliaLowering development
Use this when modifying JuliaSyntax/ or JuliaLowering/ source, tests, or
package metadata.
Testing JuliaSyntax
Run package tests from the repository root:
julia --project=JuliaSyntax -e 'using Pkg; Pkg.test()'
JuliaSyntax is not tied only to the in-tree Julia runtime; if a change may be
version-sensitive, test it with the relevant installed Julia version(s).
Testing JuliaLowering
Prefer the in-tree Julia runtime because compatibility with the Julia runtime may matter:
./usr/bin/julia --project=JuliaLowering -e 'using Pkg; Pkg.test()'
If ./usr/bin/julia is unavailable, note that limitation and use an available
julia executable only for preliminary validation.
In this repository, JuliaLowering/Project.toml points its JuliaSyntax
dependency at the sibling JuliaSyntax checkout
(path = "../JuliaSyntax"). Therefore, JuliaSyntax changes can affect
JuliaLowering. When a JuliaSyntax change may affect lowering behavior or
syntax data consumed by JuliaLowering, run the JuliaLowering test command as
well.
Targeted JuliaLowering tests
For targeted JuliaLowering test execution, include
JuliaLowering/test/utils.jl before the test file, matching
JuliaLowering/test/runtests.jl:
./usr/bin/julia --project=JuliaLowering -e 'cd("JuliaLowering/test") do; include("utils.jl"); include("scopes.jl"); end'
For _ir.jl fixtures, call test_ir_cases after loading utils.jl:
./usr/bin/julia --project=JuliaLowering -e 'cd("JuliaLowering/test") do; include("utils.jl"); test_ir_cases("scopes_ir.jl"); end'
Trying JuliaLowering execution
For quick execution checks, run with the in-tree Julia runtime and the
JuliaLowering project:
./usr/bin/julia --project=JuliaLowering
Then either evaluate code explicitly through JuliaLowering:
using JuliaLowering
JuliaLowering.include_string(Main, "1 + 2")
or activate JuliaLowering as the process lowerer, then evaluate subsequent
code normally:
using JuliaLowering
JuliaLowering.activate!()
1 + 2
Use include("path/to/file.jl") after activation when checking a file. When
using JuliaLowering.activate!() from -e, make the code under test a separate
top-level statement after activation, or put it in include(...).