Repository: electron/electron
Pull request: fix: handle tar.xz files in uploaders, add to breaking changes

#### Description of Change

Fast follow to #48930, this PR also handles the new .zip -> tar.xz format in the uploader scripts, and also adds a callout to breaking changes.

#### Checklist
<!-- Remove items that do not apply. For completed items, change [ ] to [x]. -->

- [ ] PR description included and stakeholders cc'd
- [ ] `npm test` passes
- [ ] tests are [changed or added](https://github.com/electron/electron/blob/main/docs/development/testing.md)
- [ ] relevant API documentation, tutorials, and examples are updated and follow the [documentation style guide](https://github.com/electron/electron/blob/main/docs/development/style-guide.md)
- [ ] [PR release notes](https://github.com/electron/clerk/blob/main/README.md) describe the change in a way relevant to app developers, and are [capitalized, punctuated, and past tense](https://github.com/electron/clerk/blob/main/README.md#examples).

#### Release Notes

Notes: Fixed an error on debug symbol upload by moving dsym.zip to use tar.xz compression.


Changed files:
filename: docs/breaking-changes.md
patch: @@ -20,6 +20,11 @@ Using the `clipboard` API directly in the renderer process is deprecated.
 If you want to call this API from a renderer process, place the API call in
 your preload script and expose it using the [contextBridge](https://www.electronjs.org/docs/latest/api/context-bridge) API.
 
+### Behavior Changed: MacOS dSYM files now compressed with tar.xz
+
+Debug symbols for MacOS (dSYM) now use xz compression in order to handle larger file sizes. `dsym.zip` files are now
+`dsym.tar.xz` files. End users using debug symbols may need to update their zip utilities.
+
 ## Planned Breaking API Changes (39.0)
 
 ### Deprecated: `--host-rules` command line switch

filename: script/release/release.ts
patch: @@ -137,11 +137,11 @@ function assetsForVersion (version: string, validatingRelease: boolean) {
     `chromedriver-${version}-win32-ia32.zip`,
     `chromedriver-${version}-win32-x64.zip`,
     `chromedriver-${version}-win32-arm64.zip`,
-    `electron-${version}-darwin-x64-dsym.zip`,
+    `electron-${version}-darwin-x64-dsym.tar.xz`,
     `electron-${version}-darwin-x64-dsym-snapshot.zip`,
     `electron-${version}-darwin-x64-symbols.zip`,
     `electron-${version}-darwin-x64.zip`,
-    `electron-${version}-darwin-arm64-dsym.zip`,
+    `electron-${version}-darwin-arm64-dsym.tar.xz`,
     `electron-${version}-darwin-arm64-dsym-snapshot.zip`,
     `electron-${version}-darwin-arm64-symbols.zip`,
     `electron-${version}-darwin-arm64.zip`,
@@ -152,11 +152,11 @@ function assetsForVersion (version: string, validatingRelease: boolean) {
     `electron-${version}-linux-x64-debug.zip`,
     `electron-${version}-linux-x64-symbols.zip`,
     `electron-${version}-linux-x64.zip`,
-    `electron-${version}-mas-x64-dsym.zip`,
+    `electron-${version}-mas-x64-dsym.tar.xz`,
     `electron-${version}-mas-x64-dsym-snapshot.zip`,
     `electron-${version}-mas-x64-symbols.zip`,
     `electron-${version}-mas-x64.zip`,
-    `electron-${version}-mas-arm64-dsym.zip`,
+    `electron-${version}-mas-arm64-dsym.tar.xz`,
     `electron-${version}-mas-arm64-dsym-snapshot.zip`,
     `electron-${version}-mas-arm64-symbols.zip`,
     `electron-${version}-mas-arm64.zip`,

filename: script/release/uploaders/upload.py
patch: @@ -88,7 +88,7 @@ def main():
       upload_electron(release, ts_defs_path, args)
 
     dsym_zip = os.path.join(OUT_DIR, DSYM_NAME)
-    shutil.copy2(os.path.join(OUT_DIR, 'dsym.zip'), dsym_zip)
+    shutil.copy2(os.path.join(OUT_DIR, 'dsym.tar.xz'), dsym_zip)
     upload_electron(release, dsym_zip, args)
 
     dsym_snapshot_zip = os.path.join(OUT_DIR, DSYM_SNAPSHOT_NAME)