惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
Scott Helme
Scott Helme
爱范儿
爱范儿
WordPress大学
WordPress大学
博客园 - 三生石上(FineUI控件)
阮一峰的网络日志
阮一峰的网络日志
博客园 - Franky
V
V2EX
腾讯CDC
博客园_首页
博客园 - 司徒正美
酷 壳 – CoolShell
酷 壳 – CoolShell
T
Tailwind CSS Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
小众软件
小众软件
J
Java Code Geeks
大猫的无限游戏
大猫的无限游戏
月光博客
月光博客
Microsoft Azure Blog
Microsoft Azure Blog
B
Blog
雷峰网
雷峰网
Stack Overflow Blog
Stack Overflow Blog
IT之家
IT之家
罗磊的独立博客
Recorded Future
Recorded Future
博客园 - 聂微东
O
OpenAI News
S
Secure Thoughts
Hacker News: Ask HN
Hacker News: Ask HN
S
Schneier on Security
Hacker News - Newest:
Hacker News - Newest: "LLM"
Y
Y Combinator Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Project Zero
Project Zero
宝玉的分享
宝玉的分享
K
Kaspersky official blog
N
Netflix TechBlog - Medium
T
The Exploit Database - CXSecurity.com
Google Online Security Blog
Google Online Security Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Webroot Blog
Webroot Blog
云风的 BLOG
云风的 BLOG
Simon Willison's Weblog
Simon Willison's Weblog
C
Check Point Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
L
LINUX DO - 热门话题
美团技术团队
L
Lohrmann on Cybersecurity

Discord Blog

Making It Easier Than Ever to Connect with Friends in League & VAL! Every Voice and Video Call on Discord Is Now End-to-End Encrypted How to Link Discord to Battlefield 6, Marvel Rivals & More Official Discord Integrations for Steal a Brainrot, Grow a Garden, Brookhaven RP, and more Celebrate Discord’s 11th Birthday with an Exclusive Set of Emoji and Wallpapers Nitro Now Comes with Xbox Game Pass and New Benefits. Welcome to Nitro Rewards. How to Use Nitro: A Beginner’s Guide to Discord’s Premium Subscription Stock Up in the New Rust Shop! Enjoy a Discord-Only 20% Sale on Most Items until 5/21 How Discord Automates ScyllaDB Clusters at Scale Discord Patch Notes: May 4, 2026 You’ve Got (Too Much) Mail: Behind the Scenes of the 3/25/26 Voice Outage Measure Less to Learn More: Using Fewer, Higher-quality Metrics to Capture What Matters Discord Patch Notes: April 6, 2026 MULTIPLAYER SEQUEL TO ACCLAIMED AAAA GAME “THE LAST MEADOW” ANNOUNCED: PLAYABLE NOW Making Discord on Desktop Look Just Right: Display Settings to Ease the Eyes Discord Patch Notes: December 8, 2025 Building on the Social Layer of Games: What’s New from GDC 2026 Gift Ideas for the Dedicated Discord User in Your Life Discord Update: November 6, 2025 Changelog During October, Treat a Friend to Nitro and Trick Out Your Profile for Halloween 🎃 Discord Social SDK Updates & Integrations Go Beyond, Plus Ultra! with the My Hero Academia Collection STAR WARS™ Makes Its Way to Discord Worthy of a Plaque: Nameplates Land in the Shop Announcing Discord’s Social SDK, Helping Power Your Game’s Social Experiences A Cornucopia of Updates Make Discord on Desktop Fresher Than a Crisp Fall Breeze Starting Your First Discord Server Transforming Game Discovery with Instant Play Experiences on Discord Introducing the Discord for Business Newsletter, Vol. 1 Discord Update: March 24, 2026 Changelog Discord Update: December 19, 2024 Changelog How Multi-Factor Authentication Helps Keep Your Discord Account Safe How ROOST is Advancing Online Safety You’re Now Discord Official: Developers, Claim Your Game and Verify Your Server Discord Patch Notes: March 6, 2026 Tracing Discord's Elixir Systems (Without Melting Everything) Getting Global Age Assurance Right: What We Got Wrong and What's Changing Discord Patch Notes: February 4, 2026 Osprey: Open Sourcing our Rule Engine How to Change Your Theme to Bring Your Vibe to Discord Your Discord Checkpoint is Rolling Out! Celebrate What You Did in 2025 How to Customize Your Discord Profile How to Make and Use Custom Emoji on Discord Save and Display Your Faves: Add Discord Shop & Marvel Rivals Items to Your Profile’s Wishlist Discord Patch Notes: November 4, 2025 Bringing In-Game Commerce to Discord Communities Reward Your Play: Complete Quests. Earn Orbs. Get Sweet Stuff. How to Share What You’re Playing, Listening to, or Watching as Your Status on Discord Staff Picks, September 2025: Welcome to Our Video Game Museum From Single-Node to Multi-GPU Clusters: How Discord Made Distributed Compute Easy for ML Engineers Discord Patch Notes: October 7, 2025 Discord Update: September 25, 2025 Changelog New Looks for Nitro, New Looks for You. Get Yourself a Nitro-exclusive Profile Bundle! Discord Patch Notes: September 3, 2025 Bringing DAVE to All Discord Platforms Discord’s Powerful Cross-Platform Chat: Ready for Your Game Introducing the Community Server Cleanup Report for August 2025 Discord for Business Vol. 2: Cannes-worthy ad product updates Discord Patch Notes: August 4, 2025 ROOST Announces “Coop” and “Osprey”: Free, Open-Source Trust and Safety Infrastructure for the AI Era *FLAILS AROUND* SUMMER SPECIAL! JOIN NITRO, GET AN EXTRA MONTH OF NITRO ON US! Get More From Your Boosts With New Server Perks Discord Patch Notes: July 7, 2025 Discord Update: June 30, 2025 Changelog Authenticity Matters: Discord's Pride Month 2025 Staff Picks, June 2025: Summer of Showcases How to Set Up Your Server’s Roles for Members, Mods & Admins Gift Nitro and Earn A Flavorful Splash for your Avatar Discord Patch Notes: June 3, 2025 How to Use the Discord Soundboard & Add More Sounds Checkpoint 3: Leveling Up Discord Quests with Orbs and Advanced Measurement Thank You for Ten Years Staff Picks, May 2025: The Games That Brought Us to Discord Discord Patch Notes: May 1, 2025 How Discord Indexes Trillions of Messages Passing the Torch Discord Appoints Humam Sakhnini as Chief Executive Officer Staff Picks, April 2025: All The Adaptations Make More Closet Space! Nitro Members Can Now Keep Avatar Decoration Quest Rewards for Longer How to Use Discord’s In-Game Overlay to Talk While Playing on PC The Game Developer Playbook, Part One: Getting Started on Discord The Game Developer Playbook, Part Two: Early Access and Pre-Launch MAJOR NEWS: DISCORD ANNOUNCES ITS FIRST IN-HOUSE AAAA VIDEO GAME, “THE LAST MEADOW” Overclocking dbt: Discord's Custom Solution in Processing Petabytes of Data Wicked Saints Turns Players into IRL Superheroes with the Help of e.l.f. Beauty and Discord Discord Update: March 25, 2025 Changelog How to Stream Games and Applications to Discord from Desktop or Mobile Discord Patch Notes: April 3, 2025 Checkpoint 2: Our First Year With Discord Quests How to Create & Upload Your Own Stickers on Discord Revamped Overlay & Refreshed Desktop Give Game Time a Boost Discord Announces First Mobile Ad Format, Broadening Advertising Opportunities Announcing Discord’s Social SDK, Helping Power Your Game’s Social Experiences The Game Developer Playbook: Three Incredible Game-Focused Communities Modern Image Formats at Discord: Supporting WebP and AVIF Discord Patch Notes: March 11, 2025 Supercharging Discord Mobile: Our Journey to a Faster App December Staff Picks: It’s Giving Games Discord Patch Notes: February 3, 2025 Leveling Up Black Voices in Gaming
How Discord Seamlessly Upgraded Millions of Users to 64-Bit Architecture
Christopher Harris · 2025-02-27 · via Discord Blog

Nelly, a robot hamster, floating and holding a flathead screwdriver.

32-Bits Can Go a Long Way

If you’ve made it to this blog post, you likely know Discord as a desktop application where you talk, play, and hang out while gaming, but did you know that Discord was first launched in 2015 as only a web app?

Starting as a web app allowed us to offer people a way to chat with their friends from the portability of their browsers, but to deliver the experience we wanted to offer, we needed to leap out of the browser and take to the desktop.  By using a web wrapper called Electron, we can run Discord in a browser-like environment but with access to all the extra little bits that allow us to offer features such as our In-Game Overlay. When we built that first executable on Windows, we had to decide whether to target 32-bit or 64-bit processors.  With 32-bit, you can write once and it will work pretty much everywhere thanks to Microsoft’s backwards compatibility layers. That makes sense for a first version of an application — it will work on both 32-bit and 64-bit machines while only needing one version of the app.

Performance-wise, 32-bit uses less memory than 64-bit, but sometimes to a fault: 32-bit applications have a hard restriction on memory usage, which using 64-bit architecture is meant to solve in the first place. Though running as a 32-bit application on a 64-bit machine gives us extra memory for Discord, we occasionally still hit the limit, causing errors or even crashes.

Discord is built using an assortment of many libraries, such as Electron and WebRTC, which together help us deliver the ideal desktop Discord experience to you. These tools have supported 64-bit builds for years now, and, in fact, default to 64-bit architecture.  As 64-bit becomes standard across more and more machines, we expect that it will receive significantly more refinement and bug fixes than 32-bit. If Discord were to stay on 32-bit for the foreseeable future, we may potentially expose ourselves — and in turn, our users — to new bugs and inefficiencies that aren’t addressed simply because there aren’t enough people maintaining 32-bit libraries to find them.

Why We’re Moving to 64-bit

Since Discord is intended for PC gamers to run alongside resource-heavy programs, like AAA game titles, we have to share GPU and CPU resources with those demanding programs without impacting their ability to talk with their friends while using Discord.  With this in mind, we intentionally added guardrails to Discord, such as capping Chromium’s memory allocation — we would rather Discord run out of memory than bring down your machine or your game! However, some pieces of Discord aren’t as easily limited.  Our native modules, such as voice, don’t have any limitations.

We keep tabs on Discord’s memory usage across our clients to keep track of our average and peak memory consumption so that we can stay knowledgeable about our real-world memory footprint across a wide variety of machines. This data also helps us identify if we've pushed inefficient code and allows us to quickly address these scenarios.

As we transitioned the app from 32-bit to 64-bit, we wanted to make sure the process was as seamless as possible.  We tried to figure out what was the best way to deliver the goods, from asking users to manually download the 64-bit client from our website to an in-app pop-up with a download link, and even a dedicated delivery mechanism. 

We ultimately decided to use our existing updater: It already delivers millions of updates successfully, we just need to add some smarts to prevent some edge cases from occurring, and then let it loose.  This is both painless and seamless — you just hit the update button when the client is 32-bit, it takes an update as per usual, and then when it relaunches, it’s magically 64-bit!

Implementing Automatic 64-bit Updates for Every Windows User 

At the start of this project, we technically did have the ability to produce 64-bit Windows builds internally… but only on our local development machines.  There were no automation or build machine implementations, which also meant there were no “official” builds nor updates.  Our first order of business was to empower us to produce and store 64-bit builds alongside our 32-bit ones, allowing us to produce signed builds and updates to 64-bit clients.

During this process, we updated various dependencies to their 64-bit versions. We also hit a small hiccup between our C++ and Rust ABIs, as one of the datatypes we used varied in size between 32-bit and 64-bit, while the corresponding type used a fixed-size structure.

For the clients, we pushed logic to the 32-bit client’s updater to detect the architecture of the system it was running on. This helped us recognize which machines were capable of receiving a 64-bit build, letting us scope the transition to just those machines.  A subset of those clients then attempted the transition and reported back their experience — any error during the transition process would have the app simply fall back to the 32-bit build.  Those that succeeded were now running a 64-bit application!

However, our updates have multiple features we had to disable to correctly deliver the update.  First, even though the updater is capable of updating specific native modules, we have to send a full update in order to guarantee all of the affected files are correctly migrated. Second, we also utilize delta updates, which are a special update that sends smaller packages when you are updating from the most recent update. Delta updates don’t know your system’s architecture, just Discord’s app version, and so we had no way to produce a second delta package nor detect a delta update to a 64-bit machine from a 32-bit machine.  

One final gotcha: our updater only takes “new” updates, and the transition was itself being delivered as an update. When we forked our builds between 32-bit and 64-bit, they shared the same version number. While they could increment independently of each other, we only ever produced builds simultaneously, meaning they stay in lockstep.

When we pushed any modification to the 32-bit updater, such as enabling clients to transition, those clients wouldn’t detect the 64-bit version that we had just pushed out because it would read its identical version as “not newer”. Those clients would wait until the next “released” update in order to transition, despite the fact they were capable of and theoretically had a target to transition to already. So we went with the simplest solution here: we bumped the 64-bit version by 100 version numbers, so it would always be “newer” than 32-bit updates. 

Being 100 versions newer wasn’t exactly true, but it gave us a leeway to push 100 updates to our 32-bit client before we would have to address the digital elephant-in-the-room again if we weren’t able to complete the 64-bit update before we used all 100 extra updates. (Spoiler: we completed the transition work with plenty of room to spare.)

More Bits Means Less Crashes 

Today, we have now rolled out the 64-bit transition to all 64-bit Windows machines at 100%.  We’re still seeing clients transitioning to this day, either from old 32-bit installers on someone’s primary machine or just someone dusting off that old gaming computer for a round of Quake 3.

From our telemetry of the 64-bit client in the wild, memory usage has gone slightly up — this was completely expected due to the architectural changes. Crash rates have gone down, due to a reduction in out of memory crashes from the extra memory available to us.  Happily, we’ve also seen CPU usage decrease, which leaves more for your games and other applications!

A line chart comparing memory usage between 32-bit and 64-bit clients over a one week time frame.

A line chart comparing CPU usage between 32-bit and 64-bit clients over a one week time frame.

A line chart the crash rates between 32-bit and 64-bit clients over a one week time frame.

If you’re someone passionate about helping people find a place to belong, love a good ol’ technical challenge, and want to help us deliver for our players and customers around the world, consider applying for an open position at Discord! Bring your unique skills to the table (or our work server) and help us build the best place for playing games and hanging out with friends.

Christopher Harris

Senior Software Engineer on Desktop Arch

related articles