Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Decide before v1: make EIGS_STRICT the default (argument-type stand-ins like abs of "x" = 0 are silent by default)

未关闭
#1,361 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
35/100
Issue 类型
功能
描述清晰度
基本清楚
活跃度
活跃
技术栈
c, shell

调研方向

Start with docs/SPEC.md around line 247 and tools/strict_differential.sh to understand the current strict-mode behavior and distinguish real results from stand-ins. Run tools/consumer_acceptance.sh run against the changed binary, then update README, llms.txt, CHANGELOG, and SPEC.md as required. Done means the decision is recorded, the default behavior is documented and tested, and the consumer sweep is green with breaks resolved and linked.

由索引模型根据 Issue 内容生成。

描述

area:runtime-vm kind:decision

What is true today (measured at 27f8a90)

print of (abs of "x")        # 0
print of (abs of ([-3, 7]))  # 0
print of (floor of [1.5, 2.5])  # 0

All three exit 0. With EIGS_STRICT=1, the first raises abs: expected a number.

This is documented as the default. docs/SPEC.md (around line 247) says argument-type guards substitute a stand-in (0, "", null) unless strict is set. #971 and #975, the fail-soft to loud reform, are closed: they built the strict guards across the whole builtin surface and kept strict opt-in.

Why decide now

  • PRINCIPLES / #975 name silent substitution as the class to remove.
  • #1286 says to settle language decisions before the first outside consumer.
  • A type mistake that becomes a plausible value is exactly the silent-wrong class this project hunts. Today the default is the silent one.
  • The machinery already exists: flipping it is a default change plus a consumer sweep, not new guards.
  • tools/strict_differential.sh already pins which answers are genuine (a real 0) and which are stand-ins.

Recommendation

Make strict the default, with a per-run opt-out (EIGS_STRICT=0, or an eigs.json field if the #1286 edition field lands). Then run the consumer sweep: every pinned consumer's real CI command against the flipped binary, and every break fixed in the consumer. On an owned ecosystem with no back-compat contract, the breaks are the point: each one is a latent type mistake.

Done when

  • Decision recorded here by the owner: flip, or keep opt-in with the reason.
  • If flip: the default is strict. SPEC.md, llms.txt, README and CHANGELOG say so, and abs of "x" raises with no flag set.
  • If flip: tools/consumer_acceptance.sh run against the flipped binary is green, with every consumer break fixed upstream or in the consumer and linked here.
主要语言
C
星标
3
派生
7
平均合并
11 小时 30 分钟
30 天内合并 PR
271

环境准备

在 Codespaces 中打开

在浏览器里用你自己的 GitHub 账号启动这个项目的开发容器。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

InauguralSystems/EigenScript 的其他 Issue

查看 InauguralSystems/EigenScript 的全部 Issue

相似的 Issue

更多 C Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。