Hello Vim users! Announcing: Vim (Vi IMproved) version 9.0 This is a major release. The main new feature is the addition of Vim9 script. Besides that a lot of bugs have been fixed, documentation was updated, test coverage was improved, etc. Read the announcement online: https://www.vim.org/vim90.php Once you have installed Vim 9.0 you can find details about the changes since Vim 9.0 with: :help version9 Why Vim9 Script --------------- A new script language, what is that needed for? Vim script has been growing over time, while preserving backwards compatibility. That means bad choices from the past often can't be changed and compatibility with Vi restricts possible solutions. Execution is quite slow, each line is parsed every time it is executed. The main goal of Vim9 script is to drastically improve performance. This is accomplished by compiling commands into instructions that can be efficiently executed. An increase in execution speed of 10 to 100 times can be expected. A secondary goal is to avoid Vim-specific constructs and get closer to commonly used programming languages, such as JavaScript, TypeScript and Java. The performance improvements can only be achieved by not being 100% backwards compatible. For example, making function arguments available by creating an "a:" dictionary involves quite a lot of overhead. In a Vim9 function this dictionary is not available. Other differences are more subtle, such as how errors are handled. For those with a large collection of legacy scripts: Not to worry! They will keep working as before. There are no plans to drop support for legacy script. No drama like with the deprecation of Python 2. Interesting Features -------------------- To profit from the speedup a function must be defined with "def". The argument and return types must be specified. This is not only to make execution faster, it also helps uncovering mistakes early, when the function is compiled into byte code. Variables are declared with "var" and also have a type, either explicitly or inferred from the assigned value. Line continuation does not require using a backslash, the mechanism that is used in legacy script, which is a bit weird and was required to keep it backwards compatible. Function calls do not require "call", assignments are done without "let" and expressions are evaluated without "eval". This makes a Vim9 script look a lot more like most programming languages. Splitting up a large script in small pieces has been made a lot simpler. In one script "export" is used to make specific functions and variables available to other scripts. The rest is local to the script. Then "import" is used where the exported items are to be used. Combined with an autoload mechanism this makes a flexible and powerful way to implement large plugins. Comments now start with "#". The previous double quote syntax, which comes from the good old Vi, interferes with how strings are used. The use of "#" is known from many other languages, such as Python and shell scripts. Otherwise most things work the same way. Users who have written Vim script will find it easy to switch over. Unexpected differences usually lead to an error message with a hint how to do make the line work in Vim9 script. Details about Vim9 script and rationale for the choices can be found with ":help vim9" in Vim or online: https://vimhelp.org/vim9.txt.html Otherwise, many improvements were made not related to Vim9 script. You can find a list with ":help new-9" in Vim or online: https://vimhelp.org/version9.txt.html#new-9 Future Work ----------- There will surely be a Vim 9.1 release. Nobody knows when. Among the plans for Vim9 script is the addition of classes. Although a dictionary can be used to simulate this, it is far from ideal. Most programmers are familiar with classes such as Java has. Something like that should be added to Vim9 script. The keywords are already reserved. Dedication ---------- Vim version 9.0 is dedicated to Sven Guckes, who passed away in February 2022 when the release was being prepared. Sven was a long time supporter of Vim. He registered the vim.org domain and created the first Vim website. We will remember him! Gratitude --------- If you like Vim, please consider helping poor children in the south of Uganda: http://iccf-holland.org Where to get it --------------- The best way to obtain the latest Vim is using Git. Summary: git clone https://github.com/vim/vim.git More information here: https://www.vim.org/git.php For MS-Windows most of you will want to use the signed installer at: https://github.com/vim/vim-win32-installer/releases Or use the self-installing executable (uses older libraries): https://ftp.nluug.nl/pub/vim/pc/gvim90.exe Information about which files to download for what system: https://www.vim.org/download.php A list of mirror sites can be found here: https://www.vim.org/mirrors.php Files available for download (if you don't use GitHub or the installer): UNIX: sources + runtime files, bzip2 compressed: https://ftp.nluug.nl/pub/vim/unix/vim-9.0.tar.bz2 VARIOUS: help files converted to HTML: https://ftp.nluug.nl/pub/vim/doc/vim90html.zip MS-WINDOWS separate files: Runtime files: https://ftp.nluug.nl/pub/vim/pc/vim90rt.zip GUI binary for Windows NT/2000/XP/7/8/10: https://ftp.nluug.nl/pub/vim/pc/gvim90.zip GUI binary with OLE support: https://ftp.nluug.nl/pub/vim/pc/gvim90ole.zip Console version for Windows NT/2000/XP/7/8/10: https://ftp.nluug.nl/pub/vim/pc/vim90w32.zip Sources for PC (with CR-LF): https://ftp.nluug.nl/pub/vim/pc/vim90src.zip For debugging: https://ftp.nluug.nl/pub/vim/pc/gvim90.pdb https://ftp.nluug.nl/pub/vim/pc/gvim90ole.pdb https://ftp.nluug.nl/pub/vim/pc/vim90w32.pdb AMIGA: Only runtime and sources are provided, no binary: https://ftp.nluug.nl/pub/vim/amiga/vim90rt.tgz https://ftp.nluug.nl/pub/vim/amiga/vim90src.tgz Omitted in this version are: - The 16-bit DOS, OS/2 and Amiga versions, these are obsolete. - The 32-bit console version for MS-DOS/Windows 95/98 Mailing lists et al. -------------------- A good place to get help from others is Stackexchange: https://vi.stackexchange.com/ For user questions you can turn to the Vim mailing list. There are a lot of tips, scripts and solutions. You can ask your Vim questions, but only if you subscribe. See https://www.vim.org/maillist.php#vim If you want to help Vim development, discuss new features or get the latest patches, subscribe to the vim-dev mailing list. See https://www.vim.org/maillist.php#vim-dev Subject specific lists: Macintosh issues: https://www.vim.org/maillist.php#vim-mac Before you ask a question you should search the archives, someone may already have given the answer. Reporting bugs -------------- Create an issue at GitHub or, if you know the solution, create a pull request: https://github.com/vim/vim Alternatively send your problem to <vim-...@vim.org>. All the time spent on answering mail and digging into problems is subtracted from the time that is spent on improving Vim! Always give a reproducible example and try to find out which settings or other things influence the appearance of the bug. Start Vim without your plugins: "vim --clean". Try different machines if possible. See ":help bugs" in Vim. Ideally write a test that reproduces the problem and will pass once it is fixed. Happy Vimming! -- Anyone who is capable of getting themselves made President should on no account be allowed to do the job. -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy" /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net \\\ /// \\\ \\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ /// \\\ help me help AIDS victims -- http://ICCF-Holland.org /// -- -- You received this message from the "vim_mac" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_mac" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_mac+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/vim_mac/20220628145517.515BB1C055A%40moolenaar.net.