Sorry, have been quite busy with other things and haven’t had adequate time to respond here. My only strong preference is against using the builtin dialect as a landing pad for things used by multiple different dialects. We should really be viewing attributes and types in the same way that we view operations; e.g, if we had a fastmath.foo operation, would we consider landing this in the builtin dialect just because multiple dialects want to use it? IMO we would be discussing which non-builtin dialect makes sense, or otherwise consider spinning up some fastmath dialect. We should get out of the mentality that creating a dialect requires operations, Attributes and Types are equally important abstractions. The builtin dialect, just like any other, has a designated purpose and place in the ecosystem.
– River