<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rneovim.git/src/nvim/eval/encode.c, branch master</title>
<subtitle>Neovim fork with Rahm's personal hacks.</subtitle>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/'/>
<entry>
<title>vim-patch:9.2.0031: Inefficient use of ga_concat()</title>
<updated>2026-02-21T23:02:47+00:00</updated>
<author>
<name>zeertzjq</name>
<email>zeertzjq@outlook.com</email>
</author>
<published>2026-02-20T22:32:20+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=b3a3028fd9bb32ba398680673fee0770564dcd05'/>
<id>b3a3028fd9bb32ba398680673fee0770564dcd05</id>
<content type='text'>
Problem:  Inefficient use of ga_concat()
Solution: Use ga_concat_len() when the length is already known to avoid
          use of strlen() (John Marriott).

closes: vim/vim#19422

https://github.com/vim/vim/commit/ed202035b1904c84d92adb76d7e1a95b7540e048

Co-authored-by: John Marriott &lt;basilisk@internode.on.net&gt;
Co-authored-by: Hirohito Higashi &lt;h.east.727@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:  Inefficient use of ga_concat()
Solution: Use ga_concat_len() when the length is already known to avoid
          use of strlen() (John Marriott).

closes: vim/vim#19422

https://github.com/vim/vim/commit/ed202035b1904c84d92adb76d7e1a95b7540e048

Co-authored-by: John Marriott &lt;basilisk@internode.on.net&gt;
Co-authored-by: Hirohito Higashi &lt;h.east.727@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>vim-patch:partial:9.1.2044: Inefficient use of ga_concat() (#37209)</title>
<updated>2026-01-03T01:54:12+00:00</updated>
<author>
<name>zeertzjq</name>
<email>zeertzjq@outlook.com</email>
</author>
<published>2026-01-03T01:54:12+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=147190d8e7dd53cb329230630f764020b15d9c21'/>
<id>147190d8e7dd53cb329230630f764020b15d9c21</id>
<content type='text'>
Problem:  Inefficient use of ga_concat()
Solution: Use ga_concat_len() when the length is already known to avoid
          use of strlen() (John Marriott).

Additionally the following changes are done:
os_unix.c:
- in function `socket_server_list_sockets()` use a `string_T` for the
  strings `buf` and `path` for use in `ga_concat_len()`
  and drop un-needed variable `dir`.

quickfix.c:
- in function `qf_jump_print_msg()` use a `string_T` for the string
  `IObuff` for use in `ga_concat_len()`.
- in function `qf_range_text()` use a `string_T` for the string `buf`
  for use in `ga_concat_len()`.

register.c:
- simplify function `execreg_line_continuation()`.

terminal.c:
- in function `read_dump_file()` use a `string_T` for the
  string `prev_char` for use in `ga_concat_len()`.

tuple.c:
- in function `tuple_join_inner()` use a `string_T` for the
  string `s` for use in `ga_concat_len()`. Also, change local struct
  `join_T` to use `string_T`.

vim9type.c:
- in functions `type_name_tuple()` and `type_name_func()`
  use a `string_T` for the string `arg_type` for use in
  `ga_concat_len()`.

closes: vim/vim#19038

https://github.com/vim/vim/commit/a7e671fbb9fa2af9ad6c4ba9a7a881df431cd02b

Skip tuple.

Co-authored-by: John Marriott &lt;basilisk@internode.on.net&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:  Inefficient use of ga_concat()
Solution: Use ga_concat_len() when the length is already known to avoid
          use of strlen() (John Marriott).

Additionally the following changes are done:
os_unix.c:
- in function `socket_server_list_sockets()` use a `string_T` for the
  strings `buf` and `path` for use in `ga_concat_len()`
  and drop un-needed variable `dir`.

quickfix.c:
- in function `qf_jump_print_msg()` use a `string_T` for the string
  `IObuff` for use in `ga_concat_len()`.
- in function `qf_range_text()` use a `string_T` for the string `buf`
  for use in `ga_concat_len()`.

register.c:
- simplify function `execreg_line_continuation()`.

terminal.c:
- in function `read_dump_file()` use a `string_T` for the
  string `prev_char` for use in `ga_concat_len()`.

tuple.c:
- in function `tuple_join_inner()` use a `string_T` for the
  string `s` for use in `ga_concat_len()`. Also, change local struct
  `join_T` to use `string_T`.

vim9type.c:
- in functions `type_name_tuple()` and `type_name_func()`
  use a `string_T` for the string `arg_type` for use in
  `ga_concat_len()`.

closes: vim/vim#19038

https://github.com/vim/vim/commit/a7e671fbb9fa2af9ad6c4ba9a7a881df431cd02b

Skip tuple.

Co-authored-by: John Marriott &lt;basilisk@internode.on.net&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>vim-patch:9.1.2030: inefficient use of ga_concat() (#37151)</title>
<updated>2025-12-28T23:56:45+00:00</updated>
<author>
<name>zeertzjq</name>
<email>zeertzjq@outlook.com</email>
</author>
<published>2025-12-28T23:56:45+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=e916f0327728c78945e6353eeeeb88749b077c0b'/>
<id>e916f0327728c78945e6353eeeeb88749b077c0b</id>
<content type='text'>
Problem:  inefficient use of ga_concat()
Solution: Use ga_concat_len() when length is known.
          (John Marriott)

closes: vim/vim#19027

https://github.com/vim/vim/commit/32b801abc35b03e6f88021b29c24dd2411f7a065

Co-authored-by: John Marriott &lt;basilisk@internode.on.net&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:  inefficient use of ga_concat()
Solution: Use ga_concat_len() when length is known.
          (John Marriott)

closes: vim/vim#19027

https://github.com/vim/vim/commit/32b801abc35b03e6f88021b29c24dd2411f7a065

Co-authored-by: John Marriott &lt;basilisk@internode.on.net&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>vim-patch:8.2.3766: converting a funcref to a string leaves out "g:"</title>
<updated>2025-12-20T01:45:47+00:00</updated>
<author>
<name>zeertzjq</name>
<email>zeertzjq@outlook.com</email>
</author>
<published>2025-12-19T07:27:09+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=f15c28ed7a852ccab8de6ac3e38d167187cc183e'/>
<id>f15c28ed7a852ccab8de6ac3e38d167187cc183e</id>
<content type='text'>
Problem:    Converting a funcref to a string leaves out "g:", causing the
            meaning of the name depending on the context.
Solution:   Prepend "g:" for a global function.

https://github.com/vim/vim/commit/c4ec338fb80ebfb5d631f0718fdd1a1c04d9ed82

Co-authored-by: Bram Moolenaar &lt;Bram@vim.org&gt;
Co-authored-by: Jan Edmund Lazo &lt;jan.lazo@mail.utoronto.ca&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:    Converting a funcref to a string leaves out "g:", causing the
            meaning of the name depending on the context.
Solution:   Prepend "g:" for a global function.

https://github.com/vim/vim/commit/c4ec338fb80ebfb5d631f0718fdd1a1c04d9ed82

Co-authored-by: Bram Moolenaar &lt;Bram@vim.org&gt;
Co-authored-by: Jan Edmund Lazo &lt;jan.lazo@mail.utoronto.ca&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>refactor(build): remove INCLUDE_GENERATED_DECLARATIONS guards</title>
<updated>2025-08-14T07:34:38+00:00</updated>
<author>
<name>bfredl</name>
<email>bjorn.linse@gmail.com</email>
</author>
<published>2025-08-03T09:16:30+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=442f297c633375074a88133a9b3d8c08cad58dd0'/>
<id>442f297c633375074a88133a9b3d8c08cad58dd0</id>
<content type='text'>
These are not needed after #35129 but making uncrustify still play nice
with them was a bit tricky.

Unfortunately `uncrustify --update-config-with-doc` breaks strings
with backslashes. This issue has been reported upstream,
and in the meanwhile auto-update on every single run has been disabled.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
These are not needed after #35129 but making uncrustify still play nice
with them was a bit tricky.

Unfortunately `uncrustify --update-config-with-doc` breaks strings
with backslashes. This issue has been reported upstream,
and in the meanwhile auto-update on every single run has been disabled.
</pre>
</div>
</content>
</entry>
<entry>
<title>refactor(shada): rework msgpack decoding without msgpack-c</title>
<updated>2024-08-05T09:12:44+00:00</updated>
<author>
<name>bfredl</name>
<email>bjorn.linse@gmail.com</email>
</author>
<published>2024-07-02T11:45:50+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=f926cc32c9262b6254e2843276b951cef9da1afe'/>
<id>f926cc32c9262b6254e2843276b951cef9da1afe</id>
<content type='text'>
This also makes shada reading slightly faster due to avoiding
some copying and allocation.

Use keysets to drive decoding of msgpack maps for shada entries.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This also makes shada reading slightly faster due to avoiding
some copying and allocation.

Use keysets to drive decoding of msgpack maps for shada entries.
</pre>
</div>
</content>
</entry>
<entry>
<title>refactor(shada): don't use msgpack_packer for shada</title>
<updated>2024-06-27T16:46:27+00:00</updated>
<author>
<name>bfredl</name>
<email>bjorn.linse@gmail.com</email>
</author>
<published>2024-06-24T09:27:56+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=782b3024ef0e3d6615e9dc90509a29e96ab58152'/>
<id>782b3024ef0e3d6615e9dc90509a29e96ab58152</id>
<content type='text'>
Now msgpack-c is never used for packing. The real fun part will be
replacing it for unpacking.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Now msgpack-c is never used for packing. The real fun part will be
replacing it for unpacking.
</pre>
</div>
</content>
</entry>
<entry>
<title>refactor(typval)!: remove distinction of binary and nonbinary strings</title>
<updated>2024-06-27T09:04:04+00:00</updated>
<author>
<name>bfredl</name>
<email>bjorn.linse@gmail.com</email>
</author>
<published>2024-06-25T13:33:47+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=bda63d5b97dfb333de6f4bd757dbb978906062a2'/>
<id>bda63d5b97dfb333de6f4bd757dbb978906062a2</id>
<content type='text'>
This is a breaking change which will make refactor of typval and shada
code a lot easier. In particular, code that would use or check for
v:msgpack_types.binary in the wild would be broken. This appears to be
rarely used in existing plugins.

Also some cases where v:msgpack_type.string would be used to represent a
binary string of "string" type, we use a BLOB instead, which is
vimscripts native type for binary blobs, and already was used for BIN
formats when necessary.

msgpackdump(msgpackparse(data)) no longer preserves the distinction
of BIN and STR strings. This is very common behavior for
language-specific msgpack bindings. Nvim uses msgpack as a tool to
serialize its data. Nvim is not a tool to bit-perfectly manipulate
arbitrary msgpack data out in the wild.

The changed tests should indicate how behavior changes in various edge
cases.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is a breaking change which will make refactor of typval and shada
code a lot easier. In particular, code that would use or check for
v:msgpack_types.binary in the wild would be broken. This appears to be
rarely used in existing plugins.

Also some cases where v:msgpack_type.string would be used to represent a
binary string of "string" type, we use a BLOB instead, which is
vimscripts native type for binary blobs, and already was used for BIN
formats when necessary.

msgpackdump(msgpackparse(data)) no longer preserves the distinction
of BIN and STR strings. This is very common behavior for
language-specific msgpack bindings. Nvim uses msgpack as a tool to
serialize its data. Nvim is not a tool to bit-perfectly manipulate
arbitrary msgpack data out in the wild.

The changed tests should indicate how behavior changes in various edge
cases.
</pre>
</div>
</content>
</entry>
<entry>
<title>refactor(typval): don't use msgpack_packer for msgpackdump()</title>
<updated>2024-06-24T08:38:36+00:00</updated>
<author>
<name>bfredl</name>
<email>bjorn.linse@gmail.com</email>
</author>
<published>2024-06-15T17:50:44+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=2bb1a18631c4035e4a582b7d995968acbac874bf'/>
<id>2bb1a18631c4035e4a582b7d995968acbac874bf</id>
<content type='text'>
Step towords completely eliminating msgpack_packer.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Step towords completely eliminating msgpack_packer.
</pre>
</div>
</content>
</entry>
<entry>
<title>fixup: apply the change on more files</title>
<updated>2024-06-04T08:42:19+00:00</updated>
<author>
<name>James Tirta Halim</name>
<email>tirtajames45@gmail.com</email>
</author>
<published>2024-06-03T04:10:30+00:00</published>
<link rel='alternate' type='text/html' href='http://git.josher.dev/rneovim.git/commit/?id=200e7ad1578619e78c664bd0c6be024168433412'/>
<id>200e7ad1578619e78c664bd0c6be024168433412</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
