2021-09-02 06:49:59 -07:00
# Tint changes during Origin Trial
2022-03-21 09:09:17 -07:00
## Changes for M102
2022-03-23 02:11:03 -07:00
### New Features
* Parentheses are no longer required around expressions for if and switch statements [tint:1424 ](crbug.com/tint/1424 )
2022-03-31 15:30:10 -07:00
* Compound assignment statements are now supported. [tint:1325 ](https://crbug.com/tint/1325 )
2022-04-05 14:01:09 -07:00
* The colon in case statements is now optional. [tint:1485 ](crbug.com/tint/1485 )
2022-03-23 02:11:03 -07:00
2022-03-21 09:09:17 -07:00
### Breaking changes
2022-03-28 07:31:22 -07:00
* Struct members are now separated by commas. [tint:1475 ](crbug.com/tint/1475 )
2022-03-21 09:09:17 -07:00
* The `@block` attribute has been removed. [tint:1324 ](crbug.com/tint/1324 )
2022-03-21 09:09:17 -07:00
* The `@stride` attribute has been removed. [tint:1381 ](crbug.com/tint/1381 )
2022-03-21 09:09:17 -07:00
* Attributes using `[[attribute]]` syntax are no longer supported. [tint:1382 ](crbug.com/tint/1382 )
2022-03-21 09:09:17 -07:00
* The `elseif` keyword is no longer supported. [tint:1289 ](crbug.com/tint/1289 )
2022-03-21 09:09:17 -07:00
2022-03-30 10:57:39 -07:00
### Deprecated Features
* The `smoothStep()` builtin has been renamed to `smoothstep()` . [tint:1483 ](crbug.com/tint/1483 )
2022-02-18 13:47:24 -08:00
## Changes for M101
### New Features
* Tint now supports unicode identifiers. [tint:1437 ](crbug.com/tint/1437 )
2022-03-04 16:39:14 -08:00
### Breaking changes
* The `isNan()` , `isInf()` , `isFinite()` , and `isNormal()` builtins have been removed. [tint:1312 ](https://crbug.com/tint/1312 )
2022-01-24 17:01:39 -08:00
## Changes for M100
### Breaking changes
* The `@interpolate(flat)` attribute must now be specified on integral user-defined IO. [tint:1224 ](crbug.com/tint/1224 )
2022-02-01 09:21:52 -08:00
* The `ignore()` intrinsic has been removed. Use phoney-assignment instead: `ignore(expr);` -> `_ = expr;` .
2022-02-02 16:12:52 -08:00
* `break` statements in `continuing` blocks are now correctly validated.
2022-01-24 17:01:39 -08:00
2022-02-14 13:56:06 -08:00
### New Features
* Module-scope declarations can now be declared in any order. [tint:1266 ](crbug.com/tint/1266 )
2022-02-15 08:36:57 -08:00
* The `override` keyword and `@id()` attribute for pipeline-overridable constants are now supported, replacing the `@override` attribute. [tint:1403 ](crbug.com/tint/1403 )
2022-02-14 13:56:06 -08:00
2021-12-09 14:53:14 -08:00
## Changes for M99
2022-01-14 09:16:32 -08:00
### Breaking changes
Obviously infinite loops (no condition, no break) are now a validation error.
2021-12-09 14:53:14 -08:00
### Deprecated Features
2022-01-04 12:06:49 -08:00
The following features have been deprecated and will be removed in M102:
* The `[[block]]` attribute has been deprecated. [tint:1324 ](https://crbug.com/tint/1324 )
2022-01-19 14:46:57 -08:00
* Attributes now use the `@decoration` syntax instead of the `[[decoration]]` syntax. [tint:1382 ](https://crbug.com/tint/1382 )
* `elseif` has been replaced with `else if` . [tint:1289 ](https://crbug.com/tint/1289 )
2022-01-20 14:11:07 -08:00
* The `[[stride]]` attribute has been deprecated. [tint:1381 ](https://crbug.com/tint/1381 )
2021-12-09 14:53:14 -08:00
### New Features
* Vector and matrix element type can now be inferred from constructor argument types. [tint:1334 ](https://crbug.com/tint/1334 )
2022-01-05 12:11:00 -08:00
* Added builtins `degrees()` and `radians()` for converting between degrees and radians. [tint:1329 ](https://crbug.com/tint/1329 )
2022-01-06 10:11:01 -08:00
* `let` arrays and matrices can now be dynamically indexed. [tint:1352 ](https://crbug.com/tint/1352 )
2022-01-19 07:55:56 -08:00
* Storage and Uniform buffer types no longer have to be structures. [tint:1372 ](crbug.com/tint/1372 )
2022-01-19 10:11:17 -08:00
* A struct declaration does not have to be followed by a semicolon. [tint:1380 ](crbug.com/tint/1380 )
2021-12-09 14:53:14 -08:00
2022-01-06 13:32:41 -08:00
### 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 ](https://crbug.com/tint/1364 )
2021-11-04 12:55:57 -07:00
## Changes for M98
### Breaking Changes
* Taking the address of a vector component is no longer allowed.
2021-11-26 01:56:19 -08:00
* Module-scope declarations can no longer alias a builtin name. [tint:1318 ](https://crbug.com/tint/1318 )
2021-12-03 09:51:48 -08:00
* It is now an error to call a function either directly or transitively, from a loop continuing block, that uses `discard` . [tint:1302 ](https://crbug.com/tint/1302 )
2021-11-04 12:55:57 -07:00
2021-11-23 10:57:57 -08:00
### Deprecated Features
* The `isNan()` , `isInf()` , `isFinite()` and `isNormal()` builtins has been deprecated and will be removed in M101. [tint:1312 ](https://crbug.com/tint/1312 )
2021-11-05 11:37:16 -07:00
### New Features
2021-12-08 11:54:08 -08:00
* New texture gather builtins: `textureGather()` and `textureGatherCompare()` . [tint:1330 ](https://crbug.com/tint/1330 )
2021-11-23 12:45:51 -08:00
* Shadowing is now fully supported. [tint:819 ](https://crbug.com/tint/819 )
2021-11-05 11:37:16 -07:00
* The `dot()` builtin now supports integer vector types.
2021-11-22 07:24:16 -08:00
* Identifiers can now start with a single leading underscore. [tint:1292 ](https://crbug.com/tint/1292 )
2021-12-03 09:51:48 -08:00
* Control flow analysis has been improved, and functions no longer need to `return` if the statement is unreachable. [tint:1302 ](https://crbug.com/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 ](https://github.com/gpuweb/gpuweb/issues/2378 )
2021-11-05 11:37:16 -07:00
2021-11-23 13:46:48 -08:00
### Fixes
* Fixed an issue where using a module-scoped `let` in a `workgroup_size` may result in a compilation error. [tint:1320 ](https://crbug.com/tint/1320 )
2021-10-13 20:17:32 -07:00
## Changes for M97
2021-10-12 14:57:47 -07:00
### Breaking Changes
* Deprecated `modf()` and `frexp()` builtin overloads that take a pointer second parameter have been removed.
2021-10-14 03:10:45 -07:00
* Deprecated texture builtin functions that accepted a `read` access controlled storage texture have been removed.
* Storage textures must now only use the `write` access control.
2021-10-12 14:57:47 -07:00
2021-10-21 23:23:12 -07:00
### Deprecated Features
* The `ignore()` builtin has been replaced with phony-assignment. [gpuweb#2127 ](https://github.com/gpuweb/gpuweb/pull/2127 )
2021-10-21 02:39:13 -07:00
### New Features
* `any()` and `all()` now support a `bool` parameter. These simply return the passed argument. [tint:1253 ](https://crbug.com/tint/1253 )
2021-10-21 13:36:04 -07:00
* Call statements may now include functions that return a value (`ignore()` is no longer needed).
2021-10-21 16:08:44 -07:00
* 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.
2021-10-25 12:20:31 -07:00
* Matrix construction from scalar element values is now supported.
2021-10-21 02:39:13 -07:00
2021-10-20 09:12:33 -07:00
### Fixes
* Swizzling of `vec3` types in `storage` and `uniform` buffers has been fixed for Metal 1.x. [tint:1249 ](https://crbug.com/tint/1249 )
2021-10-25 04:00:44 -07:00
* Calling a function that returns an unused value no longer produces an FXC compilation error. [tint:1259 ](https://crbug.com/tint/1259 )
2022-01-05 13:03:10 -08:00
* `abs()` fixed for unsigned integers on SPIR-V backend
2021-10-20 09:12:33 -07:00
2021-09-02 06:49:59 -07:00
## Changes for M95
### New Features
2021-10-01 01:41:55 -07:00
2021-09-02 06:49:59 -07:00
* The size of an array can now be defined using a non-overridable module-scope constant
2021-09-13 10:11:58 -07:00
* The `num_workgroups` builtin is now supported.
2021-09-08 06:46:51 -07:00
### Fixes
2021-10-01 01:41:55 -07:00
* Hex floats: now correctly errors when the magnitude is non-zero, and the exponent would cause overflow. [tint:1150 ](https://crbug.com/tint/1150 ), [tint:1166 ](https://crbug.com/tint/1166 )
2021-10-12 14:57:47 -07:00
* Identifiers beginning with an underscore are now correctly rejected. [tint:1179 ](https://crbug.com/tint/1179 )