A summary of the changes introduced in each new version of PkgGraph
.
The version numbers roughly follow SemVer (expand for details)
The version format is major.minor.patch
,
with the latter two '0
' if not specified.
For versions ≥ v1
, we try to guarantee that minor
version increases
are not breaking, i.e. that they are backwards compatible.
Before v1
(so at v0.x
), minor versions may be (and mostly are) breaking.
major
version increases are breaking, i.e. they can make existing
code error.
patch
versions are for e.g. bugfixes.
With thanks to Keep a Changelog for the format and inspiration.
{no changes yet}
- New keyword argument
time
, to measure import times of dependencies, and display them in the graph- Example:
depgraph_web(:MyPkg, time = true)
time
is passed on to the new internal functiondepgraph_as_dotstr
- Uses the
@time_imports
macro, introduced in Julia 1.8- Hence,
time
is not supported for Julia 1.6 and 1.7
- Hence,
- Makes use of the new internal function
time_imports
, which runs@time_imports using MyPkg
in a new process, and parses the output.
- Example:
- New keyword argument
faded
(seedepgraph_as_dotstr
andto_dot_str
)- Packages in the standard library are now faded out, by default.
To get the old behaviour back, passfaded = false
to the end-user functions.
- Packages in the standard library are now faded out, by default.
depgraph_image
:- The output directory is now a keyword (
dir
), instead of a positional argument - New keyword argument
post
, to allow disabling of the SVG post-processing. By default,post = true
, and the SVG is still post-processed like before, to add automatic dark & light mode switching (seeSVG.add_darkmode
)
- The output directory is now a keyword (
- A bug preventing the package from precompiling when more than one registry is registered has been fixed.
- Rename and export the end-user API functions:
PkgGraph.open
→depgraph_web
PkgGraph.create
→depgraph_image
- Keyword
mode=:dark
renamed todark=true
(default is still light-mode i.e.dark=false
) depgraph_image
: default background colour is now:white
iffmt=:png
(which is the default format)- Why?
(1). PNG is default, because the default Windows image viewer allows you to pan zoom PNGs. Not so with SVGs (which open in Firefox, which has no image panning)
(2). See note on white bg and darkmode in docs>Settings>bg
- Default background colour is still
:transparent
forfmt=:svg
- Why?
Internals
module removed and split up into different submodules (DotString
,DepGraph
, …)Options
struct removed (→ no more duplication of documentation for kwargs; we now refer todepgraph
andto_dot_str
's docstrings directly).
- Remove support for Julia 1.6.
(Due to registry crawling feature in 0.4; registry API is too different in 1.6)
- Remove limitation "package must be installed in active project".
Any package in the General registry (and standard library) can now be
queried from anywhere.
- This (re)introduced dependencies: Pkg (a big one; but stdlib), and UUIDS.
- Dark-mode option for all generated images
(not just local SVGs; also PNGs and webapp URLs)- Pass the
mode=:dark
keyword argument toopen
andcreate
for this. - There is also a new
bg
option to configure the background color (default is transparent. But white is sometimes a good idea; see docs). - Locally-generated SVGs still get both a light and a dark theme, using a CSS media
query (
prefers-color-scheme
).
- Pass the
Infra changes
- Add LiveServer.jl,
docs/serve.jl
, anddocs/localdev/Project.toml
, for local doc-builds- When editing docstrings, you might still want to use Revise and do
include("docs/make.jl")
manually; it seems to not work well with LiveServer.
- When editing docstrings, you might still want to use Revise and do
docs/scripts/
inmake.jl
are less verbose now
- Add light & dark mode CSS to generated SVGs
- This introduced a new dependency, EzXML
PkgGraph.create
:- Allow passing
open=false
to only create the image, and not automatically open it with the default image viewer too. - The file format,
fmt
, is a keyword argument again (not positional)
- Allow passing
- Shorten keyword arguments for excluding JLLs and standard library packages:
→include_jll
jll
→include_stdlib
stdlib
- New functions
adjacency_matrix
,node_index
, andas_graphsjl_input
(→ easier Graphs.jl interop).
- Rename the end-user API functions:
depgraph
→PkgGraph.open
depgraph_local
→PkgGraph.create
- Organize API, with new
PkgGraph.Internals
module - New options
include_jll
andinclude_stdlib
, to be able to filter binary 'JLL' dependencies and packages from the standard library. This can significantly declutter the graphs for packages with many such dependencies. Thanks @KristofferC - Add backwards support for Julia 1.6
- Removed
Pkg
dependency - Transparent background for generated images (instead of solid white)
- When no deps: a single node with "no deps" is drawn (instead of nothing)
- User settings (
base_url
,style
) are now set via kwargs and not mutating globals - {Docs & infra}
- Actual example in ReadMe
- Lots (lots) of doc writing
- Plus custom markdown (pre)processing scripts :)
- Add this changelog
- The first automated tests were added.
And they found bugs:PkgGraph.rendering_url = …
does not work.- So we go the RefValue way.
→ newset_rendering_url(…)
end-user function.
- So we go the RefValue way.
- When requested package is not in active project:
Error during creation of error message.- Fix (scroll up a bit).
- Pin down minimum supported Julia version (
1.2→ 1.7)- 1.6 would be possible, but a bit of work (see commit message)
Repo at code-import (2022-12-09)
PkgGraph.jl started with code imported from tfiers/julia-sketches
(pkg-deps-graphs
).
That project was started on 2022-11-06 (commit history).