One goal of Tokaido is to reduce the external dependencies of the precompiled Ruby.
There are several parts of the Ruby standard library that are normally linked against dylib
s in your system. One such example is OpenSSL. To reduce external dependencies and the possibility of future failure (for example, if Apple removes OpenSSL from a future release), we would like to statically link these precompiled parts of the standard library instead of dynamically linking.
Also worth noting: psych
depends on libyaml
, which doesn't come with OSX to begin with. We do not want to rely upon libyaml
existing in the system in order to use the precompiled Ruby, so we statically compile libyaml into psych.
In the output below, you can see that Tokaido compiled Ruby has dependencies only on libSystem
and libobjc
, which are extremely stable OSX libraries, and not on libruby
, libssl
or libcrypto
. Instead, those libraries are statically compiled into openssl.bundle
. This increases the portability of the precompiled Ruby and eliminates a number of possible failure scenarios.
❤️ ❤️ ❤️
I don't think I've ever compiled Ruby on Linux without OpenSSL troubles, so it's good to see you taking those potential problems out of the equation for other devs, even if it's on a different platform.