Commit Graph

16 Commits

Author SHA1 Message Date
Brummel 72d719010c spec: revise canonical type names — AST is context-free 2026-05-11 00:11:39 +02:00
Brummel b6a84041eb spec: canonical type names — internal qualification 2026-05-10 23:55:05 +02:00
Brummel 9c3d29084c spec: 23 status → Approved 2026-05-10 21:04:06 +02:00
Brummel 03b6d15db4 spec: 23 — Eq/Ord Prelude (Show + heap-Str ABI deferred to next milestone) 2026-05-10 20:35:06 +02:00
Brummel 2052f4dfcc fieldtest: floats — 4 examples, 6 findings (1 bug, 1 friction, 1 spec_gap, 3 working) 2026-05-10 16:57:38 +02:00
Brummel e37366f8dd spec: floats LLVM-IR fixes — fcmp une for !=, synth.rs sites, container-slot precision
Three classes of fix from the LLVM-IR audit:

1. != on Float: fcmp une, NOT fcmp one. one is 'ordered and not
   equal' (false for nan!=nan, breaks IEEE / user-fixed constraint).
   une is 'unordered or not equal' (true for nan!=nan, matches IEEE
   and Rust f64::ne).

2. crates/ailang-codegen/src/synth.rs touches the Float primitive at
   five sites the original spec missed: llvm_type, builtin_ail_type,
   builtin_effect_op_ret, type_descriptor (descriptor 'Fl' to avoid
   collision with ADT-name F-prefix), builtin_binop (becomes a
   transitional artefact, replaced by type-dispatched helper).

3. Float literals lower as LLVM hex-float syntax (double 0x4014...);
   nan/inf/neg_inf as direct SSA double constants at use site (NOT
   via the __unreachable__ analogue, which is a terminator
   instruction not a value); container slot layout precision
   (monomorphisation vs bitcast).
2026-05-10 14:14:54 +02:00
Brummel f7e2c3ee7a spec: floats — operators polymorphic over {Int, Float} + NaN/Inf constants + is_nan
Mainstream-aligns the Float surface: + - * / < <= > >= become
forall-quantified with codegen-dispatch on Int|Float (parallel to
today's == path), instead of the original draft's wort-style
fadd/flt/etc. Adds nan/inf/neg_inf as builtin constants and
is_nan : (Float) -> Bool. % stays Int-only (no fmod yet).

Iteration plan now flags iter 3 and iter 4 as widening passes
that must hold the no-Int-regression line.
2026-05-10 14:08:35 +02:00
Brummel 406bde0efc spec: floats milestone — Float as IEEE-754 binary64 primitive 2026-05-10 13:54:55 +02:00
Brummel aa02ea1d2b spec: design-md-consolidation — state-only DESIGN.md, four sweeps 2026-05-10 11:33:19 +02:00
Brummel 1d4a6b4231 spec: env-construction unify — single source of truth for Env shape 2026-05-10 01:47:56 +02:00
Brummel cc3f28c053 iter 22-tidy.2: spec — components table reflects 22b.4a/b split + 22c shipped 2026-05-09 22:51:49 +02:00
Brummel 2102dadb3d spec: 22 — drop Prelude-for-primitives, tighten 22c to existing vocabulary 2026-05-09 22:34:30 +02:00
Brummel 0709e319ab iter 22b.4a.6: spec + DESIGN amendments — 22b.4 split, terminology fix, '__' separator, forall-constraints gap 2026-05-09 22:28:17 +02:00
Brummel 71dea8eab6 spec: 22 milestone — typeclasses retrospective 2026-05-09 16:27:50 +02:00
Brummel be88e0fc14 spec: skill system — rename family/iter, add core-rules section, docwriter to audit
User feedback after first draft:
- family/iter not standard terms — milestone/iteration adopted
- ailang-docwriter folded into audit/ rather than left orphan
- explicit "Core rules adopted from Superpowers" section so each
  inherited Iron Law is named at the spec level, not just implied
2026-05-09 14:10:32 +02:00
Brummel 3615751e42 spec: skill system — formalise the existing iter workflow
Five-skill pipeline (brainstorm, plan, implement, audit, debug) under
skills/, emitting durable artefacts to docs/specs/ and docs/plans/.
Codifies discipline currently spread across CLAUDE.md (TDD-for-bugs,
mandatory tidy-iter, bench-regression rules, feature acceptance) into
trigger-bound skills. Existing per-iter workflow preserved; the layer
formalises the pre-iter design step and the iter handoff contract.

Bootstrap spec — defines the system that future specs will pass through.
2026-05-09 13:59:10 +02:00