Skip to content

Commit 48a5fd0

Browse files
committed
Retain clojure.* name for standard namespaces
Completes #52 and #53 Signed-off-by: James Hamlin <jfhamlin@gmail.com>
1 parent 2163021 commit 48a5fd0

File tree

75 files changed

+13718
-76191
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+13718
-76191
lines changed

Makefile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ STDLIB_ORIGINALS_DIR := scripts/rewrite-core/originals
44
STDLIB_ORIGINALS := $(shell find $(STDLIB_ORIGINALS_DIR) -name '*.clj')
55
STDLIB := $(STDLIB_ORIGINALS:scripts/rewrite-core/originals/%=%)
66
STDLIB_ORIGINALS := $(addprefix scripts/rewrite-core/originals/,$(STDLIB))
7-
STDLIB_TARGETS := $(addprefix pkg/stdlib/glojure/,$(STDLIB:.clj=.glj))
7+
STDLIB_TARGETS := $(addprefix pkg/stdlib/clojure/,$(STDLIB:.clj=.glj))
88

99
OS-TYPE := $(shell bash -c 'echo $$OSTYPE')
1010
OS-NAME := \
@@ -55,8 +55,8 @@ generate:
5555

5656
.PHONY: aot
5757
aot: gocmd $(STDLIB_TARGETS)
58-
@echo "(map compile '[glojure.core glojure.go.io glojure.core.async glojure.walk glojure.template glojure.go.types glojure.uuid])" | \
59-
GLOJURE_USE_AOT=false GLOJURE_STDLIB_PATH=./pkg/stdlib $(GO_CMD) run ./cmd/glj
58+
@echo "(map compile '[clojure.core clojure.core.async clojure.walk clojure.template clojure.uuid glojure.go.types glojure.go.io])" | \
59+
GLOJURE_USE_AOT=false GLOJURE_STDLIB_PATH=./pkg/stdlib $(GO_CMD) run -tags glj_no_aot_stdlib ./cmd/glj
6060

6161
.PHONY: build
6262
build: $(GLJ)
@@ -70,7 +70,7 @@ pkg/gen/gljimports/gljimports_%.go: ./scripts/gen-gljimports.sh ./cmd/gen-import
7070
@echo "Generating $@"
7171
@./scripts/gen-gljimports.sh $@ $* $(GO_CMD)
7272

73-
pkg/stdlib/glojure/%.glj: scripts/rewrite-core/originals/%.clj scripts/rewrite-core/run.sh scripts/rewrite-core/rewrite.clj
73+
pkg/stdlib/clojure/%.glj: scripts/rewrite-core/originals/%.clj scripts/rewrite-core/run.sh scripts/rewrite-core/rewrite.clj
7474
@echo "Rewriting $< to $@"
7575
@mkdir -p $(dir $@)
7676
@scripts/rewrite-core/run.sh $< > $@

pkg/glj/glj_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import (
77
)
88

99
func TestGLJ(t *testing.T) {
10-
mp := Var("glojure.core", "map")
11-
inc := Var("glojure.core", "inc")
10+
mp := Var("clojure.core", "map")
11+
inc := Var("clojure.core", "inc")
1212
res := lang.PrintString(mp.Invoke(inc, Read("[1 2 3]")))
1313
if res != "(2 3 4)" {
1414
t.Errorf("Expected (2 3 4), got %v", res)

pkg/glj/init-aot.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@ package glj
44

55
import (
66
// Add NS loaders for the standard library.
7-
_ "github.com/glojurelang/glojure/pkg/stdlib/glojure/core"
8-
_ "github.com/glojurelang/glojure/pkg/stdlib/glojure/core/async"
7+
_ "github.com/glojurelang/glojure/pkg/stdlib/clojure/core"
8+
_ "github.com/glojurelang/glojure/pkg/stdlib/clojure/core/async"
99
_ "github.com/glojurelang/glojure/pkg/stdlib/glojure/go/io"
10-
_ "github.com/glojurelang/glojure/pkg/stdlib/glojure/protocols"
1110
)

pkg/gljmain/gljmain.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ func Main(args []string) {
5757
env := lang.GlobalEnv
5858

5959
// Set command line args (everything after -e and the expression)
60-
core := lang.FindNamespace(lang.NewSymbol("glojure.core"))
60+
core := lang.FindNamespace(lang.NewSymbol("clojure.core"))
6161
core.FindInternedVar(lang.NewSymbol("*command-line-args*")).BindRoot(lang.Seq(args[2:]))
6262

6363
rdr := reader.New(strings.NewReader(expr), reader.WithGetCurrentNS(func() *lang.Namespace {
@@ -90,7 +90,7 @@ func Main(args []string) {
9090
}
9191
env := lang.GlobalEnv
9292

93-
core := lang.FindNamespace(lang.NewSymbol("glojure.core"))
93+
core := lang.FindNamespace(lang.NewSymbol("clojure.core"))
9494
core.FindInternedVar(lang.NewSymbol("*command-line-args*")).BindRoot(lang.Seq(args[1:]))
9595

9696
rdr := reader.New(bufio.NewReader(file), reader.WithGetCurrentNS(func() *lang.Namespace {

pkg/lang/namespace.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ type Namespace struct {
2121
}
2222

2323
var (
24-
SymbolCoreNamespace = NewSymbol("glojure.core")
24+
SymbolCoreNamespace = NewSymbol("clojure.core")
2525

2626
namespaces = map[string]*Namespace{}
2727
nsMtx sync.RWMutex
@@ -60,8 +60,8 @@ func FindOrCreateNamespace(sym *Symbol) *Namespace {
6060
}
6161

6262
func RemoveNamespace(sym *Symbol) {
63-
if sym.String() == "glojure.core" {
64-
panic(errors.New("cannot remove glojure.core namespace"))
63+
if sym.String() == "clojure.core" {
64+
panic(errors.New("cannot remove clojure.core namespace"))
6565
}
6666

6767
nsMtx.Lock()

pkg/reader/reader.go

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ import (
1515

1616
var (
1717
symQuote = lang.NewSymbol("quote")
18-
symList = lang.NewSymbol("glojure.core/list")
19-
symSeq = lang.NewSymbol("glojure.core/seq")
20-
symConcat = lang.NewSymbol("glojure.core/concat")
21-
symUnquote = lang.NewSymbol("glojure.core/unquote")
22-
symSpliceUnquote = lang.NewSymbol("glojure.core/splice-unquote")
18+
symList = lang.NewSymbol("clojure.core/list")
19+
symSeq = lang.NewSymbol("clojure.core/seq")
20+
symConcat = lang.NewSymbol("clojure.core/concat")
21+
symUnquote = lang.NewSymbol("clojure.core/unquote")
22+
symSpliceUnquote = lang.NewSymbol("clojure.core/splice-unquote")
2323

2424
specials = func() map[string]bool {
2525
specialStrs := []string{
@@ -34,7 +34,7 @@ var (
3434
"fn*",
3535
"quote",
3636
"var",
37-
"glojure.core/import*",
37+
"clojure.core/import*",
3838
".",
3939
"set!",
4040
"deftype*",
@@ -802,12 +802,12 @@ func (r *Reader) syntaxQuote(symbolNameMap map[string]*lang.Symbol, node interfa
802802
keyvals = append(keyvals, entry.Key(), entry.Val())
803803
}
804804
return lang.NewList(
805-
lang.NewSymbol("glojure.core/apply"),
806-
lang.NewSymbol("glojure.core/hash-map"),
805+
lang.NewSymbol("clojure.core/apply"),
806+
lang.NewSymbol("clojure.core/hash-map"),
807807
lang.NewList(
808-
lang.NewSymbol("glojure.core/seq"),
808+
lang.NewSymbol("clojure.core/seq"),
809809
lang.NewCons(
810-
lang.NewSymbol("glojure.core/concat"),
810+
lang.NewSymbol("clojure.core/concat"),
811811
r.sqExpandList(symbolNameMap, keyvals),
812812
),
813813
),
@@ -816,14 +816,14 @@ func (r *Reader) syntaxQuote(symbolNameMap map[string]*lang.Symbol, node interfa
816816
_, isVector := node.(lang.IPersistentVector)
817817
if lang.Count(node) == 0 {
818818
if isVector {
819-
//(glojure.core/apply glojure.core/vector (glojure.core/seq (glojure.core/concat)))
819+
//(clojure.core/apply clojure.core/vector (clojure.core/seq (clojure.core/concat)))
820820
return lang.NewList(
821-
lang.NewSymbol("glojure.core/apply"),
822-
lang.NewSymbol("glojure.core/vector"),
821+
lang.NewSymbol("clojure.core/apply"),
822+
lang.NewSymbol("clojure.core/vector"),
823823
lang.NewList(
824-
lang.NewSymbol("glojure.core/seq"),
824+
lang.NewSymbol("clojure.core/seq"),
825825
lang.NewList(
826-
lang.NewSymbol("glojure.core/concat"),
826+
lang.NewSymbol("clojure.core/concat"),
827827
),
828828
),
829829
)
@@ -848,8 +848,8 @@ func (r *Reader) syntaxQuote(symbolNameMap map[string]*lang.Symbol, node interfa
848848
lang.NewList(elements...))
849849
if isVector {
850850
ret = lang.NewList(
851-
lang.NewSymbol("glojure.core/apply"),
852-
lang.NewSymbol("glojure.core/vector"),
851+
lang.NewSymbol("clojure.core/apply"),
852+
lang.NewSymbol("clojure.core/vector"),
853853
ret)
854854
}
855855
return ret
@@ -861,11 +861,11 @@ func (r *Reader) sqExpandList(symbolNameMap map[string]*lang.Symbol, els []inter
861861
var ret lang.IPersistentVector = lang.NewVector()
862862
for _, v := range els {
863863
if r.isUnquote(v) {
864-
ret = ret.Cons(lang.NewList(lang.NewSymbol("glojure.core/list"), lang.First(lang.Rest(v)))).(lang.IPersistentVector)
864+
ret = ret.Cons(lang.NewList(lang.NewSymbol("clojure.core/list"), lang.First(lang.Rest(v)))).(lang.IPersistentVector)
865865
} else if r.isUnquoteSplicing(v) {
866866
ret = ret.Cons(lang.First(lang.Rest(v))).(lang.IPersistentVector)
867867
} else {
868-
ret = ret.Cons(lang.NewList(lang.NewSymbol("glojure.core/list"), r.syntaxQuote(symbolNameMap, v))).(lang.IPersistentVector)
868+
ret = ret.Cons(lang.NewList(lang.NewSymbol("clojure.core/list"), r.syntaxQuote(symbolNameMap, v))).(lang.IPersistentVector)
869869
}
870870
}
871871
return lang.Seq(ret)
@@ -883,8 +883,8 @@ func (r *Reader) isUnquoteSplicing(form interface{}) bool {
883883

884884
func (r *Reader) readDeref() (interface{}, error) {
885885
// TODO: look up 'deref' with the symbol resolver
886-
// it should resolve to glojure.core/deref in the go case
887-
return r.readQuoteType("glojure.core/deref")
886+
// it should resolve to clojure.core/deref in the go case
887+
return r.readQuoteType("clojure.core/deref")
888888
}
889889

890890
func (r *Reader) readUnquote() (interface{}, error) {
@@ -893,11 +893,11 @@ func (r *Reader) readUnquote() (interface{}, error) {
893893
return nil, r.error("error reading input: %w", err)
894894
}
895895
if rn == '@' {
896-
return r.readQuoteType("glojure.core/splice-unquote")
896+
return r.readQuoteType("clojure.core/splice-unquote")
897897
}
898898

899899
r.rs.UnreadRune()
900-
return r.readQuoteType("glojure.core/unquote")
900+
return r.readQuoteType("clojure.core/unquote")
901901
}
902902

903903
func (r *Reader) readDispatch() (interface{}, error) {
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
(quote user/foobar)
2-
(glojure.core/list)
3-
(glojure.core/seq (glojure.core/concat (glojure.core/list (quote user/a)) (glojure.core/list (quote user/b)) (glojure.core/list (quote user/c))))
4-
(glojure.core/seq (glojure.core/concat (glojure.core/list (quote user/a)) (glojure.core/list (+ 1 2))))
5-
(glojure.core/seq (glojure.core/concat (glojure.core/list (quote user/a)) [(+ 1 2)]))
6-
(glojure.core/seq (glojure.core/concat (glojure.core/list (quote do.not.Qualify))))
7-
(glojure.core/apply glojure.core/hash-map (glojure.core/seq (glojure.core/concat (glojure.core/list :x) (glojure.core/list []))))
8-
(glojure.core/seq (glojure.core/concat (glojure.core/list (quote resolved.alias/foo))))
2+
(clojure.core/list)
3+
(clojure.core/seq (clojure.core/concat (clojure.core/list (quote user/a)) (clojure.core/list (quote user/b)) (clojure.core/list (quote user/c))))
4+
(clojure.core/seq (clojure.core/concat (clojure.core/list (quote user/a)) (clojure.core/list (+ 1 2))))
5+
(clojure.core/seq (clojure.core/concat (clojure.core/list (quote user/a)) [(+ 1 2)]))
6+
(clojure.core/seq (clojure.core/concat (clojure.core/list (quote do.not.Qualify))))
7+
(clojure.core/apply clojure.core/hash-map (clojure.core/seq (clojure.core/concat (clojure.core/list :x) (clojure.core/list []))))
8+
(clojure.core/seq (clojure.core/concat (clojure.core/list (quote resolved.alias/foo))))

pkg/runtime/codegen.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,9 @@ type Generator struct {
8484
var (
8585
omittedVars = map[string]bool{
8686
// initialized by the runtime
87-
"#'glojure.core/*in*": true,
88-
"#'glojure.core/*out*": true,
89-
"#'glojure.core/*compile-files*": true,
87+
"#'clojure.core/*in*": true,
88+
"#'clojure.core/*out*": true,
89+
"#'clojure.core/*compile-files*": true,
9090
}
9191
)
9292

@@ -1562,8 +1562,8 @@ var (
15621562
expectedInvalidImports = map[string]bool{
15631563
"ExceptionInfo": true,
15641564
"LinkedBlockingQueue": true,
1565-
"glojure.lang.LineNumberingPushbackReader": true,
1566-
"glojure.lang": true,
1565+
"clojure.lang.LineNumberingPushbackReader": true,
1566+
"clojure.lang": true,
15671567
"java.io.InputStreamReader": true,
15681568
"java.io.StringReader": true,
15691569
"java.util.concurrent.CountDownLatch": true,
@@ -2125,8 +2125,8 @@ var (
21252125
)
21262126

21272127
func isRuntimeOwnedVar(v *lang.Var) bool {
2128-
// namespace must be glojure.core
2129-
if v.Namespace().Name().Name() != "glojure.core" {
2128+
// namespace must be clojure.core
2129+
if v.Namespace().Name().Name() != "clojure.core" {
21302130
return false
21312131
}
21322132

pkg/runtime/codegen_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ func TestCodegen(t *testing.T) {
5252
nsName = strings.ReplaceAll(nsName, ".", "-")
5353
}
5454

55-
require := glj.Var("glojure.core", "require")
55+
require := glj.Var("clojure.core", "require")
5656
runtime.AddLoadPath(os.DirFS("testdata"))
5757
// Load the namespace
5858
require.Invoke(lang.NewSymbol(nsName))
@@ -67,11 +67,11 @@ func TestCodegen(t *testing.T) {
6767
})
6868
}
6969

70-
t.Run("glojure.core", func(t *testing.T) {
70+
t.Run("clojure.core", func(t *testing.T) {
7171
// Test the core namespace
72-
ns := lang.FindNamespace(lang.NewSymbol("glojure.core"))
72+
ns := lang.FindNamespace(lang.NewSymbol("clojure.core"))
7373
if ns == nil {
74-
t.Fatal("glojure.core namespace not found")
74+
t.Fatal("clojure.core namespace not found")
7575
}
7676

7777
if err := os.MkdirAll("testdata/codegen/test/core", 0755); err != nil {
@@ -138,7 +138,7 @@ func generateAndTestNamespace(t *testing.T, ns *lang.Namespace, goldenFile strin
138138
// run go vet on the temp file with .go extension
139139
// - two exceptions: core and try_basic generate unreachable code
140140
// TODO: fix the code generation to avoid unreachable code
141-
if ns.Name().String() == "glojure.core" || ns.Name().String() == "codegen.test.try-basic" {
141+
if ns.Name().String() == "clojure.core" || ns.Name().String() == "codegen.test.try-basic" {
142142
t.Logf("skipping go vet for %s", goldenFile)
143143
return
144144
}

pkg/runtime/envinit.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -115,18 +115,18 @@ func NewEnvironment(opts ...EvalOption) lang.Environment {
115115
}
116116

117117
// Add stdlib
118-
RT.Load("glojure/core")
118+
RT.Load("clojure/core")
119119

120120
// Workaround to ensure namespaces that are required by core are loaded.
121121
// TODO: AOT should identify this dependency and generate code to load it.
122122
if useAot {
123-
RT.Load("glojure/protocols")
124-
RT.Load("glojure/string")
123+
RT.Load("clojure/protocols")
124+
RT.Load("clojure/string")
125125
RT.Load("glojure/go/io")
126126
}
127127

128128
// Set the glojure version
129-
core := lang.FindNamespace(lang.NewSymbol("glojure.core"))
129+
core := lang.FindNamespace(lang.NewSymbol("clojure.core"))
130130
versionVar := core.FindInternedVar(lang.NewSymbol("*glojure-version*"))
131131
if versionVar != nil {
132132
versionVar.BindRoot(ParseVersion(VERSION))

0 commit comments

Comments
 (0)