新闻通讯 #3 - 迟到总比不到好

2014 年 9 月

欢迎来到 Neovim 的第三期(也是延迟的)新闻通讯,该项目旨在彻底改造 Vim 代码库。

下一期新闻通讯将在 11 月初发布。它已经改为隔月发布,以免用过多的令人惊叹的震撼来压倒任何敏感的 Neovim 爱好者。

一般新闻

超过 1000 个问题

GitHub 上的问题跟踪器现在有超过 1000 个问题/拉取请求。幸运的第 1000 个拉取请求是在 8 月之前不久打开的。

文档更新

正如去年 7 月的新闻通讯中提到的,文档已成功迁移到neovim.io/doc/

它提供了一些通用的文档链接,还提供了一些针对开发人员和贡献者的更具体的报告。这些报告已经帮助开发人员贡献并改进代码库。

开发新闻

以下是过去两个月的头条新闻(无特定顺序)。

使用管道实现system()

这个问题在6 月的新闻通讯中被提及,当时它还尚未解决。

@aktau完成实现 VimL system() 函数,以使用管道和作业系统,而不是重定向到临时文件。此更改提供了不错的速度提升,并避免了一些权限问题(主要影响尚未支持的 Windows)。

旧的system() 实现的缓慢尤其在被调用的进程有大量输出时显而易见。例如:system('cat largefile')

注意

关于新的system() 代码,有一个错误报告:它与Selecta 插件不兼容,如这里所述。

更精确的分析

@aktau利用了libuv 的功能,在许多系统上提供高分辨率时钟,以此拉取请求改进 Neovim 的分析功能。

之前的实现使用了gettimeofday()。这是 Neovim 在 Windows 上运行的障碍(如上一节所述),因为此函数在 Windows 中不受支持。

有关 Vim 中分析的更多信息,只需运行:help profiling

删除 MoonScript

在项目开始时,MoonScript 与 Lua 之间的争论是一个广泛讨论的话题。

MoonScript(一种编译为 Lua 的语言)被选为单元测试的语言。在更新单元测试库Busted 之后,一些单元测试失败了

因此,决定删除该依赖项,以简化测试并消除抽象层。 @tarruda 做出了相应的更改和拉取请求

Msgpack RPC

讨论产生了 Neovim 不完全符合msgpack-rpc 规范 的问题。

在过去几周,@tarruda完成实现,以完全支持该规范。

他一直在努力升级 msgpack 的使用到最新版本 2.0,该版本应该很快合并。

Python 客户端

在第一期新闻通讯中,首次讨论了Python 客户端。从那时起,@tarruda对其进行了重构,以进行各种改进。

Go 客户端

@myitcv 提出了一项添加 Go 集成的提案,类似于 Python 集成的实现方式。该提案还涉及语言无关性。

虽然此处篇幅有限,无法详细介绍,但上面的链接还包括有关实现和讨论的更多详细信息。

更多代码删除

在两个不同的拉取请求(12)中删除了更多已失效或用于不受支持的旧系统代码。

仍然存在代码的系统包括SGI IRISBeOSEBCDIC

跨平台临时文件名

在 Neovim 中创建临时文件的函数需要libuv 中没有的功能。

@Hinidu(Neovim 的一位贡献者)提交了一个拉取请求 到 libuv,以添加一个新函数uv_fs_mkdtemp。这些更改(现在是 libuv0.11.27 版的一部分)正在被Neovim 使用来提供临时文件/目录创建,并且这些更改跨平台有效。

由于跨平台代码已贡献给 libuv,因此所有基于 libuv 的项目都可以从这些更改中受益。

第一个赏金已领取!

早在 4 月 9 日,第一个赏金就在Neovim 的 Bountysource 上创建。该请求是将 Christian Brabandt 为 Vim 编写的现有补丁移植到 Neovim。该补丁提供了一个breakindent 选项,该选项将在换行时匹配缩进。

@fmoralesc 创建了一个拉取请求 来领取该赏金。经过一些讨论和修改后,这些更改已合并到主分支中,@fmoralesc 已获得该赏金!

更多单元测试

@war1025为两个现有文件添加了单元测试:buffer.cfileio.c。在重构代码时增加更多单元测试覆盖率是 Neovim 目标的一部分。

核心服务提供者

@tarruda 做出了一个拉取请求,该请求通过 msgpack API 公开了 Neovim 的一些核心功能。

虽然仍然处于不断演变的阶段,但这些核心功能包括:

可嵌入性进展

@tarruda添加了一个--embedded-mode 标志,该标志将允许另一个程序在后台启动 Neovim 并将其用作无头实例。

从技术上讲,它使用msgpack-rpc 通过 stdin 和 stdout 与客户端通信。

Windows 进展

Neovim 已成功在Microsoft Visual C++ 中编译,以及使用MinGW,分别在此问题此问题中。

帮助

捐赠

如果您想帮助支持开发,您可以使用比特币捐赠,地址:1Evu6wPrzjsjrNPdCYbHy3HT6ry2EzXFyQ,或者在Neovim Bountysource 页面上支持团队。

贡献

如果您是经验丰富的开发人员,或者没有经验但想学习,请访问GitHub 仓库 并查看READMECONTRIBUTING 指南,最后是Wiki,以了解更多信息。

有很多机会帮助我们,也有很多事情可以做。

总结

您对这期新闻通讯有任何反馈或建议吗?欢迎通过Neovim Twitter 联系我们。

还要确保订阅RSS Feed,以便了解 Neovim 世界的最新动态。下一期新闻通讯将在两个月后,也就是 11 月初发布。

下次再见。:wq

新闻

新闻档案中查找更多更新。还有一个RSS Feed

什么是 Neovim?

Neovim 是一款基于 Vim 的文本编辑器,专为可扩展性可用性而设计,以鼓励新的应用程序和贡献

讨论

访问#neovim:matrix.org 或 irc.libera.chat 上的 #neovim,与团队聊天。