混淆不仅仅在于命名约定(由于历史而引起的可变性,也许有时是一时兴起)。混淆在于自由软件中“内部”的概念,其中源代码对所有人开放,可以随意使用或修改(甚至分叉)。
从(我认为是)Emacs Dev 的角度回答您的问题,因此就潜在意图而言:“内部”意味着使用这种功能的人可能更有可能在 Emacs 中遇到未来的变化-该功能的开发实现和使用可能比非“内部”功能的情况。IOW,您可能不想指望它保持现在的状态。就这样。
但是里面有很多“也许”、“更有可能”和“可能”。在实践中,一些非“内部”功能的变化比一些“内部”功能更彻底或更快。对于前者,可能会有一个弃用宽限期,在此期间,更改前的情况是可以容忍的,即仍然有效。对于“内部”的东西,情况可能并非如此。但同样,实际上在“内部”的黑色和非“内部”的白色之间存在一些灰色。
来自 Emacs Dev(例如@Stefan)的某个人可能会提出不同的看法或纠正我的解释。
我自己的看法:有时(经常)有一些函数和变量作者不希望用户直接使用,因此很自然地被认为是“内部的”,但用户仍然很好地使用了它们,甚至“有" 使用(模重写大量代码)。其中一些已经删除了他们的“内部”状态(不,我没有记住示例)。或者有时添加了一个新的、非“内部”函数以使行为可用——例如,添加了一个包装器或函数值参数(同样,我没有临时示例可提供)。
IOW,对于 Emacs Dev 来说,也不总是清楚什么应该被视为“内部”。只需将标签作为一个标志,您可能不想在该函数或变量上计算太多。
Wrt 各种符号:我的印象是该--
约定最近似乎被更多地使用(尽管也有一些旧代码使用它);在大多数情况下,使用internal
是一个较旧的约定。