Skip to content

JuliaLang/JuliaSyntax.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ef9b8dd · Mar 26, 2025
Mar 25, 2025
Jan 22, 2025
Jun 16, 2023
Mar 26, 2025
Oct 6, 2022
Feb 13, 2025
Aug 8, 2024
Jul 11, 2024
Jun 17, 2023
Aug 12, 2022
Feb 13, 2025
Oct 6, 2024

Repository files navigation

JuliaSyntax

Build Status codecov.io

A Julia compiler frontend, written in Julia.

Read the documentation for more information.

Status

JuliaSyntax.jl is used as the new default Julia parser in Julia 1.10. It's highly compatible with Julia's older femtolisp-based parser - It parses all of Base, the standard libraries and General registry. Some minor difference remain where we've decided to fix bugs or strange behaviors in the reference parser.

The AST and tree data structures are usable but their APIs will evolve as we try out various use cases. Parsing to the standard Expr AST is always possible and will be stable.

The intention is to extend this library over time to cover more of the Julia compiler frontend.

Getting involved

For people who want to help improve Julia's error messages by contributing to JuliaSyntax, I'd suggest looking through the issue list at https://github.com/JuliaLang/JuliaSyntax.jl/issues and choosing a small issue or two to work on to familiarize yourself with the code. Anything marked with the labels intro issue or bug might be a good place to start.

Also watching the 2022 JuliaCon talk and reading the design and reference documentation should be good for an overview.

As of May 2023, we've got really good positional tracking within the source, but JuliaSyntax really needs a better system for parser recovery before the errors are really nice. This requires some research. For example, you could read up on how rust-analyzer does recovery, or rslint - both these are event-based recursive decent parsers with similar structure to JuliaSyntax (though in Rust). I also want to investigate whether we can do data-driven parser recovery using an ML technique. But again, this is a research project.