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

JuliaLang / julia / 1408
77%

Build:
DEFAULT BRANCH: master
Ran 14 Jan 2026 11:43AM UTC
Jobs 3
Files 350
Run time 1min
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

14 Jan 2026 04:57AM UTC coverage: 76.686% (-0.06%) from 76.749%
1408

push

buildkite

web-flow
Move thunk and export evaluation out of `jl_toplevel_eval_flex` (#60528)

Deconstructing `jl_toplevel_eval_flex` to help with JuliaLowering integration
and to further disentangle top level evaluation from `Expr` and from the code in
toplevel.c:

### `jl_eval_thunk`: C API for CodeInfo evaluation without Expr

Separate CodeInfo evaluation out of `jl_toplevel_eval_flex` into
`jl_eval_thunk` so that `CodeInfo` can become the basic unit of toplevel
evaluation rather than `Expr`.

The latest world age set and restore now moves entirely into `jl_eval_thunk` as
`jl_toplevel_eval_flex` no longer modifies the task's world age. The world age
set and restore inside `jl_eval_thunk` needs to moves outward so that it wraps
around the calls to `jl_resolve_definition_effects_in_ir` which interprets some
limited top level expressions for the argument types foreigncall, etc.
(Previously the world age was updated to the latest in functions which call
`jl_toplevel_eval_flex` so resolving definition effects happened to work.)

`jl_filename` and `jl_lineno` are also set from `jl_eval_thunk` using the same
debuginfo used within codegen so that deprecation binding errors and
`jl_fprint_critical_error` can contain the approximate line number.

### `jl_module_public` API for declaring symbols public/exported

Move public/export batching out of `jl_toplevel_eval_flex` and into a C runtime
function `jl_module_public` which can be called without using eval and without
constructing an Expr.

### Side quest: Fix GC rooting in `jl_declare_constant_val2`

Various seemingly-unrelated changes in `jl_toplevel_eval_flex`
mysteriously cause the static analyzer to see a rooting problem in
`jl_declare_constant_val2`: The `val` argument is currently declared
JL_MAYBE_UNROOTED, but we call JL_LOCK without rooting it.

I've done the simplest fix here which is to root `val` inside
`jl_declare_constant_val2`. An alternative would be to remove the
`JL_MAYBE_UNROOTED` annotation which could be an ... (continued)

62680 of 81736 relevant lines covered (76.69%)

23380003.16 hits per line

Uncovered Existing Lines

Lines Coverage ∆ File
1
79.72
-0.46% base/essentials.jl
1
51.72
-0.49% base/initdefs.jl
1
76.66
-0.04% base/loading.jl
1
44.66
-0.32% base/methodshow.jl
1
75.88
-0.11% Compiler/src/optimize.jl
1
38.46
-0.21% stdlib/FileWatching/src/FileWatching.jl
5
67.85
-0.92% base/reflection.jl
5
84.67
-0.49% Compiler/src/ssair/inlining.jl
15
71.03
-0.73% base/show.jl
17
37.45
-0.14% Compiler/src/ssair/show.jl
37
68.59
-4.65% base/errorshow.jl
Jobs
ID Job ID Ran Files Coverage
1408 macos-coverage - 1408 14 Jan 2026 11:43AM UTC 350
75.52
1408 windows-coverage - 1408 14 Jan 2026 04:10PM UTC 319
74.9
1408 linux-coverage - 1408 14 Jan 2026 03:27PM UTC 349
75.22
Source Files on build 1408
  • Tree
  • List 350
  • Changed 65
  • Source Changed 0
  • Coverage Changed 65
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 26c109e6 on github
  • Prev Build on main (#1562)
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

© 2026 Coveralls, Inc