Patch 5.0.4/API changes

Breaking changes

 * Functions pertaining to talents and specializations are renamed:
 * &rarr; (NB: player character-only)
 * &rarr;
 * &rarr;
 * &rarr;
 * &rarr;
 * &rarr;
 * &rarr;
 * &rarr;
 * Many party/raid-related functions and events are merged into group variants.
 * &rarr;
 * &rarr;
 * &rarr;
 * &rarr; (NB: non-0 in any group, including parties; use  to check for group type)
 * &rarr;
 * Functions pertaining to Real/Fake groups (home realm and instance/battleground-specific groups, respectively) are removed. Instead, group functions take an argument specifying which group you want to query:
 * LE_PARTY_CATEGORY_HOME will query information about your "real" group -- the group you were in on your Home realm, before entering any instance/battleground.
 * LE_PARTY_CATEGORY_INSTANCE will query information about your "fake" group -- the group created by the instance/battleground matching mechanism.
 * Achievement API:
 * split into two separate functions:
 * By criteria order: (achievementID, criteriaIndex)
 * By internal criteria ID: (achievementID, criteriaID)
 * Other
 * &rarr; has a new return value.
 * &rarr; has a new argument value.
 * &rarr;
 * The  sub-event of  no longer fires for spells with cast times.
 * has new return values.
 * has new return values.
 * has new return values.

New functionality

 * Pet battles
 * Black market auction house
 * Class specializations
 * Challenge modes
 * Upgrading items
 * - Now returns a MapID as its 8th result, allowing addons to identify the current instance/continent without relying on localized names.

Macros

 * New macro conditionals:
 * : True when the player is participating in a pet battle.

Talents

 * CHANGED - Returns information about talents for player/pet/inspected unit/arbitrary classes.
 * NEW - Returns maximum level-appropriate talent tier.
 * NEW - Returns whether a talent is not selected in a given tier, and the selected talent's ID.
 * NEW - Learns specified talents.
 * NEW - Returns information about the cost of unlearning a single talent.
 * NEW - Unlearns a single talent.

Unsorted

 * has new return values.
 * has new return values.

Widget API

 * NEW ("event", "unit1"[, "unit2"]) - Triggers the widget's OnEvent handler when the specified event occurs for the specified units.
 * NEW (enable) - Enables or disables the widget (available for any widget with Enable/Disable methods).
 * NEW (show) - Shows or hides the widget (available for any widget with Show/Hide methods).

FrameXML

 * is renamed to ; the old version of which is removed.
 * The minimap buttons  and   is renamed/merged to.
 * is removed; druid shapeshifting UI is now handled by the.

Observed bugs and notable differences

 * - the new version of UnitIsRaidOfficer returns false if the player is leader. The old function returned true.
 * - when not in a party/raid, the new version of UnitInRange returns false for "player" and "pet". The old function returned true.
 * - If the path passed into Texture:SetTexture(path) is invalid, the texture will display as solid green.
 * - If the path passed into Texture:SetTexture(path) is invalid, Texture:GetTexture will still return whatever was passed in. Previously, it would return nil if the texture path was invalid. It seems that it is no longer possible to determine if a texture is valid or not (useful for validating user input).
 * - requesting the GUID of another party member (possibly raid too - not tested) while responding to the new event during initial UI load while you are already in a group returns nil.  This was not previously the case with the old  and  events.
 * / ENVIRONMENTAL_DAMAGE - the environmental type reported from this event is now reporting non-localized proper case strings (e.g. "Falling") instead of non-localized capitalized strings (e.g. "FALLING").

Automated diff
Click on the headers to expand the tables below.