Development Tools
Julia development tools, compilers, debuggers, DevOps.
Organizations¶
Resources¶
- Awesome devops
- JuliaHub
- General registry : The official registry of general Julia packages.
Static analysis¶
- aviatesk/JET.jl : experimental code analyzer for Julia.
- JuliaLang/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.
- tonyhffong/Lint.jl : A lint tool to hunt for imperfections and dodgy structures that could be improved for Julia code.
Style Guidelines¶
- invenia/BlueStyle : A Julia style guide.
- jrevels/YASGuide : Yet Another Style Guide For Julia.
- JuliaTesting/Aqua.jl : Auto QUality Assurance (automated checks) for Julia packages.
Developing Julia packages¶
- JuliaInterop/VersionParsing.jl : flexible Version Number parsing.
- JuliaLang/Compat.jl : A package for cross-version compatibility between old Julia and the new - takes care of syntax breakage and provides compatibility constructs that will work in both versions without warnings.
- JuliaLang/PrecompileTools.jl : Reduce time-to-first-execution of Julia code.
- JuliaPackaging/Requires.jl : Lazy code loading in Julia packages. Will be replaced by the extension system in Julia version 1.9+.
- Roger-luo/FromFile.jl : providing a macro
@from
importing objects from files without having toinclude
files repeatedly. - simonster/Reexport.jl : Julia macro for re-exporting one module from another.
Package registry¶
- GunnarFarneback/LocalRegistry.jl : Create and maintain local package registries for Julia packages.
- JuliaComputing/Registrator.jl : Julia package registration bot.
Package templates¶
- invenia/PkgTemplates.jl : Generate Julia package skeletons using a simple template system.
- tpapp/PkgSkeleton.jl : Create new Julia packages, the easy way. Include templaye files for GitHub / GitLab CI.
Prebuilt Binaries¶
- Julia Packaging team.
- Yggdrasil the binary repository.
- Artifacts system in Julia packaging.
- JuliaPackaging/BinaryBuilder.jl : Binary Dependency Builder for Julia.
- aplavin/RunBinary.jl : running binary files from the
Yggdrasil
repo.
Compilers¶
- JuliaHubOSS/llvm-cbe : A resurrected LLVM C Backend, with improvements for Julia.
- JuliaInterop/Clang.jl : Julia interface to libclang and C wrapper generator.
- JuliaLang/PackageCompiler.jl : Compiles your Julia environment into a system image or a standalone binary.
- tshort/StaticCompiler.jl : Compiles Julia code to a standalone library.
Test-driven development (TDD)¶
- adolgert/UnitTestDesign.jl : chooses efficient combinations functional arguments to maximize test coverage.
- invenia/Mocking.jl : allowing temporary overwriting of Julia methods for testing purposes.
- julia-vscode/TestItemRunner.jl : run Julia tests in VSCode.
- JuliaCI/Coverage.jl : tracking code testing coverage and memory usage and optionally upload them to online services like Coveralls or Codecov.
- JuliaCloud/MockAWS.jl : patch functions for testing all AWS services.
- JuliaTesting/ReTest.jl : Testing framework for Julia, allowing deferred execution and filtered test sets.
- JuliaTesting/TestEnv.jl :
TestEnv.activate()
loads your test environment, so you can use your test dependencies in the REPL. - rened/Watcher.jl : auto-run unit tests every time a file gets saved.
- Seelengrab/Supposition.jl : property-based testing using choice sequences. It's been heavily inspired by the testing framework Hypothesis.
- wookay/Jive.jl : running test in parallel. It also supports watch folder function.
- YingboMa/SafeTestsets.jl :
@safetestset
puts@testset
into a module to reduce global side effects.
Logging¶
See also the built-in Julia logging facilities.
- JuliaLogging/ProgressLogging.jl : a package for defining progress logs.
Benchmarking and Regression Testing¶
- awadell1/PkgJogger.jl : a benchmarking framework for Julia built on
BenchmarkTools.jl
, providing simple benchmark script loading and revision (byRevise.jl
). It also enables continuous benchmarking. - IanButterworth/SystemBenchmark.jl : Julia package for benchmarking a system's performance.
- JuliaCI/BenchmarkTools.jl : A benchmarking framework for the Julia language.
- JuliaCI/PkgBenchmark.jl : Easy benchmark tracking for packages
- JuliaCI/PkgEval.jl : Evaluate Julia packages for a range of Julia versions.
- JuliaOpt/ConicBenchmarkUtilities.jl : Julia utilities for the conic benchmark format for mathematical optimization.
- JuliaPlots/VisualRegressionTests.jl : Automated integrated regression tests for graphics libraries by comparing similarity between a newly generated image and a reference image.
- kimikage/ProfileSVG.jl : Write flame graphs to SVG format and explore them interactively in Jupyter, Pluto, etc.
- KristofferC/TimerOutputs.jl : Formatted output of timed sections in julia.
- schmrlng/CPUTime.jl : A module for CPU timing.
- timholy/ProfileView.jl : Visualization of Julia profiling data
- tkluck/StatProfilerHTML.jl : Show Julia profiling data in an HTML page.
- xiaodaigh/DataBench.jl : A package to benchmark data manipulation in Julia vs
R data.table
.
Debugger¶
- JuliaDebug organization.
- dfdx/Ghost.jl : a code tracer for the Julia programming language. It lets you
trace(f, args...)
the function execution, recording all primitive operations onto a linearized tape. - JuliaDebug/Debugger.jl : Julia debugger using the
@enter
macro. - JuliaDebug/Infiltrator.jl :
@infiltrate
macro sets a "breakpoint" in a local context. All code is completely compiled and faster thanDebugger.jl
. JuliaCon 2024 video - JuliaDebug/JuliaInterpreter.jl : Interpreter for Julia code.
- JuliaIO/Suppressor.jl : Julia macros for suppressing output (STDOUT), warnings (STDERR) or both streams at the same time.
Documentation and report generation¶
- fredrikekre/Literate.jl : literate programming in Julia.
- JuliaBooks/Books.jl : generate books (or dashboards) in pdf/HTML/docx with embedded Julia output by pandoc document processor. Currently, this package is used to write the Julia Data Science book.
- MichaelHatherly/CommonMark.jl : A CommonMark-compliant parser for Julia.
- JuliaDocs/Documenter.jl : The official documentation generator for Julia.
- ali-ramadhan/DocumenterCitations.jl : uses Humans-of-Julia/Bibliography.jl to add support for BibTeX citations and references in documentation pages generated by JuliaDocs/Documenter.jl.
- JuliaComputing/MultiDocumenter.jl : Aggregates documentations from multiple sources.
- JuliaDocs/DocStringExtensions.jl : Extensions for Julia's documentation system.
- JunoLab/Weave.jl : A scientific report generator/literate programming tool for Julia based on Pweave and resembles Knitr and Sweave.
- piever/Remark.jl : A Julia package to create presentations from markdown using Remark.
Integrated development environment (IDE)¶
Julia editor suport organization.
- Julia VSCode : A powerful, free IDE for the Julia language.
- jedit-julia : A jEdit mode for Julia.
- Julia.tmbundle : Julia language support for TextMate 2 (and Sublime Text).
- LiClipse : Eclipse plus some customizations, supports Julia.
- cormullion/juliamono : A monospaced font for Julia with unicode characters and ligatures.
- julia-vscode/LanguageServer.jl : An implementation of the Microsoft Language Server Protocol for the julia language.
- JunoLab/LNR.jl : Line numbering reader.
Emacs¶
- ESS support for julia language, includes font-lock, indentation, sending code to sub-process, interactive documentation, imenu, completion and eldoc. Also see its Installation instructions for Julia
- JuliaEditorSupport/julia-emacs : Julia support in Emacs.
- tpapp/julia-repl : Run an interior Julia REPL in a terminal inside Emacs.
Vim¶
- JuliaEditorSupport/julia-vim
- bfredl/Neovim.jl by @bfredl : Neovim client for Julia.
- baruchel/vim-notebook : Vim users can use Julia from the
vim-notebook
plugin.
Jupyter Notebooks¶
- JuliaLang/IJulia.jl : Julia kernel for Jupyter.
- JuliaGizmos/Interact.jl : Library for interactive widgets in IJulia.
- stevengj/NBInclude.jl : Import code from IJulia Jupyter notebooks into Julia programs.
Web IDE¶
- Google colab Julia notebook
- Julia Hub
- Julia on the SageMath cloud server
- Repl.it
- Nextjournal
- CodeBunk supports Julia for collaborative screen-sharing on the cloud.
Shell scripting¶
- Shell scripting
- Administrative scripting with Julia : A guide for writing shell scripts in Julia.
GUI¶
- JuliaGraphics/QML.jl : Small example for starting an interface to Qt6 QML.
- davidanthoff/Electron.jl : Julia wrapper for Electron with a more minimalistic feature set than
Blink.jl
. - JuliaGizmos/Blink.jl : Julia wrapper around Electron.
- JuliaGraphics/Gtk.jl : Julia interface to the GTK windowing toolkit.
- JuliaGraphics/Tk.jl : The Julia interface for the Tk windowing toolkit.
- PeaceFounder/AppBundler.jl : building Julia GUI applications in modern desktop application installer formats in Linux (snap), Windows (MSIX), and MacOS (DMG). JuliaCon 2024 video
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.
- setup-julia : downloading a specified version of Julia and adding it to PATH.
- cache : A shortcut action to cache Julia artifacts, packages, and registries.
- julia-buildpkg
- julia-runtest
- julia-processcoverage
- CompatHelper workflow
Containers and Virtualization¶
- Julia docker image and the packaging
DOCKERFILE
.