Tint changes during Origin Trial
Changes for M112
Breaking changes
- Most builtin functions that return a value can no longer be used as a call statement. tint:1844
- The sigmember of the return type offrexp()has been renamed tofract. tint:1766
- Calling a function with multiple pointer arguments that alias each other is now a error. tint:1675
- typedeprecation has been removed.- aliasmust be used now. tint:1812
- static_assertdeprecation has been removed.- const_assertmust now be used. tint:1807
Changes for M111
New features
- The workgroupUniformLoadbuiltin function is now supported. tint:1780
- The diagnosticdirective and@diagnosticattribute are now supported. tint:1809- The attribute is currently only supported on function declarations.
 
Breaking changes
- You may need to add parentheses to less-than or greater-than binary expressions that now parse as template lists. For example a(b<c, d>e)will need parentheses aroundb<cord>e. tint:1810.
- Uniformity analysis failures are now an error tint:880- The derivative_uniformitydiagnostic filter can be used to modify the severity if needed.
 
Deprecated Features
- The keyword to alias a type has been renamed from typetoalias. tint:1812
- static_asserthas been renamed to- const_assert. tint:1807
Changes for M110
Breaking changes
- The textureSampleLevel()overload fortexture_externalhas been removed. UsetextureSampleBaseClampToEdge(). tint:1671
Deprecated Features
- The sigmember of the return type offrexp()has been renamed tofract. tint:1757
- Calling a function with multiple pointer arguments that alias each other is now a warning, and will become an error in a future release. tint:1675
Changes for M109
Breaking changes
- textureDimensions(),- textureNumLayers()and- textureNumLevels()now return unsigned integers / vectors. tint:1526
- The @stageattribute has been removed. The short forms should be used instead (@vertex,@fragment, or@compute). tint:1503
- Module-scope letis now an error. Use module-scopeconstinstead. tint:1580
- Reserved words are now an error instead of a deprecation. tint:1463
- You may no longer use pointer parameters in workgroupaddress space. tint:1721
New features
- Uniformity analysis failures are warnings again tint:1728
- You can now call texture builtins with a mix of signed and unsigned integer arguments. tint:1733
Changes for M108
New features
- textureSampleBaseClampToEdge()has been implemented. tint:1671
Deprecated Features
- The external_textureoverload oftextureSampleLevel()has been deprecated. UsetextureSampleBaseClampToEdge()instead. tint:1671
Fixes
- Constant evaluation of type conversions where the value exceeds the limits of the target type have been fixed. tint:1707
Changes for M107
New features
Breaking changes
- Uniformity analysis failures are now an error tint:880
- Indexing an array, vector or matrix with a compile-time expression that's out-of-bounds is now an error tint:1665
Changes for M106
New features
- array()constructor can now infer type and count. tint:1628
- static_assertstatement has been added. tint:1625
Deprecated Features
- The list of reserved words has been sync'd to the WGSL specification. tint:1463
Changes for M105
New features
- Module-scope var<private>can now infer the storage type, like function-scopevar. tint:1584
- The acosh,asinh, andatanhbuiltin functions are now supported tint:1465
Breaking changes
- The smoothStep()builtin has been removed (usesmoothstepinstead). tint:1483
- Module-scope lethas been replaced with module-scopeconst. tint:1580- Note: Module-scope constdoes not support structure types. Usevar<private>if you need a module-scope structure type.
 
- Struct members can no longer be separated with semicolons (use commas instead). tint:1475
- Single scalar matrix constructors have been removed. These were never part of the WGSL spec. tint:1597
Deprecated Features
- The @stageattribute has been deprecated. The short forms should be used instead (@vertex,@fragment, or@compute). tint:1503
Changes for M104
New features
- Tint now supports abstract-numerics, removing the need to always suffix unsigned integers with utint:1504
- Parsing of @compute,@fragmentand@vertexadded.
Changes for M103
New features
- Produce warnings for when calling barriers, textureSample, and derivative builtins in non-uniform control flow tint:880
- Matrix identity constructors and constructors for a single scalar value are now supported tint:1545
Breaking changes
- Builtin atomicCompareExchangeWeakreturns a struct instead of a vec2. tint:1185
Changes for M102
New Features
- Parentheses are no longer required around expressions for if and switch statements tint:1424
- Compound assignment statements are now supported. tint:1325
- Postfix increment and decrement statements are now supported. tint:1488
- The colon in case statements is now optional. tint:1485
Breaking changes
- Struct members are now separated by commas. tint:1475
- The @blockattribute has been removed. tint:1324
- The @strideattribute has been removed. tint:1381
- Attributes using [[attribute]]syntax are no longer supported. tint:1382
- The elseifkeyword is no longer supported. tint:1289
Deprecated Features
- The smoothStep()builtin has been renamed tosmoothstep(). tint:1483
Changes for M101
New Features
- Tint now supports unicode identifiers. tint:1437
Breaking changes
- The isNan(),isInf(),isFinite(), andisNormal()builtins have been removed. tint:1312
Changes for M100
Breaking changes
- The @interpolate(flat)attribute must now be specified on integral user-defined IO. tint:1224
- The ignore()intrinsic has been removed. Use phoney-assignment instead:ignore(expr);->_ = expr;.
- breakstatements in- continuingblocks are now correctly validated.
New Features
- Module-scope declarations can now be declared in any order. tint:1266
- The overridekeyword and@id()attribute for pipeline-overridable constants are now supported, replacing the@overrideattribute. tint:1403
Changes for M99
Breaking changes
Obviously infinite loops (no condition, no break) are now a validation error.
Deprecated Features
The following features have been deprecated and will be removed in M102:
- The [[block]]attribute has been deprecated. tint:1324
- Attributes now use the @decorationsyntax instead of the[[decoration]]syntax. tint:1382
- elseifhas been replaced with- else if. tint:1289
- The [[stride]]attribute has been deprecated. tint:1381
New Features
- Vector and matrix element type can now be inferred from constructor argument types. tint:1334
- Added builtins degrees()andradians()for converting between degrees and radians. tint:1329
- letarrays and matrices can now be dynamically indexed. tint:1352
- Storage and Uniform buffer types no longer have to be structures. tint:1372
- A struct declaration does not have to be followed by a semicolon. tint:1380
Fixes
- Fixed an issue where for-loops that contain array or structure constructors in the loop initializer statements, condition expressions or continuing statements could fail to compile. tint:1364
Changes for M98
Breaking Changes
- Taking the address of a vector component is no longer allowed.
- Module-scope declarations can no longer alias a builtin name. tint:1318
- It is now an error to call a function either directly or transitively, from a loop continuing block, that uses discard. tint:1302
Deprecated Features
- The isNan(),isInf(),isFinite()andisNormal()builtins has been deprecated and will be removed in M101. tint:1312
New Features
- New texture gather builtins: textureGather()andtextureGatherCompare(). tint:1330
- Shadowing is now fully supported. tint:819
- The dot()builtin now supports integer vector types.
- Identifiers can now start with a single leading underscore.  tint:1292
- Control flow analysis has been improved, and functions no longer need to returnif the statement is unreachable. tint:1302
- Unreachable statements now produce a warning instead of an error, to allow WGSL code to be updated to the new analysis behavior. These warnings may become errors in the future gpuweb#2378
Fixes
- Fixed an issue where using a module-scoped letin aworkgroup_sizemay result in a compilation error. tint:1320
Changes for M97
Breaking Changes
- Deprecated modf()andfrexp()builtin overloads that take a pointer second parameter have been removed.
- Deprecated texture builtin functions that accepted a readaccess controlled storage texture have been removed.
- Storage textures must now only use the writeaccess control.
Deprecated Features
- The ignore()builtin has been replaced with phony-assignment. gpuweb#2127
New Features
- any()and- all()now support a- boolparameter. These simply return the passed argument. tint:1253
- Call statements may now include functions that return a value (ignore()is no longer needed).
- The interpolate(flat)attribute can now be specified on integral user-defined IO. It will eventually become an error to define integral user-defined IO without this attribute.
- Matrix construction from scalar element values is now supported.
Fixes
- Swizzling of vec3types instorageanduniformbuffers has been fixed for Metal 1.x. tint:1249
- Calling a function that returns an unused value no longer produces an FXC compilation error. tint:1259
- abs()fixed for unsigned integers on SPIR-V backend
Changes for M95
New Features
- The size of an array can now be defined using a non-overridable module-scope constant
- The num_workgroupsbuiltin is now supported.
Fixes
- Hex floats: now correctly errors when the magnitude is non-zero, and the exponent would cause overflow. tint:1150, tint:1166
- Identifiers beginning with an underscore are now correctly rejected.  tint:1179