Package Development in Julia 1.0 using the REPL

By: Abel Soares Siqueira

Re-posted from: http://abelsiqueira.github.io/package-development-on-julia-10/

This is a quick post on package development in Julia 1.0. Let me know if you’re
interested in more, and what.

Suppose you’re developing a package – say, MyPackage.jl – whether from scratch, or
updating from Julia 0.6.
First, and foremost, you need to be able to run and test it.
On Julia 1.0, this is one possible way, while using the REPL.

Choose a folder to develop it and create the necessary files

You’ll need

  • MyPackage.jl/
    • src/
      • MyPackage.jl
    • test/
      • runtests.jl
    • README.md (eventually)
    • LICENSE.md (eventually)
    • .travis.yml (eventually)

The file src/MyPackage.jl is the file included by Julia when you enter
Using MyPackage. test/runtests.jl is what is run to test your package. It is
required if you intend to publish your package, but most important, you need to test
your package before trying to publish it. README gives information about your package,
LICENSE gives information about its license, and .travis.yml defines the online testing
with continuous integration by Travis. These are usual, but not require when you’re
starting to develop your package.

For instance, consider the following files

# src/MyPackage.jl
module MyPackage

export pi_approximation

function pi_approximation()
  return 22.0 / 7.0
end

end # module
# test/runtests.jl
using MyPackage, Test

function tests()
  @testset "Subset of tests" begin
    @test pi_approximation()  pi atol=1e-2
  end
end

tests()

Open the REPL and add your package under the development version

I assume Linux, but this will work with minor modifications on OSX and Windows.

On the terminal, enter julia to open the REPL

julia>

Enter pkg mode by pressing ].

(v1.0) pkg>

Inform pkg that your package folder exists and is under development with dev.

(v1.0) pkg> dev SOME_PATH/MyPackage.jl

[ Info: Assigning UUID XXXXXX to MyPackage
 Resolving package versions...
  Updating `~/.julia/environments/v1.0/Project.toml`
  [XXX] + MyPackage v0.0.0 [`SOME_PATH/MyPackage.jl`]
  Updating `~/.julia/environments/v1.0/Manifest.toml`
  [XXX] + MyPackage v0.0.0 [`SOME_PATH/MyPackage.jl`]

Check that you can see your package

(v1.0) pkg> status
    Status `~/.julia/environments/v1.0/Project.toml`
  ...
  [XXX] MyPackage v0.0.0 [`SOME_PATH/MyPackage.jl`]
  ...

Check that everything passes according to your (evil) plan.

   Testing MyPackage
 Resolving package versions...
    Status `/tmp/tmpO7CsSr/Manifest.toml`
  [XXX] MyPackage v0.0.0 [`SOME_PATH/MyPackage.jl`]
  ...
Test Summary:   | Pass  Total
Subset of tests |    1      1
   Testing MyPackage tests passed 

When you’re done with your package, you can rm MyPackage to remove your package from
consideration without deleting the code.

If your package was already released, then it’ll have a different version number. Other
differences may apply.