Is there some minimal list of packages (almost) all users should use?

I do see e.g. brand new ConcreateStructs.jl but it may be too new, so I have established packages in mind at least.

I’m not thinking of e.g. some statistics package, but to add language features (and well Revise.jl), not something you would already get from say an IDE. E.g. people from coming from Scala would miss pattern matching, and I know it exists (in more than one package). I also see Underscores.jl and other similar.

Could I rely on the manual to document most of the default go-to packages? Maybe it does already (I know it mentions Cxx.jl and Cxxwrap.jl, ad probably mentions DataStructures.jl and possibly OrderedCollections.jl).

Maybe a subset of what JuliaPro included (or more? that curated list is likely outdated and had other priority?).

Note, I see:

JuliaPro now ships with the General registry […]

We have stopped shipping the JuliaPro registry. This registry used to be the default, and its purpose was to provide a slower, more stable, upgrade path for packages. However, we found that this causes confusion, and our plan is to provide this functionality via our JuliaTeam product. JuliaPro users will use the General registry by default. In additon we now ship an additional registry called JuliaComputingRegistry .

Since the default julia installation comes with a lot of stuff, you can do very much without any packages at all so I would say there isn’t really a set of “required” packages. Of course, there are some nice ones that are useful in a lot of cases. Some of my favourites are:

  • Revise.jl
  • Debugger.jl
  • StaticArrays.jl
  • Parameters.jl
  • Cthulu.jl
  • SnoopCompile.jl
  • TimerOutputs.jl (self advertisement)
8 Likes

To continue the self-advertisement of Kristoffer, I’m also very fond of his OhMyREPL.jl package, and have it loaded by default.

3 Likes

For working with data:

  • DataFrames.jl
  • CSV.jl
  • JDF.jl (fast and compact, but Julia-specific binary storage format for tabular data)
  • Plots.jl (or one of the alternative plotting packages)
  • Pluto.jl / IJulia.jl (notebooks)
  • BenchmarkTools.jl
1 Like

BenchmarkTools and Profileview are the two I couldn’t live without.

3 Likes

To a certain extent yes (eg it mentions Revise.jl), but beyond a very minimal core there is no universal agreement about a list “everyone” should use. Even the standard libraries don’t necessarily get used by every single Julia user.

I would not worry about this and just research and add packages on demand. Eg you want to debug performance, so add Cthulu etc.

1 Like

There could be two separate lists, your is more about tools to help developers that would not be used in your final package (excluding StaticArrays) or script.

I guess I opened the door to that with mentioning Revise too “to add language features (and well Revise.jl)”.

What I had in mind are tools like Match.jl (the go-to-tool for pattern matching, right? while there are other options), and others adding “language features”, i.e. what would be built into other languages and people might miss out on as they simply do not know of. I suppose LispSyntax.jl would e.g. not make the cut for a minimal list. :slight_smile:

There are also several threading related packages, I didn’t check if mentioned in Julia’s docs.

It might be interesting to point out that at the end of triage yesterday, we were talking about the possibility of adding a few extra things to InteractiveUtils (Cuthulu, BenchmarkTools, and Profile were 3 of them). This would be combined with moving a lot of code that currently always gets loaded (eg Pkg) and make it only get loaded with InteractiveUtills. The net result of this would be a much smaller startup time for non-interactive uses (and a much smaller sysimage), while improving the plug and play nature of the repl by including a few of the batteries you were going to import anyway.

3 Likes