### Diamond <> and square [] ~~bracket ~~brackets notations

Are there some documentation on diamond bracket notation:

```
R.<w> = PolynomialRing(QQ)
```

and square bracket notation:

```
R.<y> = QQ['y'];
```

There is some documentation in Constructors for polynomial rings docs but it looks superficial on this topic.

Are there some complete explanation with all the details behind the scene?

Is it only for polynomial rings or for some other objects? Is it SageMath addition?