Skip to content

Releases: aviatesk/JET.jl

v0.11.5

Choose a tag to compare

@github-actions github-actions released this 24 Jun 06:24

JET v0.11.5

Diff since v0.11.4

Merged pull requests:

Closed issues:

  • Changelog out of date (#829)

v0.10.15

Choose a tag to compare

@github-actions github-actions released this 17 Jun 04:27

JET v0.10.15

Diff since 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.11.4

Choose a tag to compare

@github-actions github-actions released this 11 Jun 21:56

JET v0.11.4

Diff since v0.11.3

Merged pull requests:

Closed issues:

  • JET doesn't like vcat on Julia 1.12 (#699)
  • Compatibility with Julia 1.12? (#812)
  • Missed erroring function in if-else branches (#820)

v0.11.3

Choose a tag to compare

@github-actions github-actions released this 31 Dec 19:45

JET v0.11.3

Diff since v0.11.2

Merged pull requests:

Closed issues:

  • no matching method found with Vector (#761)
  • JET tests broken on 1.112.2 (#786)

v0.7.7

Choose a tag to compare

@github-actions github-actions released this 31 Dec 19:40

JET v0.7.7

Diff since v0.7.6

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

Choose a tag to compare

@github-actions github-actions released this 31 Dec 19:40

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.

Read more

v0.11.2

Choose a tag to compare

@github-actions github-actions released this 02 Dec 10:10

JET v0.11.2

Diff since v0.11.0

Merged pull requests:

Closed issues:

  • Explicit import with parentheses fails JET test (#738)
  • Precompile error with LoweredCodeUtils and Julia 1.12 (#760)
  • Neovim lsp support for jet? (#780)
  • Expected MethodTableView with julia 1.12.2 (#783)

v0.10.14

Choose a tag to compare

@github-actions github-actions released this 26 Nov 17:45
f577f65

JET v0.10.14

Diff since 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.10.13

Choose a tag to compare

@github-actions github-actions released this 12 Nov 16:53

JET v0.10.13

Diff since v0.10.12

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

Choose a tag to compare

@github-actions github-actions released this 22 Oct 16:56

JET v0.11.0

Diff since v0.10.12

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_package now requires a Module argument
      instead of accepting a package name as AbstractString. 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 via report_package. These errors are
      typically straightforward to fix by examining the error output from
      using MyPkg or Pkg.precompile().

    • The previous default configurations analyze_from_definitions=true and
      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_file and report_text).

  • Revise.jl is now a required dependency instead of an optional weak
    dependency. This means watch_file no longer requires manually loading
    Revise with using Revise before use.
  • Enabled the ad-hoc concrete evaluation
    in JETAnalyzer for Julia v1.13 and higher, reducing false positives in more general cases
  • Module filtering behavior change: target_modules and ignored_modules
    now include submodules by default (#628, #772):
    • Submodule-inclusive filtering: When a Module object is passed to
      target_modules or ignored_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_modules or ignored_modules accept an iterator of modules.
      To preserve the previous exact-match behavior (matching only the specified
      module without its submodules), wrap the module with LastFrameModuleExact
      or AnyFrameModuleExact:
      # 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 for JET.match_report
      • LastFrameModuleExact: exact match in last frame only
      • AnyFrameModuleExact: exact match in any frame

Added

  • Symbol-based module filtering: target_modules and ignored_modules now
    accept Symbol in addition to Module objects (#602, #773).
    This allows filtering by module name without requiring the module as a dependency:
    # 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,))
    All matcher types (LastFrameModule, AnyFrameModule, LastFrameModuleExact,
    AnyFrameModuleExact) now accept Union{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 the Module instead:
    # Preferred (v0.11):
    julia> using MyPackage
    julia> report_package(MyPackage)
    
    # Deprecated (v0.10):
    julia> report_package("MyPackage")
    julia> report_package()
  • target_defined_modules configuration: Use the more flexible target_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:

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_module does not work when report_config is given (#549)
  • report_package only generates output when run in REPL (#557)
  • JET chokes on "pkgdir()" (#565)
  • report_package seems to ignore ignored_modules (#570)
  • report_package("Nemo") prints "Package AbstractAlgebra not found" and reports many invalid errors afterwards (#574)
  • cache system: switch to use result.analysis_results for caching JET analysis result once updating to v1.11 (#578)
  • Suggestion: make ignored_modules a 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_blocks does 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 @ccall unsupported? (#734)
  • report_package("GAP") gives ArgumentError: Package GAP_pkg_ace_jll not found in current path (#735)
  • Running JET.report_package causes MethodError in subsequent tests (#745)
  • False positive BoundsError (#769)