# This month in Julia World - 2026-08

**URL:** <https://discourse.julialang.org/t/this-month-in-julia-world-2026-08/139157>\
**Category:** Newsletter\
**Created:** [September 2, 2026, 7:24am UTC](https://discourse.julialang.org/t/this-month-in-julia-world-2026-08/139157 "2026-09-02T07:24:09Z")\
**Posts on this page:** 1\
**Showing post:** 14

<div class="post-metadata">

**Author:** ![frankwswang](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/frankwswang/32/18561_2.png) [@frankwswang](https://discourse.julialang.org/u/frankwswang)\
**Post date:** [September 8, 2026, 8:25pm UTC](https://discourse.julialang.org/t/this-month-in-julia-world-2026-08/139157/14 "2026-09-08T20:25:38Z")

</div>

> [@jakobnissen](#):
>
> - Thanks to [a PR by Keno](https://github.com/JuliaLang/julia/pull/62265), this may change with the introduction of `Core.Epsilon`: A marker which, when specified as the lower bound of a `TypeVar`, includes every subtype except `Bottom`. If this gets merged, we could now write `element_type(::Type{S}) where {Core.Epsilon <: S <: AbstractSet{T}} = T`. The compiler team is also discussing making `X{<:T}` desugar to `X{Y} where {Core.Epsilon <: Y <: T}`, which would solve this problem automatically in existing codebases, but whether that will happen depends on how breaking it is in practice.

Personally, I hope this PR will also reignite core developers’ attention to some of the lasting semantic issues with type parameters (i.e., `TypeVar`) in Julia (see this [post](https://discourse.julialang.org/t/rfc-add-a-type-called-anytype-thats-subtyped-by-all-other-types-except-any/93956) and the [original issue](https://github.com/JuliaLang/julia/issues/9580)). Technically, we don’t have well-defined semantics for `<:` when it applies to those parameters in a parametric type:

```julia-auto
julia> const MyArray{N<:Any} = Array{Int, N}
Array{Int64}

julia> MyArray{1} <: Array
true

julia> 1 <: Any
ERROR: TypeError: in <:, expected Type, got a value of type Int64

julia> foo(::MyArray{N}, num) where {N<:Any} = (N === num)
foo (generic function with 1 method)

julia> foo([0], 1)
true

```

If we are gonna define a lower bound `Core.Epsilon` to exclude `Union{}`, we might as well also define an upper bound `Core.AnyTypeVar` that consistently supertypes type parameters that evaluate to bit-type variables that can serve as a type parameter.

---

_[View the full topic](https://discourse.julialang.org/t/this-month-in-julia-world-2026-08/139157)._
