JuliaGraphics / FreeTypeAbstraction.jl

A Julian abstraction layer over FreeType.jl
Other
25 stars 20 forks source link

Dependencies #74

Closed t-bltg closed 1 year ago

t-bltg commented 1 year ago

Consider the following dependency tree:

julia> using PkgDependency
julia> PkgDependency.tree("FreeTypeAbstraction")
dependency tree ```julia FreeTypeAbstraction v0.10.0 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │ ├── FreeType v4.0.0 │ ├── CEnum v0.4.2 │ └── FreeType2_jll v2.10.4+0 │ ├── JLLWrappers v1.4.1 │ │ └── Preferences v1.3.0 │ │ └── TOML v1.0.0 │ ├── Pkg v1.8.0 │ │ ├── Downloads v1.6.0 │ │ │ ├── LibCURL v0.6.3 │ │ │ │ ├── MozillaCACerts_jll v2022.2.1 │ │ │ │ └── LibCURL_jll v7.84.0+0 │ │ │ │ ├── LibSSH2_jll v1.10.2+0 │ │ │ │ │ └── MbedTLS_jll v2.28.0+0 │ │ │ │ ├── MbedTLS_jll v2.28.0+0 (*) │ │ │ │ ├── nghttp2_jll v1.48.0+0 │ │ │ │ └── Zlib_jll v1.2.12+3 │ │ │ ├── NetworkOptions v1.2.0 │ │ │ └── ArgTools v1.1.1 │ │ ├── Tar v1.10.0 │ │ │ ├── SHA v0.7.0 │ │ │ └── ArgTools v1.1.1 (*) │ │ ├── SHA v0.7.0 (*) │ │ ├── p7zip_jll v17.4.0+0 │ │ └── TOML v1.0.0 (*) │ ├── Bzip2_jll v1.0.8+0 │ │ ├── JLLWrappers v1.4.1 (*) │ │ └── Pkg v1.8.0 (*) │ └── Zlib_jll v1.2.12+3 (*) ├── ColorVectorSpace v0.9.9 │ ├── ColorTypes v0.11.4 │ │ └── FixedPointNumbers v0.8.4 │ ├── TensorCore v0.1.1 │ ├── SpecialFunctions v2.1.7 │ │ ├── IrrationalConstants v0.1.1 │ │ ├── ChainRulesCore v1.15.5 │ │ │ └── Compat v3.46.0 │ │ │ ├── Pkg v1.8.0 (*) │ │ │ └── SHA v0.7.0 (*) │ │ ├── LogExpFunctions v0.3.18 │ │ │ ├── IrrationalConstants v0.1.1 (*) │ │ │ ├── ChainRulesCore v1.15.5 (*) │ │ │ ├── ChangesOfVariables v0.1.4 │ │ │ │ └── ChainRulesCore v1.15.5 (*) │ │ │ ├── DocStringExtensions v0.8.6 │ │ │ └── InverseFunctions v0.1.7 │ │ ├── OpenLibm_jll v0.8.1+0 │ │ └── OpenSpecFun_jll v0.5.5+0 │ │ ├── JLLWrappers v1.4.1 (*) │ │ ├── Pkg v1.8.0 (*) │ │ └── CompilerSupportLibraries_jll v0.5.2+0 │ └── FixedPointNumbers v0.8.4 (*) ├── Colors v0.12.8 │ ├── ColorTypes v0.11.4 (*) │ ├── Reexport v1.2.2 │ └── FixedPointNumbers v0.8.4 (*) └── GeometryBasics v0.4.3 ├── IterTools v1.4.0 ├── StaticArrays v1.5.6 │ └── StaticArraysCore v1.3.0 ├── Tables v1.7.0 │ ├── DataAPI v1.10.0 │ ├── OrderedCollections v1.4.1 │ ├── IteratorInterfaceExtensions v1.0.0 │ ├── DataValueInterfaces v1.0.0 │ └── TableTraits v1.0.1 │ └── IteratorInterfaceExtensions v1.0.0 (*) ├── EarCut_jll v2.2.3+0 │ ├── JLLWrappers v1.4.1 (*) │ └── Pkg v1.8.0 (*) ├── StructArrays v0.6.12 │ ├── DataAPI v1.10.0 (*) │ ├── StaticArraysCore v1.3.0 (*) │ ├── Tables v1.7.0 (*) │ └── Adapt v3.4.0 └── GeoInterface v1.0.1 └── Extents v0.1.1 ```

From the previous tree, a consequent dependency is GeometryBasics (with induced artifacts e.g. EarCut_jll, Tables, StructArrays, ...), which seems an overkill for the usage of a few Vec, Vec2f, Rect2f in FreeTypeAbstraction.

Would you consider a PR in order to remove the GeometryBasics dependency here, or as an alternative splitting GeometryBasics into a low dependencies GeometryBasicsCore (or GeometryBasicsTypes) and the full GeometryBasics ?

Xref https://github.com/JuliaPlots/UnicodePlots.jl/issues/291.

jkrumbiegel commented 1 year ago

Sounds good to me, core packages seem to be all the rage lately.. I wonder if ColorVectorSpaces is necessary as well, it might be used for some convenience with render functions but that cannot be a lot of code.