diff --git a/src/changelog.rst b/src/changelog.rst
index dc0ff4bb..6327b484 100644
--- a/src/changelog.rst
+++ b/src/changelog.rst
@@ -18,6 +18,31 @@ with the change that has been applied due to it.
just the language changes that had an impact to the FLS. See the `release
notes`_ for a full list of changes.
+Language changes in Rust 1.80.0
+-------------------------------
+
+* `Document maximum allocation size `_
+
+ * New paragraphs: :p:`fls_CUJyMj0Sj8NS`, :p:`fls_kaomYy0Ml4Nh`, :p:`fls_B5cmkWfD5GNt`, :p:`fls_oqhQ62mDLckN`, :p:`fls_uhwpuv6cx4ip`, :p:`fls_xuuFKmm181bs`
+
+* `Allow zero-byte offsets and ZST read/writes on arbitrary pointers `_
+
+ * No change: this previous restriction is not specified in the FLS
+
+* `Support C23's variadics without a named parameter `_
+
+ * No change: this previous restriction is not specified in the FLS
+
+* `Stabilize `exclusive_range_pattern` feature `_
+
+ * Changed syntax: :s:`RangePattern`
+
+ * New syntax: :s:`ExclusiveRangePattern`
+
+ * Changed paragraph: :p:`fls_8Q6NfRx4j5V7`
+
+ * New paragraphs: :p:`fls_3PyquOKjA7SI`, :p:`fls_8bdOqkO1NuJW`, :p:`fls_EDL1Pi56KQ2H`
+
Language changes in Rust 1.79.0
-------------------------------
diff --git a/src/patterns.rst b/src/patterns.rst
index c4317bf6..4c8fe97c 100644
--- a/src/patterns.rst
+++ b/src/patterns.rst
@@ -433,6 +433,7 @@ Range Patterns
RangePattern ::=
HalfOpenRangePattern
| InclusiveRangePattern
+ | ExclusiveRangePattern
| ObsoleteRangePattern
HalfOpenRangePattern ::=
@@ -441,6 +442,9 @@ Range Patterns
InclusiveRangePattern ::=
RangePatternLowBound $$..=$$ RangePatternHighBound
+ ExclusiveRangePattern ::=
+ RangePatternLowBound $$..$$ RangePatternHighBound
+
ObsoleteRangePattern ::=
RangePatternLowBound $$...$$ RangePatternHighBound
@@ -471,6 +475,10 @@ A :t:`half-open range pattern` is a :t:`range pattern` with only a
An :t:`inclusive range pattern` is a :t:`range pattern` with both a
:t:`range pattern low bound` and a :t:`range pattern high bound`.
+:dp:`fls_3PyquOKjA7SI`
+An :t:`exclusive range pattern` is a :t:`range pattern` with both a
+:t:`range pattern low bound` and a :t:`range pattern high bound`.
+
:dp:`fls_akf9x5r6e0ta`
An :t:`obsolete range pattern` is a :t:`range pattern` that uses obsolete syntax
to express an :t:`inclusive range pattern`.
@@ -494,6 +502,10 @@ when the context is a :t:`slice pattern`.
The :t:`range pattern low bound` of an :t:`inclusive range pattern` shall be
less than or equal to its :t:`range pattern high bound`.
+:dp:`fls_8bdOqkO1NuJW`
+The :t:`range pattern low bound` of an :t:`exclusive range pattern` shall be
+less than to its :t:`range pattern high bound`.
+
:dp:`fls_s2b5n4snc4d7`
An :t:`obsolete range pattern` is equivalent to an :t:`inclusive range pattern`.
@@ -508,11 +520,11 @@ The :t:`[type]s` of the :t:`range pattern low bound` and the
:dp:`fls_3js1645tgh31`
The :t:`type` of a :t:`range pattern` is determined as follows:
-* :dp:`fls_wfqrbwrogjnq`
- If the :t:`range pattern` is expressed as an :t:`inclusive range pattern` or
- an :t:`obsolete range pattern`, then the :t:`type` is the :t:`unified type` of
- the :t:`[type]s` of the :t:`range pattern low bound` and the
- :t:`range pattern high bound`.
+* :dp:`fls_8Q6NfRx4j5V7`
+ If the :t:`range pattern` is expressed as an :t:`inclusive range pattern`, an
+ :t:`exclusive range pattern`, or an :t:`obsolete range pattern`, then the
+ :t:`type` is the :t:`unified type` of the :t:`[type]s` of the
+ :t:`range pattern low bound` and the :t:`range pattern high bound`.
* :dp:`fls_rgr7t33s0m7m`
Otherwise the :t:`type` is the :t:`type` of the :t:`range pattern low bound`.
@@ -1423,6 +1435,12 @@ Range Pattern Matching
the inclusive range from the :t:`range pattern low bound` to the
:t:`range pattern high bound`, then matching succeeds.
+#. :dp:`fls_EDL1Pi56KQ2H`
+ If the :t:`range pattern` is expressed as an :t:`exclusive range pattern`
+ and the context :t:`value` is in the exclusive range from the
+ :t:`range pattern low bound` to the :t:`range pattern high bound`, then
+ matching succeeds.
+
#. :dp:`fls_n4t3xah1pk7i`
Otherwise matching fails.
diff --git a/src/values.rst b/src/values.rst
index f3849f8c..76c8a60c 100644
--- a/src/values.rst
+++ b/src/values.rst
@@ -14,6 +14,17 @@ Values
A :t:`value` is either a :t:`literal` or the result of a computation, that may
be stored in a memory location, and interpreted based on some :t:`type`.
+:dp:`fls_CUJyMj0Sj8NS`
+An :dt:`allocated object` is a :t:`value` stored at some memory address.
+
+:dp:`fls_kaomYy0Ml4Nh`
+An :t:`[allocated object]s` :dt:`base address` is the the memory address the
+object is stored.
+
+:dp:`fls_B5cmkWfD5GNt`
+An :t:`[allocated object]s` :dt:`memory size` is the number of bytes the object
+spans in memory from its :t:`base address`.
+
:dp:`fls_rixdyyc525xp`
Two :t:`[value]s` :t:`overlap` when
@@ -37,6 +48,20 @@ Two :t:`[value]s` :t:`overlap` when
It is undefined behavior to create a :t:`value` from uninitialized memory unless
the :t:`type` of the :t:`value` is a :t:`union type`.
+:dp:`fls_oqhQ62mDLckN`
+It is undefined behavior to create an :t:`allocated object` at :t:`base address`
+:c:`null`.
+
+:dp:`fls_uhwpuv6cx4ip`
+It is undefined behavior to create an :t:`allocated object` with :t:`memory
+size` ``size`` at a :t:`base address` ``base`` where ``base + size`` is greater
+than the architectures maximum :c:`usize` value.
+
+:dp:`fls_xuuFKmm181bs`
+It is undefined behavior to create an :t:`allocated object` with :t:`memory
+size` ``size`` where ``size`` is greater than the architectures maximum
+:c:`isize` value.
+
.. _fls_ixjc5jaamx84:
Constants