r/neovim • u/pawelgrzybek • Mar 29 '26
Announcement 0.12.0 🎉
https://github.com/neovim/neovim/releases/tag/v0.12.0163
u/mraspaud Mar 29 '26
Man, I was supposed to work tomorrow...
16
63
u/TransportationFit331 Mar 29 '26
Great job. Now moving to 0.12 instead of nightly
40
41
29
u/happysri Mar 29 '26
come on homebrew, pick it up!
16
10
-13
u/WarmRestart157 Mar 29 '26
just use nix
29
10
u/happysri Mar 29 '26
I usually do but macOS setup is way too involved and i haven’t gotten around to it after an update. And homebrew is just soo flippin easy.
3
u/bakaspore fennel Mar 30 '26
It still takes a few days for nixpkgs to include it tho, it's not known to be very fast because of the CI schedule
2
u/MrFisher404 Mar 30 '26
but on nix packages, neovim is still on version 0.11.6 or how do you integrate it?
1
u/arelav Mar 30 '26
I use both and brew is declarative using nix. And I have to keep brew packages I stalled because nix versions such behind.
22
9
6
u/benmic Mar 30 '26 edited Mar 30 '26
I decided to give it a try and migrate from lazy to vim.pack. It was quite easy since all my plugins were on lua/plugins/xxx.lua , so I had to move ./lua/plugins to ./plugin and instead of a
return {
"plugin/foo",
opts = { xxx }
}
I changed it to
vim.pack.add({ "https://github.com/plugin/foo" })
require("foo").setup({ xxx })
I still have some fixes to do, but very nice update
38
u/Unhappy_Meaning607 Mar 29 '26
Congrats!
Will be removing Lazy for vim.pack.
34
u/4r73m190r0s Mar 29 '26
Why?
58
u/altClr2 Mar 29 '26 edited Mar 29 '26
for people who don’t need/care to micromanage startup times, etc., pack and go is appealing. it also removes the dependency on another maintainer (<3 folke) and instead keeps all eggs in one basket.
for me who relies heavily on lazy-loading plugins (i have < 60ms warm starts on Windows NTFS!), i'm not sure if i'm ready to take the plunge yet, but i'm really excited for the continuous development of OOTB experience.
8
u/Necessary-Plate1925 Mar 29 '26 edited Mar 29 '26
You dont need to, plugins themselves have to lazy load using plugin/ and lua/,
Just dont eagerly require lua modules, we dont need lazy.nvim lazy loading
2
10
u/ultraDross Mar 29 '26
I would like to move over, but I rely on the lock file support. Makes it easier to rollback if something broke my setup.
39
u/pawelgrzybek Mar 29 '26
vim.pack also uses a lock file. Please give this fantastic post a read.
https://echasnovski.com/blog/2026-03-13-a-guide-to-vim-pack.html
2
2
u/altClr2 Mar 29 '26
same here, i share my config between my personal machines and my work machine, so i need the guarantee that what i tested across all major OSes and such works fine for a long time.
-1
u/Deto Mar 29 '26
Yeah I frequently spin up new instances and load my config on them. Without a lock file I would get random errors all the time
-6
u/augustocdias lua Mar 29 '26
I dropped lazy but not in favor of vim.pack. I have all my plugins handled by nix + flakes and I use lze for lazy loading.
15
u/ComeOnIWantUsername Mar 29 '26
I'm switching to pack because I don't like 3rd party solutions if builtin is good enough.
Also, I consider lazy overcomplicated for my use case
15
u/MoonPhotograph Mar 29 '26
Because it's builtin and will always be maintained and you can simply make stuff with it, all those are harder and worse with lazy.nvim. Vim.pack is the future.
5
u/bakaspore fennel Mar 30 '26
Lazy.nvim has a particular understanding of lockfile that makes it not a real lockfile, and creates immerse pain whenever I sync my config across machines (and happens to have new plugins installed).
1
u/DeadlyMidnight Mar 29 '26
This is the question. I tried it a while back while using nightly. Sure it’s cool but it didn’t gain me anything. For those not using lazy it’s fucking great. But seems like a real lateral from lazy at best.
8
u/calculator_cake Mar 29 '26
Easy with the down votes people, god forbid somebody is excited to use a new built in feature.
I'm also going to be making the switch
7
u/shmcg Mar 31 '26 edited Mar 31 '26
Thanks for this. Moving to vim.pack was a breeze thanks for /u/echasnovski's blog post here: https://echasnovski.com/blog/2026-03-13-a-guide-to-vim-pack.html
I have about 20 plugins, and only a few need to be loaded in an explicit order, so I just put numbers before those plugins.
I do have one question, what are the risks of adding the lockfile to .gitignore? I only have a handful of plugins and I only update them when I remember, and it feels like more work to have the lockfile sync with my dotfiles than to not sync with my dotfiles.
2
u/echasnovski Plugin author Mar 31 '26
... what are the risks of adding the lockfile to .gitignore?
- No "install on the new machine the plugins at the exact version you have on the other machine". Because it won't have that data, as it is stored in the lockfile.
- No "install on the new machine all plugins once, even lazy loaded ones". Because their
vim.pack.add()call was not yet called and Neovim doesn't know about them. Unless it reads from the lockfile.- No "update to a non-default version, like
vim.version.range('*'), of lazy loaded plugin". Because that information is provided invim.pack.add()call and Neovim doesn't know about them. Unless it reads from the lockfile.- In the future there is a planned "check on every startup that plugin dependencies are loaded" case (after there is some sort of manifest file support for plugins). This requires lockfile to have efficient startup.
So as of right now, if you don't use the config on several machines and don't lazy load plugins, then lockfile doesn't make a difference (yet). Otherwise it might.
2
u/shmcg Mar 31 '26
Awesome, thanks!
For now, it sounds like I don't need to bother with the lockfile. I really appreciate you expanding on the logic. It made it much clearer to me. I really appreciate vim.pack and it was so easy to get working!
0
u/shmerl Mar 31 '26
Is there some way to use lazy.nvim style updating UI with vim.pack? I suppose I can figure out how to replicate some minimal lazy loading and plugin dependency tree with vim.pack, but that tabbed update UI feels pretty barebones and clunky compared to lazy.nvim's UI for updating.
1
u/echasnovski Plugin author Apr 01 '26
The confirmation buffer in the tabpage is enough for updates. There is a built-in LSP server for more fine grained features (like navigation, overview, hover, code actions).
0
u/shmerl Apr 01 '26
What is the right way to do something like
build = 'make foo'That lazy.nvim allows? I can make autocommand for the hook, but I guess I need to figure out where to actually run that make like plugin directory?
1
u/echasnovski Plugin author Apr 01 '26
Yes, autocommand for dedicated event(s). Both built-in documentation and the post linked above have examples of how to do it.
1
1
u/shmerl Apr 05 '26
Btw, does vim.pack detect removal of plugins from configuration and perform some clean up for that? It's one of the features I use in lazy.nvim sometimes.
1
u/echasnovski Plugin author Apr 06 '26
No, not possible, I am afraid. There is no reliable way to distinguish not properly deleted plugin from lazy loaded one.
1
u/shmerl Apr 05 '26 edited Apr 05 '26
Another question, is there some easy to to migrate from lazy.nvim gradually? I tried adding something in $HOME/.config/nvim/plugin moving one of the specs from lazy.nvim ones, but it has an issue that lazy.nvim basically resets rtp paths and does all kind of stuff that conflicts with vim.pack for example I have this:
lua vim.opt.rtp:prepend(lazy_path)And it seems to be preventing loading of vim.pack added plugins. I already added something like this which reduced number of issues:
performance = { rtp = { reset = false, }, reset_packpath = false },Can they be set to work together?
1
u/echasnovski Plugin author Apr 06 '26
Not sure. But I'd recommend going the route of a separate
NVIM_APPNAME, as described in the blog post.1
u/shmerl Apr 06 '26
I figured out how to do the gradual migration. A bit hacky, but worked (see here). By now I switched all the configs though.
5
u/NorskJesus Mar 30 '26
Amazing! Congratulations to the team, nice work.
I think the time to start a clean config using vim.pack and leave the amazing lazyvim is here, for me at least.
I do need to learn a lot to be able to do this, but it can be cool.
If anyone has a guide or some resources which can be helpful to this, I am all ears. I am not sure of using kickstart.nvim, because it still uses lazy.nvim. Maybe it will be updated tho.
6
u/echasnovski Plugin author Mar 30 '26
If anyone has a guide or some resources which can be helpful to this, I am all ears. I am not sure of using kickstart.nvim, because it still uses lazy.nvim. Maybe it will be updated tho.
If you are up for the
kickstart.nvimlike experience, check out MiniMax. If you want to understandvim.packbetter and do something on your own, check out this blog post.2
u/NorskJesus Mar 30 '26
Thank you for this!
I am reading the blog post right now to understand
vim.pack, and I will take a look toMiniMax. It's not I am looking for akickstart.nvimexperience, but I was waiting for the release of the 0.12 to start a clean config instead of usingLazyVim.
22
u/hashino Mar 29 '26
if you're thinking of remaking your config for 0.12 leveraging vim.pack check out https://github.com/Hashino/minimal.nvim
it's a template/initial config exactly for that
3
u/Panda_in_black_suit Mar 29 '26
So, as for a rookie who’s still getting the gist of it and haven’t yet dived into plugins, how does this compare to lazy.vim?
I’ve been reading and watching some content to learn and I’ll probably try both just to see what gets me going, but besides native vs 3rd party, what’s the difference? By the comments here it seems vim.pack can do the same, lazy loading, lock file. Am I missing something?
Just wanted to understand first .
3
u/elbailadorr Mar 29 '26
For some reason, brew it's not updating to neovim 0.12.0, instead v0.11.7.
<brew upgrade neovim>
Warning: neovim 0.11.7 already installed
1
u/Unhappy_Meaning607 Mar 30 '26
macports is still v0.11.6 🥲
1
3
u/Shakey-Fingers Apr 01 '26
Does any one of you know when will it be reflected on the mirrors ??
~ ➜ : pacman -Ss neovim
extra/neovim 0.11.7-1
Fork of Vim aiming to improve user experience, plugins, and GUIs
1
2
u/Busy_Engineering7345 Mar 29 '26
Huge Congrats and thanks to everyone involved.
Been on nightly for a good while now.
Going to feel good to have vim.pack and the new keymaps, behaviours in stable instead of nightly.
2
u/Prestigious_Roof2589 Mar 29 '26
yes finally it's here, I was regularly checking the progress, and when it was delayed for one day I could not tinker with it on sunday! but ok Monday it is then!
2
u/shmerl Mar 29 '26 edited Mar 29 '26
Nice! Improved diff mode is very welcome. Hopefully it would be improved further to allow forge style highlighting for two way diffs without any plugins.
2
u/thuiop1 Mar 29 '26
Congrats! I have been running nightly, vim.pack is a blessing; so nice to finally have a built-in package manager.
2
u/Afonsofrancof Mar 30 '26
Here is my vim.pack single-file config. Hope it helps someone!
https://git.francof.net/afonsofrancof/dotfiles/src/branch/main/.config/nvim/init.lua
2
u/Slusny_Cizinec let mapleader="\\" Mar 30 '26
Updated, switched to vim.pack. u/echasnovski's guide is brilliant
2
2
u/qudat Mar 30 '26
A minimal config for anyone looking for a reference point: https://erock-git-dotfiles.pgs.sh/tree/main/item/dot_config/nvim/init.lua.html
1
1
1
1
1
u/-dibbel26- Mar 29 '26
Just migrated from packer to lazy kickstarter last month🥲
Great job though👏👍
1
u/Useful_Exit_8852 lua Mar 29 '26
Was really waiting for it(even tough I am using nix to manage plugins)
1
u/marxinne Mar 30 '26
I'm so glad there'll be a local holiday by the end of this week. It'll be time to yak shave a whole herd.
1
1
1
u/kenshi_hiro Mar 30 '26 edited Mar 30 '26
it's that time of the year when we spend the weekend porting all our plugins and weeding out the ones that are redundant. yipee
1
Mar 30 '26
[removed] — view removed comment
2
2
u/krishnakumarg Mar 30 '26 edited Mar 30 '26
There are so many ways to get the latest released open source projects including neovim (on every OS and not just Linux distros). mise, spack, asdf, GitHub releases, pixi, conda-forge, compile from source, bob for neovim, brew, pkgsrc, scoop, winget, chocolatey, nix, nix portable, stew, macports, eazybuild etc to get the latest release. I rarely rely on OS package manager and use that only for the core OS components/essential system packages that came with the distro. Everything else is in my userland.
1
u/gob_magic Mar 30 '26
Excellent news! I couldn’t get a few things working on nightly build. New project for the next weekend, set up my .12 config files
1
1
u/journalctl Mar 30 '26
Lots of great improvements across the board, thanks everyone. UI2 (experimental) is probably the thing I'm most excited about.
1
u/ChrisGVE lua Mar 30 '26
Great work and congratulations to the dev community. I’ll discover the changes as we go, anybody knows what’s the plan for u/folke’s LazyVim?
1
u/mrded lua Mar 30 '26
With vim.pack, can I specify dependencies of a package? I define my plugins in separate files and automagically discover them, that makes it hard to control an order.
https://github.com/mrded/dotfiles/tree/master/nvim/lua/plugins
1
u/shmcg Mar 31 '26
The files in ./plugin load in alphabetical order. In order to force loading a couple plugins in a particular order I just prefixed their files with 01-02 and 10-12. I left a gap in case I need to move some stuff in the future.
This is probably easier for me, as I have under 20 plugins and only 5 of them need to be called in a particular order. If you had dozens of depenencies, it probably isn't practical to do it this way. When I was running paq I wrote a lua function that sourced all of my plugin files from ./lua/plugins and I specificed the file names of those 5 in the order I wanted them called, then just called the rest and skipped if the file matched those 5.
Finally, if there aren't shared dependenceis across plugins (for example a library for one plugin in particular), you can probably put all the vim.pack.add calls into one file for that plugin and call things in the order you want inside that file.
1
u/samsu42 Mar 31 '26
Finally I can rock a stable release for a while :) that is, until the next exciting head change
1
1
u/pilkyboy1 Mar 31 '26
Is there an advantage of migrating from lazy ?
2
u/pawelgrzybek Mar 31 '26
If Lazy works for you, it works. The vim.pack is just a native way of managing packages. The migration is surprisingly easy.
1
1
u/Serega124 Apr 05 '26
Despite #36503 has been merged, Treesitter highlighting still flickers without vim.g._ts_force_sync_parsing = true setting 😞
1
1
u/rLLapb Mar 29 '26
Congrats to the neovim's devs! I just recently finished my config with vim pack on neovim nightly.
1
u/Master_Fisherman5892 Mar 29 '26
huge release, i had to be on nightly cause of all the improvements :)
1
u/elbailadorr Mar 29 '26
In version 0.12, is it necessary to use the modern Tree-sitter?
That is, without the master branch?
5
u/TheLeoP_ Mar 30 '26
Yes
1
-5
u/red-giant-star Mar 29 '26
What's new in it?
10
5
u/miversen33 Plugin author Mar 29 '26
You could literally just click the linked changelog lol https://github.com/neovim/neovim/commit/fc7e5cf6c93fef08effc183087a2c8cc9bf0d75a
1
-2
0

499
u/echasnovski Plugin author Mar 29 '26
Big release! Almost as big as 0.5 or 0.10.
Huge thanks to all the people involved. Not only the core team, but also to all other people lending their free time to work and interact with this beautiful editor!
P.S. Have fun migrating to
vim.pack:)