Compiler research (#10)
adds self-hosted compiler is functionally: - The default compile path is the portable pipeline using jolt.analyzer (Clojure) → host-neutral IR → backend.janet. - The analyzer is itself Clojure, compiled by jolt for true self-hosting. - bootstrap-fixpoint passes (stage1 == stage2 == stage3): rebuilding the compiler on its own output. - clojure.core is now self-hosted in the overlay. - Stateful forms (defmacro/ns/deftype/defmulti/require/in-ns) are interpreted by design.
This commit is contained in:
parent
607779866e
commit
d3194aae59
68 changed files with 6590 additions and 2019 deletions
|
|
@ -24,7 +24,12 @@
|
|||
["count" "3" "(count [1 2 3])"]
|
||||
["contains? index" "true" "(contains? [:a :b] 1)"]
|
||||
["contains? past end" "false" "(contains? [:a] 3)"]
|
||||
["vector as fn" ":b" "([:a :b :c] 1)"])
|
||||
["vector as fn" ":b" "([:a :b :c] 1)"]
|
||||
# An IFn collection held in a binding (not just a literal) must dispatch as IFn,
|
||||
# not as a host call: applies to vectors, keywords, and meta-bearing vectors.
|
||||
["vector-in-local as fn" "20" "(let [v [10 20 30]] (v 1))"]
|
||||
["keyword-in-local as fn" "7" "(let [k :a] (k {:a 7}))"]
|
||||
["meta vector as fn" "10" "((with-meta [10 20] {:k 1}) 0)"])
|
||||
|
||||
(defspec "vector / update (persistent)"
|
||||
["conj appends" "[1 2 3]" "(conj [1 2] 3)"]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue