← 返回日报
略读 预计 2 分钟

no llm code

摘要

文章标题为 "no llm code"。正文指出 LLM 生成的代码版权存在不确定性,git-annex 因此不包含任何此类代码并保证永不包含,同时建议依赖项也应提供类似保证。目前可通过 NoLLMDependencies 构建标志(stack 使用 stack-NoLLMDependencies.yaml)强制构建到 pre-LLM 依赖版本,但无法保证未来新版本仍可构建。列出具体已知风险依赖项:ghc(9.15 起含 LLM 代码,git-annex 支持 9.6.6 及更老)、ram(0.21.0 起含,及其反向依赖 crypton、tls)、persistent(2.15.0.0 起)、yesod(1.7.0.0 起,含 1489 行提交 10000+ 行代码)、Cabal(构建时需但不链接入代码,需注意 cabal 文件兼容性)、git(2.53 起含)。安全补丁可能仍需使用较旧不安全版本。依赖审查工作需持续,欢迎贡献修复。

荐读理由

git-annex 明确支持 NoLLMDependencies build flag(stack-NoLLMDependencies.yaml),让你用旧版 ghc 9.6.6 等依赖,保持 git-annex 自身不含 LLM 生成代码,可直接迁移到 AI 工程项目里

原文

git-annex/ no llm code

LLM generated code in free software is a potential landmine. The copyright of such code is an open question, and any current answer to that question risks changing at some point in the future.

This is a particular problem for git-annex since future proofing is an important aspect of its design.

So, git-annex does not contain code generated by LLMs and guarantees it will never do so.

However, libraries and other things that git-annex depends on do not generally have such guarantees. Although it would be very much appreciated if they did.

git-annex currently supports being built with versions of dependencies that pre-date any introduction of LLM generated code. To do so, turn on the NoLLMDependencies build flag. When building with stack, use stack-NoLLMDependencies.yaml. (It is not currently built that way by default, but such builds are welcome.)

Unfortunately, it's not possible to guarantee that will continue to work in new versions of git-annex. That's the goal, but it may become untenable. See below for details about possible future problems with specific dependencies.

Note that if a security hole is only fixed by a newer version of a dependency, the NoLLMDependencies build flag will still build with the older, insecure version.

Additional work needs to be done on an ongoing basis to review git-annex's dependencies to detect the addition of LLM generated code.

Help with finding these is welcome. Please edit this page and/or file bug reports on git-annex if it cannot be built without LLM generated code.

known dependencies that contain LLM generated code

  1. ghc

  2. ram and its reverse dependencies

  3. persistent

  4. yesod

  5. Cabal

  6. git

ghc

This commit is probably the first, and will be released in the upcoming ghc 9.15.

git-annex remains buildable with older versions of ghc back to 9.6.6.

This will probably prevent git-annex from taking advantage of most new improvements to the Haskell language going forward. That is deeply unfortunate. This is the main reason why git-annex is not guaranteed to never change to depend on LLM generated code, because cutting it off from all future Haskell language improvements may be worse than the alternative.

ram and its reverse dependencies

ram since 0.21.0.

Note particularly large LLM generated code churn with apparently broken (how?) changes in 0.21.0 being reverted in 0.21.1.

Rather than use ram, git-annex continues to use the unmaintained memory that ram was forked from.

But ram is an dependency of other dependencies, and these in particular depend on 0.21.0 or newer:

  • crypton since 1.1.0

  • tls since 2.3.1

Reverse dependencies of ram

The NoLLMDependencies build flag depends on an older version of ram in order to prevent such dependencies using the newer version.

persistent

persistent since 2.15.0.0

First LLM generated code

git-annex supports being built with older versions.

yesod

yesod since 1.7.0.0

First LLM generated code

LLM generated commit with a 1489 line commit message and 10,000+ lines of changes.

(See ditch yesod)

Cabal

First LLM generated code

Cabal is needed to build git-annex, but is not linked into it. There is a risk that a new version of Cabal could need changes to git-annex.cabal that prevent an old version building it.

git

Since 2.53

First LLM generated code

git-annex supports git back to 2.22.

Lobsters · 5 赞 · 1 评 讨论 → 阅读原文 →

这条对你有帮助吗?