Julia development tools, compilers, debuggers, DevOps.

Organizations

Resources

Static analysis

  • AllocCheck.jl : a Julia package that statically checks if a function call may allocate by analyzing the generated LLVM IR of it and its callees.
  • JET.jl : experimental code analyzer for Julia.
  • Lint.jl : A lint tool to hunt for imperfections and dodgy structures that could be improved for Julia code.
  • StaticLint.jl : Static Code Analysis for Julia.

Style Guidelines

Official Julia style guide

  • BlueStyle : A Julia style guide.
  • YASGuide : Yet Another Style Guide For Julia.
  • Aqua.jl : Auto Quality Assurance (automated checks) for Julia packages.

Developing Julia packages

  • Compat.jl: ease interoperability between older and newer versions of Julia.
  • FromFile.jl : providing a macro @from include() importing objects from files without including files repeatedly.
  • PrecompileTools.jl : Reduce time-to-first-execution of Julia code.
  • Reexport.jl : Julia macro for re-exporting one module from another.
  • VersionParsing.jl : parsing version-number strings into Julia’s built-in VersionNumber type.

Package registry

Package templates

  • PkgTemplates.jl : Generate Julia package skeletons using a simple template system.
  • PkgSkeleton.jl : Create new Julia packages, the easy way. Include template files for GitHub / GitLab CI.

Prebuilt Binaries


Compilers

  • Clang.jl : Julia interface to libclang and C wrapper generator.
  • llvm-cbe : A resurrected LLVM C Backend, with improvements for Julia.
  • PackageCompiler.jl : Compiles your Julia environment into a system image or a standalone binary.
  • StaticCompiler.jl : Compiles Julia code to a standalone library. (experimental)

Test-driven development (TDD)


  • Coverage.jl : tracking code testing coverage and memory usage and optionally upload them to online services like Coveralls or Codecov.
  • Jive.jl : running test in parallel. It also supports watch folder function.
  • Mock.jl : A lightweight Julia package for temporarily replacing function implementations.
  • Mocking.jl : allowing temporary overwriting of Julia methods for testing purposes.
  • ReTest.jl : Testing framework for Julia, allowing deferred execution and filtered test sets.
  • SafeTestsets.jl : @safetestset puts @testset into a module to reduce global side effects.
  • Supposition.jl : property-based testing using choice sequences. It’s been heavily inspired by the testing framework Hypothesis.
  • TestEnv.jl : TestEnv.activate() loads your test environment, so you can use your test dependencies in the REPL.
  • TestItemRunner.jl : run Julia tests with @testitem in VSCode.
  • UnitTestDesign.jl : chooses efficient combinations functional arguments to maximize test coverage.
  • Watcher.jl : auto-run unit tests every time a file gets saved.
  • https://github.com/JuliaCloud/MockAWS.jl : patch functions for testing all AWS services.

Logging

The built-in Julia logging facilities.

Benchmarking and Regression Testing


  • BaseBenchmarks.jl: A collection of Julia benchmarks available for CI tracking from the JuliaLang/julia repository.
  • BenchmarkTools.jl : A benchmarking framework for the Julia language.
  • PkgBenchmark.jl : Easy benchmark tracking for packages
  • PkgEval.jl : Evaluate Julia packages for a range of Julia versions.
  • PkgJogger.jl : a benchmarking framework for Julia built on BenchmarkTools.jl, providing simple benchmark script loading and revision (by Revise.jl). It also enables continuous benchmarking.
  • SystemBenchmark.jl : Julia package for benchmarking a system’s performance.
  • TimerOutputs.jl : Formatted output of timed sections in julia.
  • VisualRegressionTests.jl : Automated integrated regression tests for graphics libraries by comparing similarity between a newly generated image and a reference image.

Profilers

Analyzing how much time is spent on individual line(s). Julia docs: https://docs.julialang.org/en/v1/manual/profile/

Debugger


  • Cthulhu.jl : Cthulhu can help you debug type inference issues by recursively showing the type-inferred code until you find the exact point where inference gave up, messed up, or did something unexpected. Using the Cthulhu interface, you can debug type inference problems faster.
  • Debugger.jl : Julia debugger using the @enter macro.
  • Infiltrator.jl : @infiltrate macro sets a “breakpoint” in a local context. All code is completely compiled and faster than Debugger.jl. JuliaCon 2024 video
  • JuliaInterpreter.jl : Interpreter for Julia code.
  • Suppressor.jl :  Julia macros for suppressing output (STDOUT), warnings (STDERR) or both streams at the same time.

Documentation and report generation

Julia docstrings


Integrated development environment (IDE)

Julia editor suport organization.

  • Julia VSCode : A powerful, free IDE for the Julia language.
    • LanguageServer.jl : An implementation of the Microsoft Language Server Protocol for the julia language.
  • Julia.tmbundle : Julia language support for TextMate 2 (and Sublime Text).
  • Julia in Quarto: An open-source scientific and technical publishing system.
  • LiClipse : Eclipse plus some customizations, supports Julia.
  • juliamono : A monospaced font for Julia with unicode characters and ligatures.

Emacs

Vim

Jupyter notebooks

Jupyter

  • IJulia.jl : Julia kernel for Jupyter.
  • Interact.jl : Library for interactive widgets in IJulia.
  • NBInclude.jl : Import code from IJulia Jupyter notebooks into Julia programs.

Pluto notebooks

Web IDE

Wikipedia: web IDE

User interface

Containers and Virtualization

Virtualization

Continuous integration (CI) providers

PkgTemplates.jl and PkgSkeleton.jl can generate the CI/CD configuration files.

Gitlab-CI

  • GitlabJuliaDemo.jl : A minimal example for setting up CI with Julia on Gitlab. The blog post describing how a Julia package repo in Gitlab can be setup with continuous integration and coverage summary. A sample CI file .gitlab-ci.yml is here.

GitHub

GitHub actions for Julia. A sample CI file.