The difference between the 'normal' and 'big' builds is not very large:
normal | 3195080 (3.1M) | 2514680 (2.4M)
big | 3261704 (3.2M), +65K | 2560856 (2.5M), +45K
And I'm not sure many people are using the 'big' featureset.
This removes the 'big' featureset, and aliases that to 'normal', leaving us with three builds:
| -O2 | -Os
tiny | 1633984 (1.6M) | 1190576 (1.2M)
normal | 3195080 (3.1M) | 2514680 (2.4M)
huge | 3410232 (3.3M) | 3070104 (3.0M)
Which are all fairly distinct.
Features now included in 'normal':
FEAT_LANGMAP
FEAT_KEYMAP
FEAT_EMACS_TAGS
FEAT_CSCOPE
FEAT_CONCEAL
FEAT_TERMGUICOLORS
FEAT_VARTABS
FEAT_MOUSE_NET, FEAT_MOUSE_DEC, FEAT_MOUSE_URXVT
FEAT_SIGNS
FEAT_AUTOCHDIR
FEAT_RIGHTLEFT (unless --disable-rightleft)
FEAT_ARABIC (unless --disable-arabic)
FEAT_SODIUM (unless --disable-sodium, or libsodium isn't found)
FEAT_SOUND (unless --disable-canberra, or libcanberra not found)
FEAT_MBYTE_IME (Haiku)
https://github.com/vim/vim/pull/11283
(14 files)
—
Reply to this email directly, view it on GitHub.
You are receiving this because you are subscribed to this thread.
Merging #11283 (6bc6bdb) into master (351523f) will decrease coverage by
0.63%
.
The diff coverage isn/a
.
@@ Coverage Diff @@ ## master #11283 +/- ## ========================================== - Coverage 81.81% 81.18% -0.64% ========================================== Files 162 152 -10 Lines 189096 179050 -10046 Branches 42999 40649 -2350 ========================================== - Hits 154710 145362 -9348 + Misses 21833 21030 -803 - Partials 12553 12658 +105
Flag | Coverage Δ | |
---|---|---|
huge-clang-none | 82.72% <ø> (-0.01%) |
⬇️ |
huge-gcc-none | ? |
|
huge-gcc-unittests | 0.29% <ø> (ø) |
|
linux | 81.18% <ø> (-1.24%) |
⬇️ |
mingw-x64-HUGE | ? |
|
mingw-x86-HUGE | ? |
|
windows | ? |
Flags with carried forward coverage won't be shown. Click here to find out more.
Impacted Files | Coverage Δ | |
---|---|---|
src/version.c | 83.96% <ø> (-1.22%) |
⬇️ |
src/if_perl.xs | 54.85% <0.00%> (-17.93%) |
⬇️ |
src/gui_beval.c | 41.43% <0.00%> (-11.16%) |
⬇️ |
src/regexp_nfa.c | 80.44% <0.00%> (-9.07%) |
⬇️ |
src/arabic.c | 85.86% <0.00%> (-8.70%) |
⬇️ |
src/typval.c | 84.95% <0.00%> (-8.29%) |
⬇️ |
src/regexp_bt.c | 78.48% <0.00%> (-7.48%) |
⬇️ |
src/vim9execute.c | 83.11% <0.00%> (-7.18%) |
⬇️ |
src/json.c | 77.84% <0.00%> (-5.47%) |
⬇️ |
src/vim9compile.c | 87.42% <0.00%> (-4.78%) |
⬇️ |
... and 135 more |
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.
—
Reply to this email directly, view it on GitHub.
You are receiving this because you are subscribed to this thread.
This change does not make the code simpler, #ifdefs remain. It does remove a choice, which has always been a bit confusing, there is no clear argumentation why a feature is in normal, big or only in huge.
Yes, my motivation was that I was looking at what exactly the different feature sets actually do and I found that the differences between "small" and "tiny" and "normal" and "big" were actually pretty small.
IMHO it's confusing now what the differences are. It's not really a "code thing" to make the code easier, but to make it easier for people who want to build Vim. That's also why I sent the other patch to merge the "tiny" and "small" builds; that it removed a bunch of #ifdefs was more of a side-effect than anything else.
I think the real question is: how often are people using the 'normal' or 'big' builds in the first place? My suspicion is that most people are using the 'huge' build, and a small subsection the 'tiny' build.
For example Ubuntu and Debian have the "vim" package (huge) and "vim-tiny", but no "vim-big" or "vim-normal". Alpine Linux (focused on being small) just has the "huge" build. Arch Linux just has a package for the "huge" build too. There are countless of distros, but I can't find any that uses the 'normal' or 'big' builds. The Windows installer is 'huge', macvim is 'huge'.
So in that sense I'm not sure if it really matters what we include in 'normal' or 'huge'; I'm fine with any choice on this, it's the removal of a feature set that's the improvement IMHO. I think we could probably just merge the 'normal' and 'huge' builds too (leaving just 'tiny' and 'huge') and no one will notice.
I can't guess how many users there are for each feature, such as +langmap, but it's easier to say "if you want language-specific features, use huge".
It seems to come up fairly frequently: https://vi.stackexchange.com/search?q=langmap
Aside: organising the docs in +feature-list could also help maybe, like so:
Features in tiny version (always enabled):
*+autocmd* |:autocmd|, automatic commands.
*+cursorbind* |'cursorbind'| support
.. etc..
Features in normal version (includes everything in tiny):
*+arabic* |Arabic| language support
*+autochdir* support 'autochdir' option
.. etc..
But it still leaves with the thing that the differences are pretty small and that AFAIK few people are using the 'normal' or 'big' versions.
—
Reply to this email directly, view it on GitHub.
You are receiving this because you are subscribed to this thread.
—
Reply to this email directly, view it on GitHub.
You are receiving this because you are subscribed to this thread.
I haven't been following this thread, so I may not understand what the actual changes are. That being said, I would be very hesitant to remove tiny in favor of small; rather, I would do it the other way around.
The purpose of tiny (or at least the way it is currently being used in Debian and Ubuntu; probably others) is to have a usable version of Vim that is not only as small as possible on disk, but uses as little memory as possible while running. It is used when you are on systems or in situations where resources are scarce.
The differences between small, normal, big, and huge are really user preferences, while tiny has a very specific functional mandate that cannot be replaced by a larger version. I.e. if a user wants normal, but it is not available, big will usually suffice. However, when a user needs tiny, small will not do.
That was already done in #11268
Merging these two added just one feature to 'tiny' (cmdwin) with a ~4K disk footprint. There was no meaningful difference between the two.
—
Reply to this email directly, view it on GitHub.
You are receiving this because you commented.
Aside: organising the docs in +feature-list could also help maybe, like so:
Features in tiny version (always enabled): *+autocmd* |:autocmd|, automatic commands. *+cursorbind* |'cursorbind'| support .. etc.. Features in normal version (includes everything in tiny): *+arabic* |Arabic| language support *+autochdir* support 'autochdir' option .. etc..
I don't care much about big vs normal vs huge, but please don't split the features like this. Most users really don't care about this huge vs normal distinction, and as you pointed out this is mostly an option for the party building Vim, not for the users. There is no need to expose such grouping to the user, as it would make scanning for the feature you want much more time consuming (since I just search alphabetically).
—
Reply to this email directly, view it on GitHub.
You are receiving this because you commented.
Don't judge other people's preferences by your own.
I use Big Vim day-to-day, because most differences between Big and Huge are features I don't need, and the few that I do need can be enabled individually at configure time.
FWIW, here are the environments settings I use to compile my day-to-day build of Vim:
export CONF_OPT_GUI='--enable-gui=gtk3'
export CONF_OPT_MULTIBYTE='--enable-multibyte'
export CONF_OPT_AUTOSERVE='--enable-autoservername'
export CONF_OPT_FEAT='--with-features=big'
export CONF_OPT_COMPBY='"--with-compiledby=antoine.m...@gmail.com"'
Best regards,
Tony.
—
Reply to this email directly, view it on GitHub.
You are receiving this because you commented.
For some reason I can't modify a post after sending it.
export CONF_OPT_GUI='--enable-gui=gtk3' export CONF_OPT_MULTIBYTE='--enable-multibyte' export CONF_OPT_AUTOSERVE='--enable-autoservername' export CONF_OPT_FEAT='--with-features=big'
#export CONF_ARGS2='--with-vim-name=vim-big' export CONF_OPT_COMPBY='"--with-compiledby=antoine.m...@gmail.com"'
—
Reply to this email directly, view it on GitHub.
You are receiving this because you commented.
Try again.
# Environment variables to be set # by SOURCING this script in bash before compiling Big Vim
export CONF_OPT_GUI='--enable-gui=gtk3' export CONF_OPT_MULTIBYTE='--enable-multibyte' export CONF_OPT_AUTOSERVE='--enable-autoservername' export CONF_OPT_FEAT='--with-features=big'
export CONF_OPT_COMPBY='"--with-compiledby=antoine.m...@gmail.com"'
—
Reply to this email directly, view it on GitHub.
You are receiving this because you commented.
—
Reply to this email directly, view it on GitHub.
You are receiving this because you commented.
—
Reply to this email directly, view it on GitHub.
You are receiving this because you commented.
Seems like this broke +sound
on macOS builds. Please make sure to scrub existing usages of macros before undef
'ing them. Filed #11497 to fix this.
—
Reply to this email directly, view it on GitHub.
You are receiving this because you commented.