feat(solo/stdlib): date_today() -> ISO YYYY-MM-DD (UTC)#54
Merged
Conversation
time() only yields a Unix timestamp float; tooling that stamps generated artifacts (changelogs, scaffolds) needs a calendar date. date_today() returns the current UTC date as an ISO `YYYY-MM-DD` string. Civil date derived from SystemTime epoch seconds via Howard Hinnant's civil_from_days algorithm (public domain) — no date-crate dependency, correct for all Gregorian dates. Verified: produces 2026-05-18 today. Adds examples/date.my and an integration test asserting format/shape and a sane range (exact value depends on the wall clock). Rebased onto main after #49 (Map) and #53 (JSON) landed; coexists with the map_* / json_* builtins. Refs #45 Refs #48 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
f0dd493 to
987f5c9
Compare
This was referenced May 18, 2026
🔍 Hypatia Security ScanFindings: 35 issues detected
View findings[
{
"reason": "Issue in quality.yml",
"type": "missing_workflow",
"file": "quality.yml",
"action": "create",
"rule_module": "workflow_audit",
"severity": "high"
},
{
"reason": "Issue in security-policy.yml",
"type": "missing_workflow",
"file": "security-policy.yml",
"action": "create",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Action hyperpolymath/standards/.github/workflows/governance-reusable.yml@main needs attention",
"type": "unpinned_action",
"file": "governance.yml",
"action": "pin_sha",
"rule_module": "workflow_audit",
"severity": "high"
},
{
"reason": "unwrap_or(0) with dangerous default (1 occurrences, CWE-754)",
"type": "unwrap_dangerous_default",
"file": "/home/runner/work/my-lang/my-lang/_exploratory/me-scaffolding/crates/parser/src/lib.rs",
"action": "flag",
"rule_module": "code_safety",
"severity": "critical"
},
{
"reason": "expect() in hot path (80 occurrences, CWE-754)",
"type": "expect_in_hot_path",
"file": "/home/runner/work/my-lang/my-lang/_exploratory/me-scaffolding/crates/parser/src/lib.rs",
"action": "flag",
"rule_module": "code_safety",
"severity": "medium"
},
{
"reason": "unwrap() without prior check -- DoS via panic (1 occurrences, CWE-754)",
"type": "unwrap_without_check",
"file": "/home/runner/work/my-lang/my-lang/my-ssg/src/generator.rs",
"action": "flag",
"rule_module": "code_safety",
"severity": "high"
},
{
"reason": "expect() in hot path (5 occurrences, CWE-754)",
"type": "expect_in_hot_path",
"file": "/home/runner/work/my-lang/my-lang/crates/my-mir/src/lib.rs",
"action": "flag",
"rule_module": "code_safety",
"severity": "medium"
},
{
"reason": "unwrap() without prior check -- DoS via panic (26 occurrences, CWE-754)",
"type": "unwrap_without_check",
"file": "/home/runner/work/my-lang/my-lang/crates/my-fmt/src/lib.rs",
"action": "flag",
"rule_module": "code_safety",
"severity": "high"
},
{
"reason": "unwrap() without prior check -- DoS via panic (1 occurrences, CWE-754)",
"type": "unwrap_without_check",
"file": "/home/runner/work/my-lang/my-lang/crates/my-hir/src/lib.rs",
"action": "flag",
"rule_module": "code_safety",
"severity": "high"
},
{
"reason": "unwrap() without prior check -- DoS via panic (3 occurrences, CWE-754)",
"type": "unwrap_without_check",
"file": "/home/runner/work/my-lang/my-lang/crates/my-llvm/src/lib.rs",
"action": "flag",
"rule_module": "code_safety",
"severity": "high"
}
]Powered by Hypatia Neurosymbolic CI/CD Intelligence |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Third and final Phase-2 stdlib primitive on tracker #45 (Map #49 → JSON #53 → date, this PR).
What
date_today() -> String— current UTC date as ISOYYYY-MM-DD.time()only gave a Unix timestamp float, so there was no way to stamp generated artifacts with a calendar date.How
Civil date derived from
SystemTimeepoch seconds via Howard Hinnant'scivil_from_days(public domain) — no date-crate dependency, correct for all Gregorian dates.div_euclidhandles the (irrelevant-in-practice but correct) pre-epoch case.Validation
examples/date.myprints2026-05-18(matches today — algorithm verified end-to-end).test_eval_date_todayasserts format/shape + sane ranges (exact value is clock-dependent). Full suite 16 passed, 0 failed.clippy-clean; new coderustfmt-clean (pre-existingstdlib.rsfmt drift untouched, consistent with feat(solo/stdlib): string-keyed Map/dict builtins #49/feat(solo/stdlib): json_parse / json_stringify (+ fix string-literal escapes) #53).Scope
date_now_iso8601()(mentioned as optional in #45) intentionally deferred — not requested by #48, keeping this PR to one focused primitive.vscode-extension/package-lock.json(pre-existing untracked) not included.Refs #45
Refs #48
🤖 Generated with Claude Code