Releases: aviatesk/JET.jl
Release list
v0.11.5
JET v0.11.5
Merged pull requests:
- Adjustments for incoming Julia v1.12.7 (#825) (@aviatesk)
- abstractinterpret: Track cached report dependencies (#828) (@aviatesk)
- virtualprocess: Avoid latestworld-driven loop concretization (#830) (@aviatesk)
- Bump actions/checkout from 6 to 7 (#831) (@dependabot[bot])
- deps: Update to LoweredCodeUtils v3.6.2 (#832) (@aviatesk)
Closed issues:
- Changelog out of date (#829)
v0.10.15
JET v0.10.15
This release has been identified as a backport.
Automated changelogs for backports tend to be wildly incorrect.
Therefore, the list of issues and pull requests is hidden.
v0.11.4
JET v0.11.4
Merged pull requests:
- Enable testing of prereleases (#797) (@ChrisRackauckas)
- Add new ReportMatchers: AnyFrameMethod and LastFrameMethod (#798) (@fingolfin)
- CI: fix harmless typo in artifact name (#799) (@fingolfin)
- Remove SnoopCompile documentation link from README (#800) (@MagicMuscleMan)
- Bump dawidd6/action-download-artifact from 11 to 14 (#802) (@dependabot[bot])
- Adjustments for v1.12.5 (#803) (@aviatesk)
- Bump dawidd6/action-download-artifact from 14 to 15 (#805) (@dependabot[bot])
- Bump actions/upload-artifact from 6 to 7 (#807) (@dependabot[bot])
- Bump dawidd6/action-download-artifact from 15 to 16 (#808) (@dependabot[bot])
- Bump julia-actions/cache from 2 to 3 (#809) (@dependabot[bot])
- Bump dawidd6/action-download-artifact from 16 to 18 (#810) (@dependabot[bot])
- Bump dawidd6/action-download-artifact from 18 to 19 (#811) (@dependabot[bot])
- Bump dawidd6/action-download-artifact from 19 to 21 (#818) (@dependabot[bot])
- Bump codecov/codecov-action from 5 to 7 (#821) (@dependabot[bot])
- deps: Restrict LoweredCodeUtils to 3.4-3.5 (#824) (@aviatesk)
Closed issues:
v0.11.3
JET v0.11.3
Merged pull requests:
- Bump actions/upload-artifact from 5 to 6 (#787) (@dependabot[bot])
- Adjust to Revise v3.13 (#794) (@aviatesk)
Closed issues:
v0.7.7
JET v0.7.7
This release has been identified as a backport.
Automated changelogs for backports tend to be wildly incorrect.
Therefore, the list of issues and pull requests is hidden.
v0.0.1
JET v0.0.1
This release has been identified as a backport.
Automated changelogs for backports tend to be wildly incorrect.
Therefore, the list of issues and pull requests is hidden.
v0.11.2
JET v0.11.2
Merged pull requests:
- Bump actions/upload-artifact from 4 to 5 (#775) (@dependabot[bot])
- use
workspacefor test project (#778) (@aviatesk) - add
[workspace]for document generation (#779) (@aviatesk) - Bump actions/checkout from 5 to 6 (#781) (@dependabot[bot])
- release: 0.10.4 (#782) (@aviatesk)
- toplevel: Parallelize
report_packagesignature analysis (#785) (@aviatesk)
Closed issues:
v0.10.14
JET v0.10.14
This release has been identified as a backport.
Automated changelogs for backports tend to be wildly incorrect.
Therefore, the list of issues and pull requests is hidden.
v0.10.13
JET v0.10.13
This release has been identified as a backport.
Automated changelogs for backports tend to be wildly incorrect.
Therefore, the list of issues and pull requests is hidden.
v0.11.0
JET v0.11.0
0.11.0
Changed
- Major improvement to
report_package: Switched to a Revise.jl-based
implementation that brings significant improvements (#763):-
Incremental analysis: Analysis results are now cached and reused across
multiple runs. When you analyze the same package again, only methods
affected by code changes are re-analyzed, while unchanged methods reuse
their cached results. This dramatically reduces analysis time for iterative
development workflows.E.g. Incremental analysis on JET itself
Screen.Recording.2025-10-23.at.03.01.14.mov
-
Improved robustness: The new implementation leverages Revise's
battle-tested infrastructure for tracking package definitions, providing
much more reliable analysis coverage across diverse code patterns compared
to the previous custom code loading mechanism. -
Breaking change:
report_packagenow requires aModuleargument
instead of accepting a package name asAbstractString. Users must now
load the target package before analysis. See the deprecated section for
more details. -
Limitation: As a trade-off of the Revise-based approach,
report_package
can no longer analyze packages that fail to load. Previously,report_package
could atl least report top-level errors for such packages (though it
couldn't perform inference-based analysis). Now users must fix loading
errors before applying JET analysis viareport_package. These errors are
typically straightforward to fix by examining the error output from
using MyPkgorPkg.precompile(). -
The previous default configurations
analyze_from_definitions=trueand
concretization_patterns=[:(x_)]are no longer needed or used, as the
Revise-based approach does not require JET's own code loading mechanism.
These configurations can still be used in other top-level analysis entry
points (e.g.report_fileandreport_text).
-
- Revise.jl is now a required dependency instead of an optional weak
dependency. This meanswatch_fileno longer requires manually loading
Revise withusing Revisebefore use. - Enabled the ad-hoc concrete evaluation
inJETAnalyzerfor Julia v1.13 and higher, reducing false positives in more general cases - Module filtering behavior change:
target_modulesandignored_modules
now include submodules by default (#628, #772):- Submodule-inclusive filtering: When a
Moduleobject is passed to
target_modulesorignored_modules, JET now matches not only that exact
module but also all of its submodules. This provides more intuitive
filtering behavior in most use cases. - Breaking change: This changes the filtering behavior when
target_modulesorignored_modulesaccept an iterator of modules.
To preserve the previous exact-match behavior (matching only the specified
module without its submodules), wrap the module withLastFrameModuleExact
orAnyFrameModuleExact:# New default (v0.11+): matches MyPackage and all its submodules report_call(f, args...; target_modules=(MyPackage,)) # Previous behavior (v0.10): matched only MyPackage exactly # To preserve this in v0.11+, use: report_call(f, args...; target_modules=(LastFrameModuleExact(MyPackage),))
- New matcher types:
ReportMatcher: abstract interface type forJET.match_reportLastFrameModuleExact: exact match in last frame onlyAnyFrameModuleExact: exact match in any frame
- Submodule-inclusive filtering: When a
Added
- Symbol-based module filtering:
target_modulesandignored_modulesnow
acceptSymbolin addition toModuleobjects (#602, #773).
This allows filtering by module name without requiring the module as a dependency:All matcher types (# Filter by module name without loading CUDA package report_call(f, args...; ignored_modules=(:CUDA,)) # Equivalent to passing the Module object (if CUDA is loaded) report_call(f, args...; ignored_modules=(CUDA,))
LastFrameModule,AnyFrameModule,LastFrameModuleExact,
AnyFrameModuleExact) now acceptUnion{Module,Symbol}.
Deprecated
report_package(::AbstractString),report_package([::Nothing]):
The old signatures accepting a package name as a string, or no arguments are
deprecated. Load the package first and pass theModuleinstead:# Preferred (v0.11): julia> using MyPackage julia> report_package(MyPackage) # Deprecated (v0.10): julia> report_package("MyPackage") julia> report_package()
target_defined_modulesconfiguration: Use the more flexibletarget_modules
configuration instead. To limit error reports to your package's module
context (filtering out errors from dependencies), use:report_package(MyPackage; target_modules=(MyPackage,))
Merged pull requests:
- Revise based
report_packageimplementation (#763) (@aviatesk) - rm no-longer necessary method table unwrap (#770) (@aviatesk)
- use the new ad-hoc concrete eval feature (#771) (@aviatesk)
- module filtering: include submodules by default (#772) (@aviatesk)
- module filtering: add Symbol-based filtering support (#773) (@aviatesk)
- simplify
report_packageanalyzer (#774) (@aviatesk)
Closed issues:
- Static array shape checking (#82)
- Document/add direct usage of package testing (#229)
- Report allocations (#286)
- Top-level error report for duplicated file inclusion (#384)
target_defined_moduledoes not work whenreport_configis given (#549)- report_package only generates output when run in REPL (#557)
- JET chokes on "pkgdir()" (#565)
report_packageseems to ignoreignored_modules(#570)report_package("Nemo")prints "Package AbstractAlgebra not found" and reports many invalid errors afterwards (#574)- cache system: switch to use
result.analysis_resultsfor caching JET analysis result once updating to v1.11 (#578) - Suggestion: make
ignored_modulesa tuple of symbols, instead of a tuple of modules (#602) - Stack overflow in inference (#627)
- Include submodules in
target_modules? (#628) - Interaction with
ChainRulesCore.@non_differentiable(#642) skip_unoptimized_throw_blocksdoes not ignore error exceptions (#647)- Significant regression in TTFX, Julia 1.11 (#649)
- JET v0.9.19 dropped compat with Julia 1.10 (#705)
evaluate_call_recurse!missing (JET 0.9) (#729)report_package("GAP")error -- top level@ccallunsupported? (#734)report_package("GAP")givesArgumentError: Package GAP_pkg_ace_jll not found in current path(#735)- Running
JET.report_packagecausesMethodErrorin subsequent tests (#745) - False positive
BoundsError(#769)