guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Difficulty integrating with Swift/Objective-C


From: paul
Subject: Re: Difficulty integrating with Swift/Objective-C
Date: Thu, 09 Sep 2021 09:59:03 +1000
User-agent: mu4e 1.4.15; emacs 27.2

I wanted to follow up about another thing:

On 2021-09-05 at 16:03 AEST, quoth paul <paul@inktvis.org>:
I had some difficulty getting my app to compile against Guile, but i eventually managed to link against a version of Guile installed with Homebrew (guile: stable 3.0.7 (bottled)), however when trying to boot it up i seemed to run into the same issue described by Jeffrey Walton [1]. My app would boot, and as soon as it hit the Guile initialisation calls, it would error out as follows:

allocating JIT code buffer failed: Permission denied
jit.c:5873: fatal: assertion failed

While the other person seems to imply the problem is with Apple's M1 silicon, i'm actually running an older machine (2.9 GHz Dual-Core Intel Core i5, macOS 11.5.2). I then managed to get further by downloading the Guile release tarball version 3.0.7 and and building with `./configure --enable-jit=no`;>

[...]

1. https://mail.gnu.org/archive/html/bug-guile/2021-03/msg00012.html

It turned out that the JIT issue was _also_ PEBKAC i am glad to report. Completely by accident i happened upon some settings in the Xcode project of my app, under the Target > Signing & Capabilities > Hardened Runtime options. One has to enable the following two items:

* Allow execution of JIT-compiled code

* Allow unsigned executable memory

Those two settings correspond to entries in the <myapp>.entitlements file as follows:

<dict>
        <key>com.apple.security.cs.allow-jit</key>
        <true/>
        <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
        <true/>
</dict>

Now, the app is able to build and run successfully against the Homebrew-packaged version of Guile - super convenient!

I thought i'd post my findings in case someone else hits these issues in the future. Or should i contribute a section to a README somewhere, so that folks don't have to laboriously work this out for themselves every time?

Cheers,
p.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]