D言語のchangelogは https://dlang.org/changelog/ から確認できるようですが、changelog全体から特定の変更がいつあったのかを確認したいというような場合は1つずつ見ていくのが大変かもしれません。

なので、ファイルをダウンロードしてゆっくりと調べたい、というのがやりたいことです。

curl -s https://dlang.org/changelog/ \
  | xmllint --html --xpath "//*[contains(@class, 'subnav')]//ul//a/@href" 2>/dev/null - \
  | sed -e 's/href=//g' -e 's/"//g' -e 's/ /\'$'\n/g' -e 's/.html//g' \
  | xargs -I@ pandoc -f html -t markdown_strict -o @.md -s https://dlang.org/changelog/@.html

上記は、

ということをやっています。
(このコマンドを作るだけでもだいぶ時間かかりました…。)

あとはダウンロードしたファイルにgrepをかければ、確認したいことをゆっくり確認できます。

find . -name '*.md' | xargs grep -w 'variant' | sort
./2.006.md:-   Added the [std.variant](../phobos/std_variant.html) module.
./2.008.md:-   std.variant: Added documentation for variantArray
./2.029.md:    class="d_inlinecode donthyphenate notranslate">std.variant</span>
./2.032.md:    cannot get values from const variant
./2.041.md:    ICE(mtype.c) with associative arrays when std.variant is imported
./2.041.md:-   std.variant: now works with statically-sized arrays and const data
./2.060.md:    Segfault when comparing a VariantN to a non-variant type which it
./2.063.md:    Problem with phobos std.variant
./2.063.md:    Synopsis code in std.variant documentation throws an assertion error
./2.066.0.md:     std.variant.Variant Uses Deprecated .min Property in opArithmetic
./2.066.0.md:    "void has no value" in std.variant.Algebraic (affects D:YAML)
./2.066.0.md:    Problem with length property when using variant
./2.067.0.md:    \[REG2.067a\] Segmentation fault from std/variant.d:609
./2.068.0.md:    can't get an immutable value from a const std.variant.Variant
./2.068.0.md:    destructor called on garbage in std.variant
./2.068.0.md:    std.variant can violate memory safety
./2.069.0.md:    \[REG2.068.0\] std.variant.Algebraic interacts badly with string
./2.070.0.md:    evenChunks - std.range.chunks variant which slices range into N
./2.072.0.md:    opIndex doesn't work for const std.variant.Variant
./2.072.0.md:    std.variant.Variant can not be initialized with some struct
./2.074.0.md:    fallback handler for an empty variant:
./2.074.0.md:    std.variant.visit.](#std-variant-genericfunc)
./2.074.0.md:    to std.variant.visit, it is invoked for any type contained in the
./2.074.0.md:2.  <a href="#std-variant-genericfunc" id="std-variant-genericfunc" class="anchor" title="Permalink to this section">Allow a generic function for std.variant.visit.</a>
./2.079.0.md:    std.variant Variant/Algebraic: Can't store static arrays &gt;
./2.082.0.md:    length-inferring compile-time variant.](#std-array-asStatic)
./2.082.0.md:5.  <a href="#std-array-asStatic" id="std-array-asStatic" class="anchor" title="Permalink to this section">Added <span class="d_inlinecode donthyphenate notranslate">staticArray</span> to construct a static array from array / input range. Includes a length-inferring compile-time variant.</a>
./2.087.0.md:    std.variant.Variant equality comparison always returns false for
./2.087.1.md:    std.variant.VariantN does not work with a class that inherits from a

という感じで、variantの変遷が追えるかな、と。

参考