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/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 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. - 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.
- MasonProtter/ToggleableAsserts.jl : Assertions that can be turned on or off with a switch, without runtime penalty when they're off.
- timholy/Rebugger.jl : An expression-level debugger for Julia, sans the ability to interact with or manipulate call stacks, but it can trace execution via the manipulation of Julia expressions.
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¶
- barche/QML.jl : Small example for starting an interface to Qt5 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.
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 can be accessed here.
- 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
.