跳到内容
新问题

对这个项目有疑问吗?注册一个免费的GitHub帐户以打开一个问题,并联系其维护者和社区。

单击“注册GitHub”,表示您同意我们的服务条款隐私声明。我们偶尔会向您发送与帐户相关的电子邮件。

已经在GitHub上了?登录到您的帐户

GHC基础库:稳定性与创新相结合 #51

对话

埃里克森2314
复制链接
贡献者

@埃里克森2314 埃里克森2314 评论2023年6月26日

本文件描述了GHC团队和核心图书馆委员会之间达成的一项计划,说明了我们计划如何合作,以协调GHC及其生态系统的创新和稳定目标。

那么,从形式上讲,这与其说是一项提案,不如说是一份结果记录。然而,我们正在使用哈斯克尔基金会技术工作组提案回购,以便我们能够永久公开记录我们计划如何工作,以便其他人可以发表评论,并在必要时对文件进行润色以增加清晰度。

提供


-“cabal check”(每包检查)可能会对使用“ghc-internals”的包发出警告。

- ...还有什么?

选择隐藏此评论的原因

将显示原因,以便向其他人描述此评论。了解更多信息.

我们应该利用一切可能的社会和技术手段,阻止人们直接依赖ghc内部构件

真的吗?包括GHC/Cabal,仅拒绝ghc内部构件如果当前生成的包不是基础或其他内部白名单软件包?

但它说的是“劝阻”,而不是“阻止”,这听起来很合理。

也许更现实:黑客可以拒绝上传依赖于ghc内部构件?

复制链接
贡献者 作者

选择隐藏此评论的原因

将显示原因,以便向其他人描述此评论。了解更多信息.

但它说的是“劝阻”,而不是“阻止”,这听起来很合理。

是的,这是关键。如果人们想修改一些开源软件的内部结构,我们不应该阻止他们。但我们应该确保他们非常清楚自己正在踏入稳定的安全区。同样,我们应该有一天让任何使用修补程序软件的人(暂时!)也意识到他们面临着不稳定性。

复制链接
贡献者 作者

选择隐藏此评论的原因

将显示原因,以便向其他人描述此评论。了解更多信息.

(两者之间的区别ghc-prim公司ghc内部也不清楚。但有一个答案是

GHC开发人员可以随意构建(和重组)其内部结构,包括划分定义任意地之间ghc-prim公司ghc内部构件如果他们愿意,那么这个问题不需要在本文中回答。

另一个答案是

ghc-prim公司是(大多数情况下,也许应该完全是)为实际上不以文本形式存在的代码自动生成的文档(它只是GHC中的硬编码),而ghc内部构件是人工编写的代码。

)

@Bodigrim公司
复制链接
合作者

尊敬的CLC成员,根据我们之前的私下讨论,我了解到我们原则上同意该提案。本次公关是一个很好的机会,可以润色措辞,澄清声明,并通常进行最后一次审查。然而,除非绝对必要,否则我们不要进行范围蠕变。

@美洲豹 @切谢尔什语 @哈苏费尔 @混血儿 @牧师 @激怒者

复制链接
贡献者

@混血儿 混血儿 留下了评论

选择隐藏此评论的原因

将显示原因,以便向其他人描述此评论。了解更多信息.

只有几点小小的建议,还有一点值得注意:“所有可能的技术和社会手段都不鼓励”意味着我们自己不积极鼓励一些事情。说点什么,坚持下去!

我很喜欢@命名数据的建议Hackage拒绝带有显式ghc内部构件依赖性,似乎是正确的抽象层:如果有人真的,真的想要依靠它,他们仍然可以私下这样做。

提案/已接受/051-ghc-base-libraries.rst 过时的 显示已解决 隐藏已解决
提案/已接受/051-ghc-base-libraries.rst 过时的 显示已解决 隐藏已解决

这将从底部消失。
你可能根本不想使用它。
但如果你绝对必须这样做,那就从“ghc内部”获取它。
复制链接
贡献者

选择隐藏此评论的原因

将显示原因,以便向其他人描述此评论。了解更多信息.

我们不能在同一份文件中说我们应该使用“一切必要的手段”来避免ghc内部构件依赖关系,并建议人们从那里导入函数。

建议的更改
但如果你绝对必须,得到来自``ghc内部构件``.
如果你绝对必须,定义您自己在当地,或者如果这不可能,请让CLC和GHC团队知道!

复制链接
贡献者 作者

选择隐藏此评论的原因

将显示原因,以便向其他人描述此评论。了解更多信息.

我希望ghc内部构件主要包含本地无法定义的内容?我预计还会有一些滑稽的集成—与ghc-so-tightly-someone-turns-blue项目的集成总是需要使用ghc内部构件也是。我认为,与其否认类别的存在,不如强调绝大多数项目在该类别中。

换句话说,我希望这些项目知道自己是谁,而不是接触GHC开发人员或CLC,我希望几乎所有接触过的人都会被告知“实际上,你不需要那样做”。你也是这么想的吗?或者你是不是在想象我们有时会搬东西去ghc内部构件(没有在其他地方再出口)那不应该是错误的吗?

复制链接
贡献者

选择隐藏此评论的原因

将显示原因,以便向其他人描述此评论。了解更多信息.

如果此类项目依赖于基础GHC开发人员和CLC都同意应该转移到ghc内部构件,他们应该伸出手来,说“嘿,我们用这个来做这样那样的事”,并为把它放进去提出理由ghc原始而不是。

这里的重点是使FAIAP成为一个“隐藏的”库,其中包含“编译器引导”和“允许通用编程所必需的”最严格交叉点中的代码:例如IO内部、数据类型表示等。里面应该什么都没有ghc内部构件这两者都是:

  • 对一般编程有用,以及
  • 未从导出基础,ghc-prim公司,或ghc实验.

复制链接
贡献者 作者

选择隐藏此评论的原因

将显示原因,以便向其他人描述此评论。了解更多信息.

我同意主要的观点“ghc-internals中不应该有任何东西兼而有之:对一般编程有用,而不是从……导出”,但我不认为有人会这样做ghc-prim公司ghc内部构件也许提案应该使这一点更加明确?

复制链接
贡献者

选择隐藏此评论的原因

将显示原因,以便向其他人描述此评论。了解更多信息.

不从base、ghc-prim或ghc-experimental导出。

这应该是“不出口的基础或ghc-实验”。ghc-prim公司每一位都是“内部”的ghc内部构件.中的任何内容ghc-prim公司对于一般编程有用的应该由基础ghc-实验事实上,也许我们应该更清楚地表明这一点。

提案/已接受/051-ghc-base-libraries.rst 过时的 显示已解决 隐藏已解决
谢谢!合著者:梅兰妮·菲尼克斯·布朗(Melanie Phoenix Brown)<18196871+mixphix@users.noreply.github.com>
谢谢!合著者:梅兰妮·菲尼克斯·布朗(Melanie Phoenix Brown)<18196871+mixphix@users.noreply.github.com>
@哈苏费尔
复制链接
贡献者

我很喜欢@命名数据Hackage建议拒绝具有显式ghc-internals依赖性的包,这样做似乎是正确的抽象层:如果有人真的真的想依赖它,他们仍然可以私下这样做。

我不同意。

ghc-internals是内部API,但正确地使用了PVP版本。高级用户编写高性能代码或备选前奏曲可能有非常合法的导入用例。在黑客攻击时拒绝这些包是错误的。

@命名数据
复制链接

编写高性能代码或替代前奏曲的高级用户可能有非常合法的导入用例。

这听起来很合理,但与“尽一切可能劝阻”截然不同,可能值得澄清。它是哪一个?

@哈苏费尔
复制链接
贡献者

编写高性能代码或替代前奏曲的高级用户可能有非常合法的导入用例。

这听起来很合理,但与“千方百计劝阻”截然不同,可能值得澄清。它是哪一个?

“劝阻”是正确的措辞,它并不意味着“禁止”。

@激怒者
复制链接

👍 这似乎是朝着正确的方向迈出的一步。我希望这是将GHC和GHC版本从影响整个生态系统的库升级中分离出来的第一步。🤞

复制链接

@激怒者 激怒者 留下了评论

选择隐藏此评论的原因

将显示原因,以便向其他人描述此评论。了解更多信息.

我将留下一些评论:

  • 标题是:“GHC的基础库:将稳定性与创新相结合”。然而,它并没有精确地定义其中的任何一个。它列出了基础,ghc-prim公司文件中的某个地方。然后ghc内部构件,ghc-bignum公司。我们可能想说出我们对“基础图书馆”的确切理解".
  • 什么是“稳定性”?
  • “创新”是什么意思?

这两个目标有冲突的风险,我们过去也看到过这种冲突。

感觉不必要地让CLC和GHC团队相互竞争。作为对GHC做出贡献的人,其首要利益是稳定和适当的系统集成,这让人感到不必要的沮丧。我们确实希望人们为关心稳定的GHC做出贡献。

我强烈反对在这里提出CLC(稳定坚定者)与GHC(创新者)的观点。GHC需要欢迎关心稳定性和向后兼容性的人,CLC也需要欢迎创新倡导者。

@哈苏费尔
复制链接
贡献者

这两个目标有冲突的风险,我们过去也见过这种冲突。

感觉不必要地让CLC和GHC团队相互竞争。作为对GHC做出贡献的人,其首要利益是稳定和适当的系统集成,这让人感到不必要的沮丧。我们确实希望人们为关心稳定的GHC做出贡献。

我强烈反对在这里提出CLC(稳定坚定者)与GHC(创新者)的观点。GHC需要欢迎关心稳定性和向后兼容性的人,CLC也需要欢迎创新倡导者。

这就是为什么我提出了一种不同的措辞,它不关注确切的目标,而是关注GHC和CLC的自主权,这对其本身来说是有意义的:


  1. CLC对影响“基础”(API、性能、语义)的决策具有完全自主权,包括其依赖性。
  2. GHC开发人员寻求对GHC内部和实验特性的更多自主权。

我们希望CLC和GHC能够实现不同的目标(例如稳定性)和工作流(版本管理/版本控制),但要确保CLC的决策不会受到影响,例如间接影响“基础”的更改。我们还希望提高效率,避免与适当的“基础”API严格无关的提案。


@西蒙普对“包括它的依赖性”感到不满,我仍然不理解,因为这绝对是真的。

因此,让我再次提出这一备选措辞。我们不要把重点放在确切的目标上,因为当涉及到两个不同的群体时,它们很难表达。让我们关注自治以及协作应该如何工作。

@希腊语
复制链接

关于隐藏问题的快速评论ghc内部构件黑客攻击。我搜索那些对我“有用”的隐藏信息的经验让我建议不要这样做。更好的做法是建立一种标准的方法,将库标记为“内部”,工具可以使用它来发出大喇叭警告。更多信息,而不是更少信息。此外,它还允许其他图书馆作者使用相同的机制,改善了一个普遍问题,并很好地支持正在形成的多个公共图书馆。

警告:目前,“大喇叭警告”应该放在Haddocks中,以将这一努力与任何假设工具更改。

@西蒙普
复制链接
贡献者

那么,我们可以在提案中添加一些不同工作流的示例吗?我认为这会有很大帮助。

如果有人愿意提供一些具体的文本,那就太好了。我们可以在末尾有一节“可能的工作流”。

我在听@Bodigrim公司他反对范围主义。但我认为,一个明确的讨论/说明部分,它不构成提案的一部分,但讨论了它在实践中可能如何工作,将是好的。它只需要有人来写!

@哈苏费尔
复制链接
贡献者

我发现生命周期和责任ghc实验有点奇怪。

  • 这是进入基础

不,它不是。

ghc实验不在CLC权限范围内,也不由CLC维护。如何使用它完全取决于GHC HQ/SC。

CLC根本不在乎。但这是GHC的一种可能机制:

  • 尽早测试并公开新API
  • 在做提案时向CLC演示实验API

提案仍可能被拒绝。我们有充分的自主权。

欢迎(并鼓励)GHC SC在接受可能触及基础的GHC提案之前征求CLC的意见,但这不是一项要求。

但如果你不这样做,你以后就不能抱怨你的提案由于CLC拒绝而整体失败了。

@丝绸般的
复制链接
贡献者

元问题:有没有图片可以解释不同的GHC“群体”以及他们关心的人/什么?

感觉有人只要拍下这张照片就能为社区做出巨大贡献。。。(这当然会帮助我!)

@美洲豹
复制链接
贡献者

是否有图片解释不同的GHC“团体”

当你说“团体”时,你的意思是什么?你是指核心图书馆委员会、GHC指导委员会等机构吗。?

@丝滑的
复制链接
贡献者

当你说“团体”时,你的意思是什么?你是指像核心库这样的实体吗
委员会、GHC指导委员会等。?

对;在我看来,这个帖子中的很多时间都花在了各个领域/兴趣/角色上,还不清楚?(可能是我的误解。)

@哈苏费尔
复制链接
贡献者

当你说“团体”时,你的意思是什么?你是指像核心库这样的实体吗
委员会、GHC指导委员会等。?

对;在我看来,这个帖子中的很多时间都花在了各个领域/兴趣/角色上,还不清楚?(可能是我的误解。)

委员会记录如下:https://www.haskell.org/社区/

此处讨论了记录更多层次结构的工作:haskell-infra/www.haskell.org#60

请在这里发表评论。

@丝绸般的
复制链接
贡献者

@哈苏费尔

委员会记录如下:https://www.haskell.org/社区/

否;这不是一个完整的列表;但谢谢,我不知道其他问题。

@美洲豹
复制链接
贡献者

这不是一个完整的列表

你能不能请在haskell.org回购上打开一个新问题解释哪些丢失了?我会确保添加它们。

@Bodigrim公司
复制链接
合作者

我很高兴地宣布提案已经是全体一致通过由CLC提供。

@西蒙普
复制链接
贡献者

西蒙 评论2023年7月11日通过电子邮件

@哈苏费尔
复制链接
贡献者

我很高兴地宣布提案已经是全体一致通过由CLC提供。

抱歉吹毛求疵,但我没有看到来自@混血儿在邮件列表上。他们私下回复了吗?

@混血儿
复制链接
贡献者

哦,对不起,我确实是在私下里错误地回复了。

@哈苏费尔
复制链接
贡献者

我认为是时候合并了@埃里克森2314或者HF在此之前想做什么吗@戴维·克里斯蒂安森?

@西蒙普
复制链接
贡献者

我认为是时候合并了@埃里克森2314或者HF想在那之前做什么吗@戴维·克里斯蒂安森?

我同意。

相关地,一旦我们这样做了,我想开始一个关于模块命名约定的对话。请参阅这个线程.哪里是进行对话的好地方?作为HF github的一个问题(或提案)?在GHC github上?在哪里?

@戴维·克里斯蒂安森
复制链接
成员

为了正式起见,TWG将在合并前进行投票,但我确信这不会引起争议。

至于其他对话,我有一些想法——我很快就会给你回复。

@戴维·克里斯蒂安森
复制链接
成员

TWG同意,该提案已得到相关各方的批准,并且非常有用——我们一致投票赞成。

@大卫基督徒
复制链接
成员

感谢大家的参与。我认为这带来了一个好结果!

免费注册 在GitHub上加入此对话.已经有帐户了吗?登录以发表评论
标签
还没有
项目
还没有
开发

成功合并此请求可能会解决这些问题。

还没有