From: naruse@... Date: 2021-03-22T02:59:00+00:00 Subject: [ruby-core:102974] [Ruby master Feature#17730] Ruby on macOS transitively links to ~150 dylibs Issue #17730 has been updated by naruse (Yui NARUSE). duerst (Martin D�rst) wrote in #note-6: > rickmark (Rick Mark) wrote: > > > Further CoreFoundation is only used for one call in the entire codebase of `CFStringNormalize(m, kCFStringNormalizationFormC);` - if we can replace this, Ruby could work with only `libSystem` and `libgmp`. > > I'm not at all familiar with the details on a Mac, nor with this library or function in particular. But Unicode String Normalization is provided by String#unicode_normalize, which is implemented in pure Ruby. There may be a bit of glue code necessary, but essentially, the above call should be convertible to something close to `m.unicode_normalize(:nfc)`. Why it uses `CFStringNormalize(m, kCFStringNormalizationFormC);` is because it needs to just the same conversion as HFS+/APFS, which is different from standard NFC. ---------------------------------------- Feature #17730: Ruby on macOS transitively links to ~150 dylibs https://bugs.ruby-lang.org/issues/17730#change-91037 * Author: rickmark (Rick Mark) * Status: Closed * Priority: Normal ---------------------------------------- By using `-framework Security` and `-framework Foundation` Ruby 3 pulls in about 150 dylibs when compiled for macOS By using CoreCrypto / CoreFoundation I was able to reduce this to ~50. This greatly reduces Ruby's surface area and dependencies on macOS. Further CoreFoundation is only used for one call in the entire codebase of `CFStringNormalize(m, kCFStringNormalizationFormC);` - if we can replace this, Ruby could work with only `libSystem` and `libgmp`. ---Files-------------------------------- ruby_deps_after.txt (2.24 KB) ruby_deps_before.txt (9.81 KB) 0001-Remove-unneeded-dependencies-on-macOS.patch (2.36 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: