Pegjs: 寻找新的维护者

创建于 2017-05-07  ·  20评论  ·  资料来源: pegjs/pegjs

大约 7 年前,当我开始 PEG.js 时,我从未想过它会是一个如此成功的项目,而且我参与其中的时间会如此之长。 大部分时间我都乐在其中,但在过去一年左右的时间里,我的动力开始减弱。 我发现我必须说服自己真正坐下来解决问题或编写代码。 我逐渐意识到 PEG.js 不再是我想花时间在上面的东西。 因此,我正在寻找新的 PEG.js 维护者。

我在找谁?

我正在寻找对解析器和解析器生成器的工作原理有深刻理解、有强烈动机、有开源开发经验并且清楚在哪里领导 PEG.js 开发(这可能与当前路线图匹配也可能不匹配)的人。 这些都不是严格的要求,但我不太可能将 PEG.js 交给在这些领域明显缺乏的人。

感兴趣的?

如果您有兴趣接管 PEG.js,请为此问题添加评论,并包括您认为可以让我相信您是合适人选的任何内容:-) 我将在五月的周末审查评论并宣布新的维护者13-14。 如果届时没有合适的维护者出现,PEG.js 将正式停止维护。

转让资产

转让维护权涉及转让以下资产:

新的维护者需要负责托管和运行PEG.js 网站,该


如果您对我上面写的任何内容有任何疑问或注释,请随时对此问题添加评论。

最有用的评论

@dmajda非常感谢 PEG.js。 这是非常有用的。 我希望这个项目能够继续下去。

所有20条评论

我只想说我最近几个月才开始使用 PEG.js,我喜欢它。 语法简单易学,概念数量较少。 文档有点少,但我找到了我需要的一切。 此外,如果没有 javascript.pegjs 示例,我就不会开始使用我的 JavaScript 方言。 这大大减少了工作量。

在它目前的状态下,它有什么好处? 对我来说,制作原型很容易。 缺点是对于大量数据来说可能很慢,但我现在不在乎。 它的竞争对手是什么? 您希望看到它继续增长,还是希望有人创建 2.0 版? 如果它目前是稳定的,为什么不把它留在那里,也许还有更多的文档。

对于路线图,现代化代码会给您带来什么? 快点? 更容易维护? 还是只是“最新”? 我可以理解使用 Gulp 而不是 Make 来使其更易于维护。 清理听起来很昂贵,几乎是 1.5,称为当前的 1.0。 我觉得“显着提高性能”对于 1.0 来说是一个太大的目标。 我觉得目前是1.0。 它非常稳定、良好的错误消息、所有功能工作等。软件 1.0 不必是“唯一的”。 那更多的是 2.0、3.0 等。

我不知道我是否可以帮助维护,但我希望看到该网站、Google 群组等继续存在。

@mikeaustin感谢您的评论。 让我快速回答您的问题(这可能对其他关注此问题的人也有用)。

在它目前的状态下,它有什么好处? 对我来说,制作原型很容易。

原型设计一直是主要用例,同时解析对于正则表达式和各种交互式工具来说过于复杂的小型语言/DSL。 最初,我创建 PEG.js 是因为 PEG 提供了很好的语法语法,并且没有使用它的 JavaScript 解析器生成器,并且还能够生成良好的错误消息。

缺点是对于大量数据来说可能很慢,但我现在不在乎。

许多人这样做,这就是为什么绩效工作在路线图中。

它的竞争对手是什么?

JisonNearley

您希望看到它继续增长,还是希望有人创建 2.0 版? 如果它目前是稳定的,为什么不把它留在那里,也许还有更多的文档。

这取决于新的维护者。 但我不希望 PEG.js 永远停留在当前的功能集上。 它有更多的潜力。

有许多有用的功能可以相对容易地添加,而无需对核心进行任何更改(#30、#38、#107、#45 和 #285)。 然后是一些长期存在的问题/用例,需要重新思考核心概念(#11、#217)或更改 API(#327、#430)。 我认为所有这些都值得一看。

对于路线图,现代化代码会给您带来什么? 快点? 更容易维护? 还是只是“最新”?

更容易维护和更新(无可否认,这在一定程度上是公关决定——当你的项目在技术上看起来很旧时,即使新旧技术之间只有边际生产力差异,这也是糟糕的)。

我觉得目前是1.0。 它非常稳定、良好的错误消息、所有功能工作等。软件 1.0 不必是“唯一的”。 那更多的是 2.0、3.0 等。

可能是 :-) 我对 1.0 的定义总是“当我对它感到满意时”,但不知何故从未出现 - 部分原因是我没有在最困扰我的事情上工作,而是在最困扰用户的事情上工作。在现实世界中使用 PEG.js 是必要的。 我的完美主义天性也无济于事。

由新的维护者来定义 1.0。

https://github.com/futagoza/epeg.js😊 (需要注意的是,虽然列出的大部分

我对一切都很好,但我唯一的问题是维护测试😞

@dmajda非常感谢 PEG.js。 这是非常有用的。 我希望这个项目能够继续下去。

@futagoza只是澄清一下,您的评论意味着您有兴趣维护 PEG.js? 或者你认为未来在别处? :-)

我对一切都很好,但我唯一的问题是维护测试

具体是什么问题?

@dmajda是的,我有兴趣维护它😄

我对一切都很好,但我唯一的问题是维护测试

具体是什么问题?

我的意思是,我通常在进行过程中进行编码和调试,但是当我尝试像这里那样进行测试时,我开始在维护它们时遇到问题,因此通常我要么进行测试以查看最终结果,要么就离开对其他人的规范和基准测试,尽管事后看来这会增加某些项目的开发时间 😆

@dmajda我目前正在使用 PEG.js 作为我的硕士项目的一部分。 它不仅有用,而且使用起来很有趣而且很酷。 我真的希望你认为有人是值得的 PEG.js 继承人。

@futagoza在问题描述中,我写道:

我正在寻找对解析器和解析器生成器的工作原理有深刻理解、强烈的动机、开源开发经验以及明确领导 PEG.js 开发(可能与当前路线图匹配也可能不匹配)的人。

在您的评论中,您仅提供了一个指向 ePEG.js 的链接,这本身不足以让我确定您是否符合上述描述(除了 ePEG.js 的 TODO 列表表明您可能知道在哪里领导 PEG.js 开发)。

我想你可能想让你的工作和网络形象为你自己说话,所以我查看了你的网站并点击了 Twitter 和 LinkedIn 链接,但它们都已经死了——这并没有给人最好的印象,因为你可能可以想象。 在那之后,我放弃了。 至于 ePEG.js,在其当前阶段,很难将其视为愿望清单。

所以,让我问几个具体的问题:

  • 你的背景是什么? 特别是,您对解析器和解析器生成器的了解程度如何? 你从哪里获得这些知识?

  • 你从事 PEG.js 的动机是什么? 特别是,您是否在个人或工作项目中使用 PEG.js(或 ePEG.js)? 维护 PEG.js 是你日常工作的一部分还是你会在空闲时间做?

  • 您在开源项目方面的经验水平如何? 特别是,您是否或您是否维护过任何与 PEG.js 相当的开源项目(主要是在用户数量上)?

  • 在您看来,PEG.js 目前缺少或做得不好的前 5 件事是什么? 另外,你能描述一下你想把这个项目带到哪里吗? 一年后你想在哪里看到它?

感谢您回答这些问题。 他们将帮助我决定你是否会成为 PEG.js 未来的正确维护者。

所以我查看了你的网站并点击了 Twitter 和 LinkedIn 链接,但他们都死了

该网站是我在 2010 年使用旧别名 Vitron Prince 创建的旧网站的副本/粘贴,因此这些链接大多不再有效,或者指向我不再维护的网站/个人资料,而该网站从未正确完成。 现在我真正拥有的唯一在线存在是 GitHub 和 PlayStation 😆,主要是因为我是一名全职照顾者。


你的背景是什么? 特别是,您对解析器和解析器生成器的了解程度如何? 你从哪里获得这些知识?

总而言之,我在过去 5 年中自学,学习字符串和缓冲区标记化,以快速但准确的方式生成 AST 的各种方法,同时执行一些记忆,主要研究各种方法以最佳地将其他计算机语言转译为JavaScript 和 C++,识别可以压缩成单个通道的通道以加快编译,同时对不同的通道使用不同的 AST 访问者以获得最佳性能。

至于解析器生成器,我所知道的一切都是通过研究 PEG.js 的解析器生成器以及比较数字比比较字符串更快的知识而学到的,所以我更喜欢String#charCodeAt不是String#charAt除非速度不是一个因素。 我仍然无法理解与使用options.optimize = "size"生成解析器相关的部分,但由于我专注于speed with accuracy ,我从未真正获得研究解析器生成部分的动力。

还要注意:虽然我学到了很多,但我很难记住术语😊


你从事 PEG.js 的动机是什么? 特别是,您是否在个人或工作项目中使用 PEG.js(或 ePEG.js)? 维护 PEG.js 是你日常工作的一部分还是你会在空闲时间做?

我在 PEG.js 上工作的动机是开发CXLang ,以及为我将在我的游戏中使用的各种基于文本的资源文件制作自定义解析器,所以我想说我将它用于个人和工作项目,所以维护 PEG.js,就像 ePEG.js 一样,主要是在我的空闲时间。

我现在主要专注于开发的是(按照功能需要的顺序):

  • PEG.js 或https://github.com/futagoza/epeg.js
  • https://github.com/cx-lang/cx-lang
  • Roxby,一个 C++ 游戏引擎和基于 Node.js 的 SDK,用于构建无缝但可定制的 3D 世界
  • Xross M,一个跨平台和游戏不可知的模组系统
  • Xross C,一款与游戏无关的配套应用
  • 我的世界克隆版,专注于跨平台多人游戏和多平台保存
  • 一款 MMORPG 游戏,设置在 1 个无缝的巨大互动世界中,包含口袋世界
  • 一系列基于与我的 MMORPG 中相同的袖珍世界的单人游戏

需要注意的是,我在 CXLang、Roxby 和 Xross 中使用了 PEG.js,这使得 PEG.js 目前成为我的游戏开发中非常重要的一部分,因为它允许我以纯文本形式创建各种资产,然后使用 PEG.js和自定义编译器,将它们转换为任何游戏、其他程序/工具或库代码使用的本机代码。


您在开源项目方面的经验水平如何? 特别是,您是否或您是否维护过任何与 PEG.js 相当的开源项目(主要是在用户数量上)?

不,因为我自 2013 年以来一直是一名护理人员,所以我将空闲时间花在了视频游戏、韩剧或各种 C++/Node.js 项目上(主要是上面提到的那些),如果我愿意,我会将其中一些放在 GitHub 上想要共享代码,我保存在笔记本电脑上的其他代码,因为它们包含我正在开发的个人项目的代码,以在未来创建商业产品。

虽然 CXLang 已经是开源的(有点,因为它的各个部分还没有进入 GitHub,因为这里和那里的测试很少,继续开发),我只打算在我为 Roxby 和 Xross 开发工作原型时开源我的游戏。


在您看来,PEG.js 目前缺少或做得不好的前 5 件事是什么? 另外,你能描述一下你想把这个项目带到哪里吗? 一年后你想在哪里看到它?

  • 一个不制作ePEG.js或替代品的理由 😛
  • 当前的字节码生成器仅对当前的 JavaScript 生成器有用

    • 它不应该是编译器传递的一部分,而是生成器的可选助手

    • 应该生成字节码和 AST 以帮助生成任何语言的解析器(特定于插件)

    • 基于选项,生成可选的字节码来指导解析器生成器

  • PEG.js 语法语法中的操作和字符串文字限制解析器生成器和源类型:

    • 设置规则使用的操作的返回类型的属性( <strong i="27">@returns</strong> ...[returns = ...]

    • 序列选择和提取的语法 = 更少的操作和更少的对特定语言的依赖

    • 通过数字文字的缓冲区支持,为除纯文本源代码之外的文件开发解析器

  • 允许更快速开发解析器的语法:

    • 少写 PEG.js 语法的模板

    • 属性(预定义和自定义)可轻松管理内部传递或插件的输出

    • 从其他语法导入规则,允许开发者通过文件名轻松追踪规则

  • 当前的插件系统使得更改 API 和优化 PEG.js 以在编辑器中使用变得更加困难
  • 解析器生成器太复杂,对插件不友好。 它应该被分成不同的文件。

目前,您(在网站或 GitHub 存储库上)阅读的有关 PEG.js 的第一件事是:

PEG.js 是一个简单的 JavaScript 解析器生成器,可以生成具有出色错误报告的快速解析器。 您可以使用它来处理复杂的数据或计算机语言,并轻松构建转换器、解释器、编译器和其他工具。

我相信解决上述原因不仅可以支持本段所承诺的内容,而且可以让开发人员在开发解析器时有更多的自由。

老实说,考虑到我目前的日程安排,我看不出一年后会在哪里,但我的 PEG.js 路线图是这样的:

  • __PEG.js v1__ - 包含 0.11 里程碑所描述的大部分内容,但具有多文件支持
  • __PEG.js v1.x__ - 维护版本(当前 LTS)
  • __PEG.js v2.x__ - 使用 ECMAScript 2015 编写的代码库实现上述大部分功能
  • __PEG.js v3.x__ - LTS 版本
  • __PEG.js v4.x__ - ECMAScript 2017 代码库、缓冲区支持、新插件界面
  • __PEG.js v5.x__ - LTS 版本
  • __PEG.js v6.x__ - ECMAScript 20xx 代码库,复杂的数据结构,新的 JavaScript 解析器生成器
  • __PEG.js v7.x__ - LTS 版本
  • __PEG.js v8.x__ - ECMAScript 20xx 代码库,更多助手和可选通道,以编辑器为中心的支持
  • __PEG.js v9.x__ - 最终 LTS 版本,ECMAScript 20xx+ 代码库

此路线图的原因是帮助更轻松地划分我的任务和用户问题,同时也让我有空间了解更多有关解析器生成器的信息以及规划更好的插件界面,为 __PEG.js v4.x__ 和 __PEG 做好准备.js v6.x__

还要注意@dmajda ,如果我接任维护者,我最终也会寻找更多的维护者、贡献者和版主来帮助我管理不同方面,以便我可以专注于项目的开发,因为这是我的主要工作重点,将Twitter 帐户Google Group等方面留给版主,从贡献者那里获得帮助来组织和帮助我维护基准测试,而维护者可以帮助我管理 LTS 版本。

我在用peg写一个markdown解析器,谢谢😀

我是前端开发者,我可以改进网站,你能邀请我加入这个组织吗? 谢谢!

@futagoza首先,让我为我的缓慢回复道歉——我很难找到连续的时间来阅读你写的内容,思考它,并在上周撰写回复。

从你写的内容,我可以看出你的积极性很好,你的资格也很扎实。 您对 PEG.js 的想法也与我认为的 PEG.js 的最大问题一致,正如其用户所认为的那样。 我特别喜欢你希望让更多的贡献者参与——这是我认为作为维护者有点失败的一个领域。

我不太担心的一件事是您希望看到许多功能的引入,这可能会导致功能蔓延。 许多 PEG.js 用户看重其简单性。

在任何情况下,鉴于上述所有情况,并且鉴于没有其他人对接管 PEG.js 感兴趣,我认为没有理由不将 PEG.js 维护传递给您。

我在此宣布你是 PEG.js 的新维护者。

恭喜!

我将在一分钟内在 Twitter 和 Google 群组中宣布更改。 然后我会向您发送一封电子邮件,其中包含有关项目资产转移的详细信息。 转移完成后,我将完全退出该项目。

我希望你能好好照顾 PEG.js,它在你手中的未来会是光明的 :-)

我是前端开发者,我可以改进网站,你能邀请我加入这个组织吗? 谢谢!

@ericjjj感谢您的提议,现在由@futagoza 决定

@futagoza 😂 恭喜,我是前端开发者,我可以改进网站,可以邀请我加入这个组织吗? 谢谢!

@dmajda谢谢😄,我会尽力的。

我也担心功能蠕变,这就是我将 LTS 时间表添加到上面的路线图的原因,但正如我上面提到的,这还不是一成不变的。

@ericjjj感谢提供 m8 👍

我将讨论最需要做的事情,但该网站已经在我的待更新事项列表中。

转移过程完成后,我对网站进行了轻微更新以反映维护者的变化,我计划在网站的存储库上打开一个新问题,我将在那里讨论我计划更改、添加或删除的内容。

当我创建这个问题时,我一定会提到你,这样你就知道什么时候该跳进来向我展示你的想法并分享你的想法。 在我决定好网站的去向后,如果你还愿意帮助我,我会邀请你😆

@futagoza好的,非常感谢😀

如果添加到组织中,我会做出贡献

我可以把一些东西放在一起来制作一个更大的分步教程。 一门非常基本的语言,比如将 JavaScript 剥离到它的核心,会帮助我学习如何使用 PEG.js。 还知道如何/最好的方法来遍历 AST 是我必须在其他地方找到的东西。

这些示例从一个小型计算器到一个完整的 JavaScript 解析器。 我认为在两者之间有一些东西会很好,并且有一个与之配套的教程。

我写的例子文章:
https://structura.quora.com/Extension-Methods-in-JavaScript

所以, @futagoza是新的 PEG.js 维护者。
但是为什么这个问题仍然存在呢?

顺便说一句,谢谢你们这么棒的项目!
我的第一个程序之一是用 C++ 编写的 Pascal 语言解析器——它很难让它工作:D
JavaScript + PEG.js 使这样的任务更容易

目前我正在使用这个项目为类似 bash 的语言(qmake pro-file)创建非常复杂的解析器,并且已经面临缺乏功能的问题。 例如,无法将一个大的语法文件拆分为几个小文件。
我能做些什么来帮助这些事情的实施?

但是为什么这个问题仍然存在呢?

我只是忘记关闭它。 现在这样做。

此页面是否有帮助?
0 / 5 - 0 等级