-
Every subtype of a parametric parent must now declare the parent's type parameters. A bare name no longer silently inherits them, and omitting them elsewhere raises a
@typeserror naming the type instead of anUndefVarErrorfrom the generated code:@types Animal{T} > (Mollusc,) # before: abstract type Mollusc{T} <: Animal{T} @types Animal{T} > (Mollusc{T},) # after @types Animal{T} > (Cat(lives::Int),) # before: UndefVarError: `T` not defined @types Animal{T} > (Cat{T}(lives::Int),) # after
-
A bare name inside a
@typeshierarchy now declares an abstract type instead of a zero-field concrete struct, matching what a bare name already meant at the top level (@types A). Parentheses now consistently mark concrete types: useName()orName{T}()for a zero-field struct. A bare name still inherits the parent's type parameters when it declares none.To migrate, add parentheses to any bare subtype you construct:
@types Shape > (Point, Line) # before: two zero-field structs @types Shape > (Point(), Line()) # after
- A custom docstring placed before a nested
>group or a bare name is no longer silently discarded; it is attached to the generated abstract type. - The Docs workflow now deploys versioned docs on
v*tag pushes. It previously listened only for published releases, but TagBot creates those withGITHUB_TOKENand GitHub never starts a workflow run from a token-authored event, so no released version was ever published togh-pages.
- Sync CI and docs workflows with JuliaPackageTemplate: Julia
ltsin the test matrix, a docs render smoke test, and a singleCI successaggregate check for branch protection.
- Add computed constructors to
@types: new syntaxName(args...) = new(field::T = expr, ...)lets struct fields differ from constructor arguments. Works standalone, with<:subtypes, in hierarchies, parametric types, and mutable variants.
- Fix method overwrite error when using
@mutablewith@constfields and default values (keyword constructor now uses all-keyword args to avoid dispatch overlap)
- Fix parametric types with default values or keyword arguments (outer constructors with
whereclauses for proper type inference)
- Support bare parametric subtypes in
@typeshierarchies (e.g.Multi{T}as a child type) - Support extending existing abstract types in
@typeshierarchies
- Add autoshow support (automatic display of type hierarchies)
- Add auto-generated and user-defined docstrings to
@typeshierarchies
- Remove
@show_typesmacro (replaced by autoshow)
- Add
@qtypemacro for defining structs with positional constructors - Add
@abstractmacro for defining abstract types - Add
@typesmacro for displaying type hierarchies - Add
@mutableper-subtype and@constfield annotations for mutable struct support - Add
@show_typesmacro for displaying type hierarchies - Support default field values and keyword argument constructors
- Add README with usage examples and comparison table against similar packages
- Add package comparison table with per-package code examples and source line counts