• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

JuliaLang / julia / 1387
77%

Build:
DEFAULT BRANCH: master
Ran 26 Dec 2025 11:40AM UTC
Jobs 0
Files 0
Run time –
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

pending completion
1387

push

buildkite

web-flow
syntax-versioning: Define behavior in scripts and REPL (#60400)

Syntax versioning is cued off of the `syntax.julia_version` entry in a
package's Project.toml. But how should it behave in the REPL and in
scripts? Unlike a package, the `Main` module does not have a
well-defined Project associated with it - rather its loading behavior
depends on the current active project.

It seems fairly clear that syntax versioning should also follow the
active project, but what are the exact semantics? One possibility would
be to check the active project's Project.toml every time we need to
parse something. However, I think it would be somewhat surprising if the
syntax version changed in the middle of a script due to a concurrent
edit to the active Project.toml (at least in the absence of something
like Revise).

This PR instead implements a ScopedValue-based latching mechanism that
reads the syntax version:
 1. At startup
 2. For every REPL prompt

Ordinary ScopedValue behavior determines what happens for e.g. tasks
(i.e. a task started from one REPL prompt will continue using that
prompt's syntax version for e.g. `include`'s), even if the active
project changes in the meanwhile.

Note that as a consequence of this, changing the active project in the
middle of a script does not change the syntax version (not that it would
anyway, because we parse the whole script before we eval it - but this
makes it not take effect for `include` either).

I think this is the most sane behavior. Other frontends that want to
evaluate into Main can use the same mechanism as the REPL to decide on a
policy that makes sense for their use cases.

It is possible we may want to extend the scoped value behavior to the
active project itself as well, but it doesn't have the same TOCTOU
issues that the syntax version has and scripts are relying on it being
side-effecting, so it's not straightforward.

Finally, this adjusts the creation of named environments to implicitly
record the syntax vers... (continued)
Source Files on build 1387
Detailed source file information is not available for this build.
  • Back to Repo
  • f467548a on github
  • Prev Build on master (#1386)
  • Next Build on master (#1388)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc