I read something that says that V8 doesn't optimize any code inside
try-blocks. I hope this means that this change will lead to better-
performing code, but I suspect the difference will be relatively
small.
Teams are now sent using our new packTeam/unpackTeam code, rather
than JSON. This compresses teams from an average of 2000 bytes to
an average of 500 bytes.
This prevents a number of illegal combinations with hidden abilities by
checking if the Pokemon does have a hidden ability in the gen of a
source.
incompatibleHidden is used so that the compatibility error is shown to
the user, rather than the "can't learn" message.
If a Pokemon has no tier listed, it will be considered to be tiered
identically to its base forme, and affected by bans of its base
forme.
This applies to Keldeo, Meloetta, and Genesect formes.
The main process no longer does any JSON parsing/stringifying of
teams. The communication protocol with validator processes has
been changed from JSON to a string protocol delimited by pipes.
A variety of more minor optimizations have also been done.