2021-09-02 13:49:59 +00:00
# Tint changes during Origin Trial
2022-03-21 16:09:17 +00:00
## Changes for M102
2022-03-23 09:11:03 +00:00
### New Features
* Parentheses are no longer required around expressions for if and switch statements [tint:1424 ](crbug.com/tint/1424 )
2022-03-21 16:09:17 +00:00
### Breaking changes
2022-03-28 14:31:22 +00:00
* Struct members are now separated by commas. [tint:1475 ](crbug.com/tint/1475 )
2022-03-21 16:09:17 +00:00
* The `@block` attribute has been removed. [tint:1324 ](crbug.com/tint/1324 )
2022-03-21 16:09:17 +00:00
* The `@stride` attribute has been removed. [tint:1381 ](crbug.com/tint/1381 )
2022-03-21 16:09:17 +00:00
* Attributes using `[[attribute]]` syntax are no longer supported. [tint:1382 ](crbug.com/tint/1382 )
2022-03-21 16:09:17 +00:00
* The `elseif` keyword is no longer supported. [tint:1289 ](crbug.com/tint/1289 )
2022-03-21 16:09:17 +00:00
2022-02-18 21:47:24 +00:00
## Changes for M101
### New Features
* Tint now supports unicode identifiers. [tint:1437 ](crbug.com/tint/1437 )
2022-03-05 00:39:14 +00:00
### Breaking changes
* The `isNan()` , `isInf()` , `isFinite()` , and `isNormal()` builtins have been removed. [tint:1312 ](https://crbug.com/tint/1312 )
2022-01-25 01:01:39 +00: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 17:21:52 +00:00
* The `ignore()` intrinsic has been removed. Use phoney-assignment instead: `ignore(expr);` -> `_ = expr;` .
2022-02-03 00:12:52 +00:00
* `break` statements in `continuing` blocks are now correctly validated.
2022-01-25 01:01:39 +00:00
2022-02-14 21:56:06 +00:00
### New Features
* Module-scope declarations can now be declared in any order. [tint:1266 ](crbug.com/tint/1266 )
2022-02-15 16:36:57 +00: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 21:56:06 +00:00
2021-12-09 22:53:14 +00:00
## Changes for M99
2022-01-14 17:16:32 +00:00
### Breaking changes
Obviously infinite loops (no condition, no break) are now a validation error.
2021-12-09 22:53:14 +00:00
### Deprecated Features
2022-01-04 20:06:49 +00: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 22:46:57 +00: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 22:11:07 +00:00
* The `[[stride]]` attribute has been deprecated. [tint:1381 ](https://crbug.com/tint/1381 )
2021-12-09 22:53:14 +00: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 20:11:00 +00:00
* Added builtins `degrees()` and `radians()` for converting between degrees and radians. [tint:1329 ](https://crbug.com/tint/1329 )
2022-01-06 18:11:01 +00:00
* `let` arrays and matrices can now be dynamically indexed. [tint:1352 ](https://crbug.com/tint/1352 )
2022-01-19 15:55:56 +00:00
* Storage and Uniform buffer types no longer have to be structures. [tint:1372 ](crbug.com/tint/1372 )
2022-01-19 18:11:17 +00:00
* A struct declaration does not have to be followed by a semicolon. [tint:1380 ](crbug.com/tint/1380 )
2021-12-09 22:53:14 +00:00
2022-01-06 21:32:41 +00: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 19:55:57 +00:00
## Changes for M98
### Breaking Changes
* Taking the address of a vector component is no longer allowed.
2021-11-26 09:56:19 +00:00
* Module-scope declarations can no longer alias a builtin name. [tint:1318 ](https://crbug.com/tint/1318 )
2021-12-03 17:51:48 +00: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 19:55:57 +00:00
2021-11-23 18:57:57 +00: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 18:37:16 +00:00
### New Features
2021-12-08 19:54:08 +00:00
* New texture gather builtins: `textureGather()` and `textureGatherCompare()` . [tint:1330 ](https://crbug.com/tint/1330 )
2021-11-23 20:45:51 +00:00
* Shadowing is now fully supported. [tint:819 ](https://crbug.com/tint/819 )
2021-11-05 18:37:16 +00:00
* The `dot()` builtin now supports integer vector types.
2021-11-22 15:24:16 +00:00
* Identifiers can now start with a single leading underscore. [tint:1292 ](https://crbug.com/tint/1292 )
2021-12-03 17:51:48 +00: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 18:37:16 +00:00
2021-11-23 21:46:48 +00: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-14 03:17:32 +00:00
## Changes for M97
2021-10-12 21:57:47 +00:00
### Breaking Changes
* Deprecated `modf()` and `frexp()` builtin overloads that take a pointer second parameter have been removed.
2021-10-14 10:10:45 +00: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 21:57:47 +00:00
2021-10-22 06:23:12 +00:00
### Deprecated Features
* The `ignore()` builtin has been replaced with phony-assignment. [gpuweb#2127 ](https://github.com/gpuweb/gpuweb/pull/2127 )
2021-10-21 09:39:13 +00: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 20:36:04 +00:00
* Call statements may now include functions that return a value (`ignore()` is no longer needed).
2021-10-21 23:08:44 +00: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 19:20:31 +00:00
* Matrix construction from scalar element values is now supported.
2021-10-21 09:39:13 +00:00
2021-10-20 16:12:33 +00: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 11:00:44 +00: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 21:03:10 +00:00
* `abs()` fixed for unsigned integers on SPIR-V backend
2021-10-20 16:12:33 +00:00
2021-09-02 13:49:59 +00:00
## Changes for M95
### New Features
2021-10-01 08:41:55 +00:00
2021-09-02 13:49:59 +00:00
* The size of an array can now be defined using a non-overridable module-scope constant
2021-09-13 17:11:58 +00:00
* The `num_workgroups` builtin is now supported.
2021-09-08 13:46:51 +00:00
### Fixes
2021-10-01 08:41:55 +00: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 21:57:47 +00:00
* Identifiers beginning with an underscore are now correctly rejected. [tint:1179 ](https://crbug.com/tint/1179 )