# Julia's Release Process

**URL:** https://discourse.julialang.org/t/julias-release-process/28122
**Category:** Internals & Design
**Created:** [August 28, 2019, 4:58pm UTC](https://discourse.julialang.org/t/julias-release-process/28122 "2019-08-28T16:58:10Z")
**Posts on this page:** 1
**Showing post:** 14

<div class="post-metadata">

### Author: ![tkf](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tkf/32/17635_2.png) [@tkf](https://discourse.julialang.org/u/tkf)
#### Post date: [September 2, 2019, 3:11am UTC](https://discourse.julialang.org/t/julias-release-process/28122/14 "2019-09-02T03:11:46Z")

</div>

> [@Tero\_Frondelius](#):
>
> Is it too narrow?

> [@pfitzseb](#):
>
> Consider e.g. `JSON.parse` or `Meta.parse`

or `Base.@propagate_inbounds` or `Base.@pure`…

I also want to add that it is not only too narrow but also not enough. For example, `show(io, "text/plain", x)` pretty-prints `x` in a human readable form. But is `Base`/stdlib allowed to improve readability? If the exact output is documented to be a stable API, it is impossible. (See also: [Version doctests · Issue #1050 · JuliaDocs/Documenter.jl · GitHub](https://github.com/JuliaDocs/Documenter.jl/issues/1050))

Another example is that, say there is a custom vector type in a stdlib:

```julia
struct CustomVector{T} <: AbstractVector{T}
    ...
end

```

is it backward compatible to add one more type parameter?

```julia
struct CustomVector{T, S} <: AbstractVector{T}
    ...
end

```

It is compatible for user defining function `f(::CustomVector{Int})` but it is not for the usecase like

```julia
struct MyStruct{T}
    x::CustomVector{T}
end

```

because the field `x` will be boxed when a type parameter is added. IMHO Julia documentation should explicitly say that parametrized struct type must never be considered concrete. This means that you need to write

```julia
struct MyStruct{T, X <: CustomVector{T}}
    x::X
end

```

when performance matters. It also would be nice that each struct docstring defines what type parameters are considered public. The rule “parametrized struct type is not concrete” lets implementers hide some type parameters as implementation details. Another approach would be to say that only abstract types should be used for dispatch.

---

_[View the full topic](https://discourse.julialang.org/t/julias-release-process/28122)._
