From 8d29f8b5dd082dabe67dd0997a8b07d5bc65aee7 Mon Sep 17 00:00:00 2001 From: Thomas Lively Date: Tue, 3 Nov 2026 11:05:31 -0800 Subject: [PATCH] [spec] Add custom descriptors to change history Add a Custom Descriptors section and proposal link to the Change History appendix summarizing descriptor types, exact concrete heap types, exact function external types and defined functions, exact allocation and ref.func result types, relaxed br_on_cast, and the new descriptor instructions. --- document/core/appendix/changes.rst | 51 ++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/document/core/appendix/changes.rst b/document/core/appendix/changes.rst index 0efcee2ae..8d0973260 100644 --- a/document/core/appendix/changes.rst +++ b/document/core/appendix/changes.rst @@ -661,6 +661,54 @@ mirroring the role of custom sections in the binary format. [#proposal-annot]_ * Defined :ref:`custom annotation ` :math:`\text{(@custom~"\dots")}` to represent arbitrary :ref:`custom sections ` in the text format +.. index:: descriptor type, describes, descriptor, exact, exact type use, exact defined type, structure type, reference type, heap type, external type, function, import, instruction +.. _extension-custom-descriptors: + +Custom Descriptors +.................. + +Added custom descriptors for :ref:`structure types ` and :ref:`exact ` concrete :ref:`heap types `. [#proposal-custom-descriptors]_ + +* Extended :ref:`sub types ` with :ref:`descriptor types ` (:math:`\TDESCRIBES~\typeuse` and :math:`\TDESCRIPTOR~\typeuse` clauses) associating :ref:`structure types ` with custom descriptor types + +* Extended concrete :ref:`heap types ` with :ref:`exact ` :ref:`type uses ` :math:`\EXACT~\typeuse` and corresponding :ref:`subtyping ` rules + +* Extended function :ref:`external types ` with optional exactness (:math:`\XTFUNC~\EXACT^?~\typeuse`) and refined :ref:`function validation ` to classify defined functions with :ref:`exact defined types ` + +* Refined result types of :ref:`reference `, :ref:`structure `, and :ref:`array ` allocation instructions to produce :ref:`exact ` references: + + - |REFFUNC| (for defined functions and exact function imports) + - |STRUCTNEW| + - |STRUCTNEWDEFAULT| + - |ARRAYNEW| + - |ARRAYNEWDEFAULT| + - |ARRAYNEWFIXED| + - |ARRAYNEWDATA| + - |ARRAYNEWELEM| + +* Relaxed :ref:`validation ` of :ref:`branch-on-cast instructions ` so the target type need not be a subtype of the operand type: + + - |BRONCAST| + - |BRONCASTFAIL| + +* New :ref:`structure instructions `: + + - |STRUCTNEWDESC| + - |STRUCTNEWDEFAULTDESC| + +* New :ref:`reference ` and :ref:`control ` instructions: + + - |REFGETDESC| + - |REFCASTDESCEQ| + - |BRONCASTDESCEQ| + - |BRONCASTDESCEQFAIL| + +* Extended set of :ref:`constant instructions ` with: + + - |STRUCTNEWDESC| + - |STRUCTNEWDEFAULTDESC| + + .. [#proposal-extconst] https://github.com/WebAssembly/spec/tree/main/proposals/extended-const/ @@ -687,3 +735,6 @@ mirroring the role of custom sections in the binary format. [#proposal-annot]_ .. [#proposal-annot] https://github.com/WebAssembly/spec/tree/main/proposals/annotations/ + +.. [#proposal-custom-descriptors] + https://github.com/WebAssembly/spec/tree/main/proposals/custom-descriptors/