Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support ARM-based macOS #4461

Closed
mcarthurcolin opened this issue Aug 24, 2020 · 206 comments
Closed

Support ARM-based macOS #4461

mcarthurcolin opened this issue Aug 24, 2020 · 206 comments

Comments

@mcarthurcolin
Copy link

When will work start on a version for mac on Arm devices.

@scottnonnenberg-signal scottnonnenberg-signal changed the title Mac on ARM Support ARM-based macOS Aug 24, 2020
@paalwilliams
Copy link

My guess is that this is probably linked to the node runtime and apple's rosetta. Does anyone know if rosetta supports node yet?

@hwchong
Copy link

hwchong commented Sep 23, 2020

We've been asking for a Windows ARM64 version since last year on this issue - #3745

@surprized
Copy link

With the advent of the PinePhone, Librem 5, and probably other Linux smartphones I can see why this could be a good idea (or making Axolotl better - I know it is unofficial -), just support ARM64 in general on desktop side of things, I'm not a developer but if I am right, because of Electron, it shouldn't be that hard on Linux and Windows, I can't speak for Mac OS X (or whatever it is called now), though.

@rmueller83
Copy link

Seems to be dependent on Electron 11.

@tonilampela
Copy link

Knowing that Signal Desktop is Electron based I'd propose to work to make Catalyst version of the iOS app for Mac. We get native code and Apple Silicon support for free.

@surprized
Copy link

In that case, users should have both options because they can't register the same account on two devices. However, if going for the Catalyst route, it still leaves out the other emerging ARM64 platforms.

@xarbit
Copy link

xarbit commented Dec 1, 2020

@tonilampela

I installed the iPad version on my Mac M1 (with iMazing), there is no reason they couldn't just make it available as it works and looks perfectly fine on my Mac.

Makes me wonder why they opt'ed out of displaying the iOS version it in the App Store .. ??

@tonilampela
Copy link

@tonilampela

I installed the iPad version on my Mac M1 (with iMazing), there is no reason they couldn't just make it available as it works and looks perfectly fine on my Mac.

Makes me wonder why they opt'ed out of displaying the iOS version it in the App Store .. ??

I'd like them to see to take advantage new "Optimized for Mac" options available in Big Sur's Catalyst. Maybe that is the plan and they don't want to confuse people with this stop-gap option of publishing iOS version?

@xarbit
Copy link

xarbit commented Dec 2, 2020

@tonilampela
I'd like them to see to take advantage new "Optimized for Mac" options available in Big Sur's Catalyst. Maybe that is the plan and they don't want to confuse people with this stop-gap option of publishing iOS version?

true, that might be the case..

@codeslubber
Copy link

Comes up on my M1 MBP but then on each message says 'Error handling incoming message'?

@codeslubber
Copy link

Ya nevermind on my comment, turned out resetting convo fixed it.

@Madhawa97
Copy link

Hey guys, any updates?

@BastienVigneron
Copy link

Also interested.

@EwoutH
Copy link
Contributor

EwoutH commented Jan 8, 2021

@EvanHahn-Signal commented on December 18th:

Thanks for reporting. We're planning on upgrading to Electron 11 in early 2021 which should address this issue.

So that should help!

@SJang1
Copy link

SJang1 commented Jan 11, 2021

I've tried with node@12 (12.20.1) (node built from source so it could run without rosetta2) and build was faild.
Problem on node-gyp rebuild looks like it is from node-ffi

and looks like it doesn't even support ARM64 windows, and nobody is tring to update it, so looks like we need to find a way NOT TO USE or UPDATE(I think it'll be painful) node-ffi

and after I somehow installed it, it came with error

[10/38] ⠂ ffi-napi
error (WorkDir)/Signal-Desktop/node_modules/ffi-napi: Command failed.
Exit code: 1
Command: node-gyp rebuild
Arguments: 
Directory: (WorkDir)/Signal-Desktop/node_modules/ffi-napi
Output:
gyp info it worked if it ends with ok
gyp info using node-gyp@5.1.0
gyp info using node@12.20.1 | darwin | arm64

......

gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
  CC(target) Release/obj.target/ffi/deps/libffi/src/prep_cif.o
In file included from ../deps/libffi/src/prep_cif.c:27:
../deps/libffi/include/ffi_common.h:17:10: fatal error: 'fficonfig.h' file not found
#include <fficonfig.h>
         ^~~~~~~~~~~~~
1 error generated.
make: *** [Release/obj.target/ffi/deps/libffi/src/prep_cif.o] Error 1
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2

looks like related issue : node-ffi/node-ffi#533 (comment)

This also looks like same problem on same project, so looks like we need to find a way not to use or update node-ffi (AGAIN) to run on ARM64(Apple Silicon) device.

@mariusnita
Copy link

mariusnita commented Jan 11, 2021

A temporary workaround to having Signal work natively on macOS is to allow the Signal app on the iOS App Store to be installed on macOS. Currently it does not show up in searches.

@huy-vuong
Copy link

huy-vuong commented Jan 26, 2021

Is there a tracking issue or pull request for the Electron 11 upgrade? I know #4718 mentioned upgrading to Electron 11 to fix the restart mechanism, which incidentally also brings ARM support, but is there some authoritative issue / pull request for Electron 11 itself too?

@indutny
Copy link
Contributor

indutny commented Feb 6, 2021

Here's the PR to track progress on ffi-napi support of M1. Frankly, M1 works just fine now (it seems), but I have to restore the support of all other platforms 😂

@indutny
Copy link
Contributor

indutny commented Feb 10, 2021

Update: ffi-napi builds on most OS now, and I believe it will be released as a major version bump soon. FWIW, brew install vips is required on M1 chips, since no prebuilt version of library is available for arm64 just yet.


signal-zkgroup-node also requires an update. Universal dylib could be created using (lipo -create -output universal.dylib x86_64.dylib arm64.dylib) and used for ARM64 builds.

@dennisameling
Copy link
Contributor

dennisameling commented Feb 21, 2021

Made good progress on a build for Apple Silicon alongside Windows on ARM (thanks @KishanBagaria for giving me access to your temporary MacStadium Apple Silicon machine!):

Here's an overview of dependencies that need to be updated:

Here's my branch in case you want to try building it yourself in the meantime. It includes the pending PRs above - ignore the branch name as it's not only for Windows anymore: https://github.com/dennisameling/signal-desktop/tree/windows-multi-arch-support

I was able to create a build with yarn build:dev using the branch above, but since webrtc/ringrtc can't be built for Apple Silicon just yet, Signal refuses to start:

image

As soon as webrtc can be built for Apple Silicon, I'll be able to continue working on this. Let's hope that will happen soon 🚀

@ghost
Copy link

ghost commented Mar 21, 2021

any news on this ?

@pjuhas
Copy link

pjuhas commented Mar 21, 2021

Any progress made? Just noticed how poorly is Signal performing via Rosseta 2. Signal is using more than 5GB of RAM on my base MBA M1, not to mention energy usage overall.
Snímka obrazovky 2021-03-21 o 21 34 04

@dennisameling
Copy link
Contributor

dennisameling commented Mar 22, 2021

any news on this ?

The Signal team will have to look into the PRs I mentioned above, then they'll have to add Apple Silicon to their release pipeline. I haven't come across any official announcements regarding Apple Silicon from their side, so it might take a while for this to happen. Fingers crossed things will be moving soon in this area 🤞🏼

@paulmillr
Copy link

Finally. Thanks everyone for activism and getting this issue popular!

@indutny-signal
Copy link
Contributor

indutny-signal commented Dec 20, 2021

Hey hey! A bit of additional news. We have just released a universal build of 5.27.0-beta.2 . Would appreciate extra testing of it!

Thanks!

@lethargosapatheia
Copy link

It also works by updating in-app. I've just got an update prompt.

@NilsIrl
Copy link

NilsIrl commented Dec 20, 2021

I got an update prompt too but it's for version 5.26.1 which doesn't seem to run natively (according to Activity Monitor)

@lethargosapatheia
Copy link

@NilsIrl that's weird. In my case it's all fine. Are you sure you weren't using the amd64 version though? I got an update while using the beta version (mentioned above)

@indutny-signal
Copy link
Contributor

I got an update prompt too but it's for version 5.26.1 which doesn't seem to run natively (according to Activity Monitor)

Sorry about that. 5.27.x release family (currently only in Beta) is the first to have native M1 support. Any chance you could try using it beta for now?

@NilsIrl
Copy link

NilsIrl commented Dec 20, 2021

@NilsIrl that's weird. In my case it's all fine. Are you sure you weren't using the amd64 version though? I got an update while using the beta version (mentioned above)

Ohhh that makes sense. I thought you mean it would upgrade from stable to beta which sounded a bit weird to me.

Sorry about that. 5.27.x release family (currently only in Beta) is the first to have native M1 support. Any chance you could try using it beta for now?

Yeah that's what I did. It works great for the moment, very snappy. But I don't know if it's due to it running natively or due to having so little messages in the history...

@lethargosapatheia
Copy link

@NilsIrl it's definitely due to it being native. I can assure you of that :) I've been using it for several days now and you can tell the difference.

@NilsIrl
Copy link

NilsIrl commented Dec 20, 2021

Ok, I was saying that mostly based on my experience with signalapp/Signal-Android#9930

Where things would get slow with thousands of messages (I have a conversation in particular with probably over 200k messages...).

@lethargosapatheia
Copy link

lethargosapatheia commented Dec 20, 2021

@NilsIrl Yeah, I see. I wouldn't know the difference, as I set a default timer for diseappearing messages (good privacy/security practice, by the way! :) ). But I know there's a clear difference in speed between m1 and amd64 nonetheless.
The chat history is a different factor, indeed.

@jspiro
Copy link

jspiro commented Dec 21, 2021

New universal build works well on M1. It's 200MB larger, so it would still be valuable to distribute M1 only builds, if possible.

@indutny-signal
Copy link
Contributor

@jspiro for sure, the builds are going to be distributed and updates will be for M1/Intel versions specifically (~150mb)

@BenBol
Copy link

BenBol commented Dec 21, 2021

The new native Beta is awesome!!!! Thanks a lot to everybody making my Christmas wishes come true ;)

@quinncomendant
Copy link

quinncomendant commented Dec 22, 2021

This Signal Beta consistently has the most Energy Impact on my 2021 MBP 14". It seems much worse than the non-Beta Signal version I had been using on my 2015 MBP 13" (on that computer, Edge used lots more energy than Signal). Has anyone else experienced this?

Screen Shot 2021-12-22 at 12 41 35

Screen Shot 2021-12-22 at 12 17 40

Update – 20 hours later: The average 12 hour energy impact of Signal Beta is nearly four-times as much as Microsoft Edge. I wasn't using Signal much in this period, but I was using Edge a lot. 🤷‍♂️

This is version 5.27.0-beta.3 production (M1).

Screen Shot 2021-12-23 at 10 09 39

@indutny-signal
Copy link
Contributor

@quinncomendant if you'd look at the CPU tab of the Activity Monitor is there Intel next to the app? Rosetta apps waste quite a lot of energy and running native M1 version would definitely help!

Alternative way of checking it would be to take a look at the About window of Signal. It should say either "production (Intel)" or "production (M1)" in it.

Sorry it happens to you!

@quinncomendant
Copy link

Hi @indutny-signal !

I don't have Rosetta 2 installed. It's the Apple version Signal Beta:

Screen Shot 2021-12-22 at 13 52 59

Screen Shot 2021-12-22 at 13 51 22

@jspiro
Copy link

jspiro commented Dec 22, 2021

I am seeing 0.0 average energy usage in the Apple Silicon version of the app.

@lethargosapatheia
Copy link

lethargosapatheia commented Dec 22, 2021

I think there might be various cycles, previously I also saw 10% for a while then 4% for a while. Now I see 0.0, sometimes 0.1 and that seems to be the general load.

@quinncomendant
Copy link

Oh, and be sure to expand the Signal Beta process to see its subprocesses. On my computer, Signal Beta normally has very low Energy Impact (0–0.2) while some of its subprocesses are much higher (Signal Beta Helper (GPU) and Signal Beta Helper (Renderer) are regularly in the range of 5–12):

Screen Shot 2021-12-22 at 21 16 46

@lethargosapatheia
Copy link

Earlier I mixed up cpu with energy consumption and that's what I was referring to actually. But the energy consumption remains in my case around 0.0-0.2. But sure, that doesn't mean there isn't something wrong with Signal only because it works correctly in my case.

@darkBuddha
Copy link

https://github.com/signalapp/Signal-Desktop/releases/tag/v5.27.0

Signal with M1 support is now released.

I had to reinstall the dmg from the website; the included automatic updater did upgrade, but it still started in Intel mode. It feels 20 times faster.

Thanks everyone!

@ThunderFD
Copy link

the included automatic updater did upgrade, but it still started in Intel mode.

I reported that as an issue, but it is expected behaviour:
5.26 didn't know about different architectures yet, but 5.27 now does and will update to the correct version on the next update. (see #5716)

Awesome to now have signal ARM stable! :)

@9999pasila
Copy link

Oh, I had to reinstall and replace the app in macOS to get the M1 version (auto update used Intel version).

The performance is drastically boosted, scrolling and rendering is super smooth and no more resource hogging. Thanks everyone 🙏

@quinncomendant
Copy link

A quick update (previous comment) to say that nothing has changed since updating to the M1 release version of Signal, nor with 5.29.0-beta.1. Signal is still the most power-hungry app on my machine, even though it's idle.

If anyone has any suggestions for how I can analyze what is it's doing, I'm happy to provide a detailed report.

Screen Shot 2022-01-15 at 20 17 12

@singhalrishi27
Copy link

A quick update (previous comment) to say that nothing has changed since updating to the M1 release version of Signal, nor with 5.29.0-beta.1. Signal is still the most power-hungry app on my machine, even though it's idle.

If anyone has any suggestions for how I can analyze what is it's doing, I'm happy to provide a detailed report.

Screen Shot 2022-01-15 at 20 17 12

This is how electron works my friend
If they port iPad version to mac that would be great 😶
iPad's App not only save battery it will send real time notifications without running in background

@quinncomendant
Copy link

@singhalrishi27 So, your install of M1 Signal has a high Energy Impact score too?

I know Electron is basically just a web app, but Signal is using 3–4× more than Microsoft Edge, despite Edge having dozens of tabs open and is in constant use. If the problem was simply because Signal is an Electron app, I would expect similar Energy Impact as any Chromium-based browser.

@singhalrishi27
Copy link

@singhalrishi27 So, your install of M1 Signal has a high Energy Impact score too?

I know Electron is basically just a web app, but Signal is using 3–4× more than Microsoft Edge, despite Edge having dozens of tabs open and is in constant use. If the problem was simply because Signal is an Electron app, I would expect similar Energy Impact as any Chromium-based browser.

Electron app typically use more energy even when compared to web apps.
Maybe a bug in signal or any dependency might be reason.
Did you use Rosetta version

@quinncomendant
Copy link

Did you use Rosetta version

No, I never installed Rosetta. It's a clean-install 2021 MacBook Pro configured with just minimal apps, all M1 native.

I used Signal Desktop on my 2015 Intel MacBook Pro, and its Energy Impact on it was always significantly less than Microsoft Edge. On that machine, Signal basically used nearly zero energy all the time. Here's a screenshot (Signal version 5.28.0):

Screen Shot 2022-01-15 at 21 23 29

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests