jolt/jolt-core/clojure/core
Yogthos 840f699f54 record field type hints -> per-field value types in inference (jolt-3ko)
A record field can carry a type hint — ^Vec3 (a defined record type) or ^:num —
and the inference now resolves it so reading the field back yields that exact type
instead of :any. A Vec3 stored in a Ray field reads out as Vec3, so the vec ops on
field-read values prove their reads (bare-index). This is Stalin's per-slot type
sets, but DECLARED rather than inferred: the exact shape is known up front.

- deftype captures each field's :tag / :num metadata (was stripped) and passes it
  to make-deftype-ctor; the ctor registers per-field tags, resolving a record-type
  hint to its ctor-key (same-ns) so the inference can look it up directly.
- call-ret-type builds a record's struct type with field types resolved from the
  hints, recursing into nested record types (depth-bounded for self/cyclic types).

Measured: a nested-record read loop (:r (:origin ray)) runs 1.3s with ^Vec3 hints
vs 7.1s without — 5.5x. This is the lever the ray tracer needed (vecs flow through
container fields); records without it read back as :any and stay unproven.
2026-06-14 07:00:29 -04:00
..
00-kernel.clj Compiler research (#10) 2026-06-09 07:30:25 +08:00
00-syntax.clj feat: run the real clojure.tools.logging (defmacro/syntax-quote/ns + host shims) 2026-06-13 18:50:53 -04:00
10-seq.clj errors: unresolved symbols error with Clojure's message (jolt-2o7.3) 2026-06-12 10:07:48 -04:00
20-coll.clj feat: java.io.File model + multimethod/assoc/defmulti fixes for migratus (jolt-hjw) 2026-06-13 16:04:30 -04:00
25-sorted.clj core: staged recompile for early defns; keys/vals/empty? leave the seed (jolt-4j3) 2026-06-10 16:16:23 -04:00
30-macros.clj record field type hints -> per-field value types in inference (jolt-3ko) 2026-06-14 07:00:29 -04:00
40-lazy.clj core: lazy realization is shared across walks (once-only effects); pmap family 2026-06-10 19:14:49 -04:00
50-io.clj feat: run the real clojure.tools.logging (defmacro/syntax-quote/ns + host shims) 2026-06-13 18:50:53 -04:00