Julia development tools, compilers, debuggers, DevOps.
Organizations
Resources
- Awesome devops
- JuliaHub
- General registry : The official registry of general Julia packages.
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
- 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
VersionNumbertype.
Package registry
- LocalRegistry.jl : Create and maintain local package registries for Julia packages.
- Registrator.jl : Julia package registration bot.
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
- Julia Packaging team.
- Yggdrasil the binary repository.
- Artifacts system in Julia packaging.
- BinaryBuilder.jl : Binary Dependency Builder for Julia.
- RunBinary.jl : running binary files from the
Yggdrasilrepo.
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)
- Official docs: Unittest
- Julia Test organization
- 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 :
@safetestsetputs@testsetinto 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
@testitemin 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.
- ProgressLogging.jl : a package for defining progress logs, supported by REPL (TerminalLoggers.jl), VS Code, Pluto.
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 (byRevise.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/
- ProfileSVG.jl : Write flame graphs to SVG format and explore them interactively in Jupyter, Pluto, etc.
- ProfileView.jl : Visualization of Julia profiling data
- StatProfilerHTML.jl : Show Julia profiling data in an HTML page.
Debugger
- JuliaDebug organization.
- Debugging Julia in VS Code
- 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
@entermacro. - Infiltrator.jl :
@infiltratemacro sets a “breakpoint” in a local context. All code is completely compiled and faster thanDebugger.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
- 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.
- Literate.jl : literate programming in Julia.
- QuartoNotebookRunner.jl : Julia code evaluation engine used by Quarto.
- Remark.jl : A Julia package to create presentations from markdown using Remark.
- Weave.jl : A scientific report generator/literate programming tool for Julia based on Pweave and resembles Knitr and Sweave.
- Documenter.jl : The official documentation generator for Julia. - DocumenterCitations.jl : uses Bibliography.jl to add support for BibTeX citations and references in documentation pages generated by Documenter.jl. - MultiDocumenter.jl : Aggregates documentations from multiple sources. - DocStringExtensions.jl : Extensions for Julia’s documentation system.
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
- 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
- julia-emacs : Julia support in Emacs.
- julia-repl : Run an interior Julia REPL in a terminal inside Emacs.
Vim
- julia-vim
- Neovim.jl by @bfredl : Neovim client for Julia.
- vim-notebook : Vim users can use Julia from the
vim-notebookplugin.
Jupyter notebooks
- 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
- Pluto.jl : Reactive notebooks for Julia.
- PlutoPages.jl :
PlutoPages.jlis a site generation system inspired by https://www.11ty.dev/. - PlutoSliderServer.jl : Web server to host Pluto notebooks supporting static conversion to HTML files.
- PlutoSlides.jl : Beamer-like slide formatting to
Pluto.jlnotebooks. - PlutoStaticHTML.jl : Convert Pluto notebooks to pure HTML files. Template for Julia tutorials.
- PlutoUI.jl : A small package with interactive elements to be used in
Pluto.jl.
Web IDE
User interface
Containers and Virtualization
- Julia docker image and the packaging
DOCKERFILE.
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.ymlis 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
- Julia TagBot : Creates tags, releases, and changelogs for your Julia packages when they’re registered.