Asciicast.jl is all about showcasing Julia code running in a REPL using technologies developed by the open-source asciinema project. (It is totally unaffiliated with the authors of that project, however).
It does so in a few ways:
- provides a convenient way to generate and maintain gifs showing code execution in READMEs and other documents. See the Markdown Usage portion of the docs.
- provides integration with Documenter, providing
@cast
Documenter blocks that render code outputs as gifs in Documenter websites. See the Documenter Usage portion of the docs. - provides functionality to generate
asciicast
files (using the v2 file format) from Julia code, using thecast""
string macro, arecord_output
function, or using low-levelwrite_event
commands. These files can be played in the terminal or uploaded to asciinema.org with theasciinema
player, or played in a web browser using asciinema-player. See the docs for more.
Demo:
@info "Hello!"
println("That was a logging statement, but this is printing.")
x = rand(10, 10)
using LinearAlgebra
svd(x)
println("Now I'll wait a second")
sleep(1)
println("ok, done!")
- It is easy to use the CLI tool asciinema directly to record sessions to
.cast
files or otherwise. That can be a good option if you need keyboard input or face some of the other Limitations of asciicast.jl.- In contrast, Asciicast.jl has an advantage in maintainability, in that you don't need to manually re-run sessions to regenerate the outputs.
- Replay.jl provides a similar Julia-based alternative. Some of the differences I can ascertain:
- Asciicast.jl is based on Documenter's code execution sandboxes (which have their limitations), while Replay.jl has it's own implementation.
- Asciicast.jl provides Documenter and pandoc-based document integration with
@cast
blocks and{cast="true"}
blocks, while Replay seems focused on the core replaying-of-sessions. Perhaps these could be composed together somehow? - Possibly other differences; I am not very familiar with Replay.jl. PRs to improve this comparison are appreciated!