Skip to content

Conversation

@ychin
Copy link
Member

@ychin ychin commented Jan 11, 2026

The builtin iconv in macOS has been quite buggy since macOS 14, when Apple replaced GNU iconv with a bespoke version. It introduced backwards-incompatible changes, and behaves oddly in certain character substitutions.

As such, build the official binary release using GNU iconv instead of system iconv. This means we have to compile/cache it manually in our CI just like gettext/libsodium in order to have a universal x86/arm64 binary with the correct deployment target set. We also need to modify gettext to be built against GNU iconv as well to avoid link-time errors.

Note that this does not affect the Homebrew release of MacVim. The standard Homebrew gettext is still linked against system iconv, and as such we can't make an unilateral change without modifying Homebrew's gettext as well.

This will result in the Vim binary being larger by 2 MB. It's not ideal but tolerable. If Apple fixes their implementation of iconv we could revert this in the future.

Related: #1624

@ychin ychin added this to the Release 183 milestone Jan 11, 2026
@github-actions github-actions bot added the CI Vim upstream label for CI issues label Jan 11, 2026
The builtin iconv in macOS has been quite buggy since macOS 14, when
Apple replaced GNU iconv with a bespoke version. It introduced
backwards-incompatible changes, and behaves oddly in certain character
substitutions.

As such, build the official binary release using GNU iconv instead of
system iconv. This means we have to compile/cache it manually in our CI
just like gettext/libsodium in order to have a universal x86/arm64
binary with the correct deployment target set. We also need to modify
gettext to be built against GNU iconv as well to avoid link-time errors.

Note that this does not affect the Homebrew release of MacVim. The
standard Homebrew gettext is still linked against system iconv, and as
such we can't make an unilateral change without modifying Homebrew's
gettext as well.

This will result in the Vim binary being larger by 2 MB. It's not ideal
but tolerable. If Apple fixes their implementation of iconv we could
revert this in the future.

Related: macvim-dev#1624
@ychin ychin force-pushed the ci-use-homebrew-libiconv branch from 0f87187 to cdeaa64 Compare January 12, 2026 00:24
@ychin ychin enabled auto-merge January 12, 2026 00:39
@ychin ychin merged commit 2c26143 into macvim-dev:master Jan 12, 2026
4 checks passed
@ychin ychin deleted the ci-use-homebrew-libiconv branch January 12, 2026 00:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

14.0 Sonoma CI Vim upstream label for CI issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant