nendo 0.6.5 → 0.6.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/README.md +13 -0
- data/Rakefile +5 -3
- data/VERSION.yml +1 -1
- data/benchmark/benchmark.nnd +46 -31
- data/bin/nendo +8 -0
- data/lib/nendo/debug/syslog.nndc +0 -10
- data/lib/nendo/init.nndc +0 -5012
- data/lib/nendo/nendo/experimental.nndc +0 -994
- data/lib/nendo/nendo/test.nndc +0 -474
- data/lib/nendo/rfc/json.nndc +0 -150
- data/lib/nendo/ruby/core.rb +5 -1
- data/lib/nendo/ruby/evaluator.rb +35 -14
- data/lib/nendo/srfi-1.nndc +0 -3375
- data/lib/nendo/srfi-2.nndc +0 -118
- data/lib/nendo/srfi-26.nndc +0 -431
- data/lib/nendo/text/html-lite.nndc +0 -625
- data/lib/nendo/text/tree.nndc +0 -40
- data/lib/nendo/util/combinations.nndc +0 -1178
- data/lib/nendo/util/list.nndc +0 -706
- data/lib/nendo/util/match.nndc +0 -8094
- metadata +9 -6
- data/README +0 -10
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YTBkYzNiM2M2Yzk1ZWMzNTRmMTAxZTdmMTljNjMyNWM4Y2U5Njc2ZA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NjZiZjljYzk3YTk3Y2U3YTJkNTcxNjVlZTNmZTYxNTE3ZWQzYTVmNQ==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YzA4YzA1N2NmMjI4YWQwNDkyYjNlYTJhZWJjMzFiOTBjYzY4NmI4YTJlY2U2
|
10
|
+
ODkyMjdhYzJhZGQ0ZjZjM2M2NmUxOGI3NjdkOGJiZGJmOWE3NjUwYTM0NTUz
|
11
|
+
YzBlZGZkNDM1NDFlOWNlZWFhZjgzOGZjYjRjOTMxYjQyNzUyNzI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NjM3ODhmZGYyMzMyNzUwOWVjZTU4OTY1ZmQ0YmU4MDFiYmRhOWYxMTA1YzAw
|
14
|
+
ZmRkODRmMzc0MWQwNTBkN2IxY2RjODQ1NzMwNTMxZGUwNGQwYWE5YjBiODM4
|
15
|
+
M2FiYTZjZTM1OGQ3MWZhMDBkMzllODJiYWMyMjYyMjMwMmViZDU=
|
data/README.md
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
Nendo
|
2
|
+
=======================
|
3
|
+
|
4
|
+
Nendo is a dialect of Lisp written in Ruby.
|
5
|
+
|
6
|
+
This software is open source, covered by a BSD-style license. Please read accompanying file COPYING.
|
7
|
+
|
8
|
+
## Link
|
9
|
+
[Manuals and Tutorials](http://oldtype.sumibi.org/show-page/Nendo)
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
|
data/Rakefile
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
# Release Engineering
|
4
4
|
# 1. edit the VERSION.yml file
|
5
5
|
# 2. rake compile && rake
|
6
|
-
# 3. rake gemspec &&
|
6
|
+
# 3. rake gemspec && gem build nendo.gemspec
|
7
7
|
# to generate nendo-x.x.x.gem
|
8
8
|
# 4. install nendo-x.x.x.gem to clean environment and test
|
9
9
|
# 5. rake release
|
@@ -17,13 +17,14 @@ begin
|
|
17
17
|
gemspec.summary = "Nendo is a dialect of Lisp."
|
18
18
|
gemspec.description = "Nendo is a programming language written in Ruby."
|
19
19
|
gemspec.email = "kiyoka@sumibi.org"
|
20
|
+
gemspec.license = 'New BSD'
|
20
21
|
gemspec.homepage = "http://github.com/kiyoka/nendo"
|
21
22
|
gemspec.authors = ["Kiyoka Nishiyama"]
|
22
23
|
gemspec.files = FileList['Rakefile',
|
23
24
|
'.gemtest',
|
24
25
|
'History.txt',
|
25
26
|
'VERSION.yml',
|
26
|
-
'README',
|
27
|
+
'README.md',
|
27
28
|
'COPYING',
|
28
29
|
'lib/**/*.rb',
|
29
30
|
'lib/**/*.nnd',
|
@@ -38,6 +39,7 @@ begin
|
|
38
39
|
'emacs/*.el',
|
39
40
|
'benchmark/*.rb',
|
40
41
|
'benchmark/*.nnd'].to_a
|
42
|
+
gemspec.rdoc_options += [ '-x', 'match.nndc' ]
|
41
43
|
gemspec.add_development_dependency "rspec"
|
42
44
|
gemspec.add_development_dependency "rake"
|
43
45
|
gemspec.add_dependency "json"
|
@@ -132,7 +134,7 @@ task :compile do
|
|
132
134
|
files << "./lib/nendo/util/combinations.nnd"
|
133
135
|
files << "./lib/nendo/nendo/experimental.nnd"
|
134
136
|
files.each {|fn|
|
135
|
-
sh sprintf( "ruby -I ./lib ./bin/nendo -c %s > %s", fn, fn + "c" )
|
137
|
+
sh sprintf( "ruby -I ./lib ./bin/nendo -d -c %s > %s", fn, fn + "c" )
|
136
138
|
}
|
137
139
|
end
|
138
140
|
|
data/VERSION.yml
CHANGED
data/benchmark/benchmark.nnd
CHANGED
@@ -11,22 +11,30 @@
|
|
11
11
|
(require "jruby-prof")
|
12
12
|
(require "ruby-prof"))
|
13
13
|
|
14
|
+
(define results '())
|
15
|
+
(define (bench-puts str)
|
16
|
+
#t)
|
17
|
+
(define (bench-printf format str)
|
18
|
+
#t)
|
19
|
+
|
14
20
|
;; ------------------ macro --------------------
|
15
21
|
(define bench-task
|
16
22
|
(macro (profile-flag title proc)
|
17
23
|
`(begin
|
18
|
-
(
|
19
|
-
(
|
24
|
+
(bench-puts ,title)
|
25
|
+
(bench-puts Benchmark::CAPTION)
|
20
26
|
,(if profile-flag
|
21
27
|
`(let* ((result (RubyProf.profile
|
22
28
|
(&block ()
|
23
29
|
,proc)))
|
24
30
|
(printer (RubyProf::GraphPrinter.new result)))
|
25
31
|
(printer.print STDOUT))
|
26
|
-
`(
|
27
|
-
|
28
|
-
|
29
|
-
|
32
|
+
`(let1 str (Benchmark.measure
|
33
|
+
(&block ()
|
34
|
+
,proc))
|
35
|
+
(push! results (cons ,title str))
|
36
|
+
(bench-puts str)))
|
37
|
+
(bench-puts ""))))
|
30
38
|
|
31
39
|
(define ten-times
|
32
40
|
(macro (expr)
|
@@ -43,96 +51,103 @@
|
|
43
51
|
;; -------------------- fact --------------------
|
44
52
|
(bench-task #f
|
45
53
|
"fact (ruby version)"
|
46
|
-
(printf " => %d\n" (RubyBenchmarkCode.new.fact 100)))
|
54
|
+
(bench-printf " => %d\n" (RubyBenchmarkCode.new.fact 100)))
|
47
55
|
|
48
56
|
(bench-task #f
|
49
57
|
"fact (nendo version)"
|
50
|
-
(printf " => %d\n" (fact 100)))
|
58
|
+
(bench-printf " => %d\n" (fact 100)))
|
51
59
|
|
52
60
|
|
53
61
|
;; -------------------- plus --------------------
|
54
62
|
(for-each
|
55
63
|
(lambda (level)
|
56
64
|
(set-optimize-level level)
|
57
|
-
(printf " --- optimize level %d ---\n" level)
|
65
|
+
(bench-printf " --- optimize level %d ---\n" level)
|
58
66
|
(bench-task #f
|
59
67
|
"+ 0arg (nendo version)"
|
60
|
-
(printf " => %d\n" (hundled-times (plus0))))
|
68
|
+
(bench-printf " => %d\n" (hundled-times (plus0))))
|
61
69
|
|
62
70
|
(bench-task #f
|
63
71
|
"+ 1arg (nendo version)"
|
64
|
-
(printf " => %d\n" (hundled-times (plus1))))
|
72
|
+
(bench-printf " => %d\n" (hundled-times (plus1))))
|
65
73
|
|
66
74
|
(bench-task #f
|
67
75
|
"+ 2arg (nendo version)"
|
68
|
-
(printf " => %d\n" (hundled-times (plus2))))
|
76
|
+
(bench-printf " => %d\n" (hundled-times (plus2))))
|
69
77
|
|
70
78
|
(bench-task #f
|
71
79
|
"+ 3arg (nendo version)"
|
72
|
-
(printf " => %d\n" (hundled-times (plus3)))))
|
80
|
+
(bench-printf " => %d\n" (hundled-times (plus3)))))
|
73
81
|
'(1 2))
|
74
82
|
(print "--------------------")
|
75
83
|
|
76
84
|
;; -------------------- tak --------------------
|
77
85
|
(bench-task #f
|
78
86
|
"tak (ruby version)"
|
79
|
-
(printf " => %d\n" (RubyBenchmarkCode.new.tak 10 5 0)))
|
87
|
+
(bench-printf " => %d\n" (RubyBenchmarkCode.new.tak 10 5 0)))
|
80
88
|
|
81
89
|
(bench-task #f
|
82
90
|
"tak2 (ruby version)"
|
83
|
-
(printf " => %d\n" (RubyBenchmarkCode.new.tak2 10 5 0)))
|
91
|
+
(bench-printf " => %d\n" (RubyBenchmarkCode.new.tak2 10 5 0)))
|
84
92
|
|
85
93
|
(bench-task #f
|
86
94
|
"tak3 (ruby version)"
|
87
|
-
(printf " => %d\n" (RubyBenchmarkCode.new.tak3 10 5 0)))
|
95
|
+
(bench-printf " => %d\n" (RubyBenchmarkCode.new.tak3 10 5 0)))
|
88
96
|
|
89
97
|
(bench-task #f
|
90
98
|
"tak (nendo version)"
|
91
|
-
(printf " => %d\n" (tak 10 5 0)))
|
99
|
+
(bench-printf " => %d\n" (tak 10 5 0)))
|
92
100
|
|
93
101
|
;; -------------------- higher-order --------------------
|
94
|
-
(let ([
|
102
|
+
(let ([list100000 (range 100000)])
|
95
103
|
|
96
104
|
(bench-task #f
|
97
|
-
"for-each
|
105
|
+
"for-each 100000 (nendo version)"
|
98
106
|
(for-each
|
99
107
|
(lambda (x) (+ 1 x))
|
100
|
-
|
108
|
+
list100000))
|
101
109
|
|
102
110
|
(bench-task #f
|
103
|
-
"map
|
111
|
+
"map 100000 (nendo version)"
|
104
112
|
(map
|
105
113
|
(lambda (x) (+ 1 x))
|
106
|
-
|
114
|
+
list100000))
|
107
115
|
|
108
116
|
(bench-task #f
|
109
|
-
"filter
|
117
|
+
"filter 100000 (nendo version)"
|
110
118
|
(filter
|
111
119
|
(lambda (x) (if (< x 100) x false))
|
112
|
-
|
120
|
+
list100000)))
|
113
121
|
|
114
122
|
;; ------------- higher-order for vector ----------------
|
115
123
|
|
116
124
|
(use nendo.experimental)
|
117
125
|
|
118
|
-
(let ([
|
126
|
+
(let ([vec100000 (to-arr (range 100000)]])
|
119
127
|
(bench-task #f
|
120
|
-
"for-each vector
|
128
|
+
"for-each vector 100000 (nendo version)"
|
121
129
|
(for-each
|
122
130
|
(lambda (x) (+ 1 x))
|
123
|
-
|
131
|
+
vec100000))
|
124
132
|
|
125
133
|
(bench-task #f
|
126
|
-
"map vector
|
134
|
+
"map vector 100000 (nendo version)"
|
127
135
|
(map
|
128
136
|
(lambda (x) (+ 1 x))
|
129
|
-
|
137
|
+
vec100000))
|
130
138
|
|
131
139
|
(bench-task #f
|
132
|
-
"filter vector
|
140
|
+
"filter vector 100000 (nendo version)"
|
133
141
|
(filter
|
134
142
|
(lambda (x) (if (< x 100) x false))
|
135
|
-
|
143
|
+
vec100000))
|
136
144
|
)
|
137
145
|
|
146
|
+
;; ----- print results -------
|
147
|
+
(print "-------------------- results --------------------")
|
148
|
+
(for-each
|
149
|
+
(lambda (x)
|
150
|
+
(printf "%40s\t%s" (car x) (cdr x)))
|
151
|
+
(reverse results))
|
152
|
+
|
138
153
|
;;[EOF]
|
data/bin/nendo
CHANGED
@@ -50,6 +50,8 @@ def userOptionEater
|
|
50
50
|
i += 1
|
51
51
|
when '-V'
|
52
52
|
i += 1
|
53
|
+
when '-d'
|
54
|
+
i += 1
|
53
55
|
when '-l'
|
54
56
|
i += 2
|
55
57
|
when '-O'
|
@@ -79,6 +81,7 @@ def main
|
|
79
81
|
[ '-q', GetoptLong::NO_ARGUMENT ],
|
80
82
|
[ '-c', GetoptLong::NO_ARGUMENT ],
|
81
83
|
[ '-V', GetoptLong::NO_ARGUMENT ],
|
84
|
+
[ '-d', GetoptLong::NO_ARGUMENT ],
|
82
85
|
[ '-l', GetoptLong::REQUIRED_ARGUMENT ],
|
83
86
|
[ '-O', GetoptLong::REQUIRED_ARGUMENT ]
|
84
87
|
).each { |opt, arg|
|
@@ -106,6 +109,9 @@ def main
|
|
106
109
|
-O:
|
107
110
|
set optimize level. (0:no optimize, 1:tail call optimize)
|
108
111
|
|
112
|
+
-d:
|
113
|
+
disable runtime check.
|
114
|
+
|
109
115
|
EOF
|
110
116
|
exit 0
|
111
117
|
when '-V'
|
@@ -123,6 +129,8 @@ def main
|
|
123
129
|
STDERR.printf( "loaded file [%s]\n", arg )
|
124
130
|
when '-O'
|
125
131
|
core.setOptimizeLevel( arg.to_i )
|
132
|
+
when '-d'
|
133
|
+
core.disableRuntimeCheck( )
|
126
134
|
end
|
127
135
|
}
|
128
136
|
|
data/lib/nendo/debug/syslog.nndc
CHANGED
@@ -5,13 +5,9 @@
|
|
5
5
|
|
6
6
|
trampCall(
|
7
7
|
begin
|
8
|
-
embedBacktraceInfo( "./lib/nendo/debug/syslog.nnd", 37 );
|
9
8
|
delayCall( '_require', 'require',
|
10
9
|
begin
|
11
|
-
if @global_lisp_binding.has_key?('_require') then
|
12
10
|
trampCall(@_require)
|
13
|
-
else raise NameError.new( "Error: undefined variable _require", "_require" ) end
|
14
|
-
rescue => __e ; __e.set_backtrace( ["./lib/nendo/debug/syslog.nnd:37"] + __e.backtrace ) ; raise __e
|
15
11
|
end ,
|
16
12
|
[
|
17
13
|
"syslog"
|
@@ -31,32 +27,26 @@ trampCall(
|
|
31
27
|
begin
|
32
28
|
trampCall(Syslog).open(
|
33
29
|
)
|
34
|
-
rescue => __e ; __e.set_backtrace( ["./lib/nendo/debug/syslog.nnd:40"] + __e.backtrace ) ; raise __e
|
35
30
|
end
|
36
31
|
begin
|
37
32
|
trampCall(Syslog).log(
|
38
33
|
begin
|
39
34
|
trampCall(Syslog::LOG_WARNING)
|
40
|
-
rescue => __e ; __e.set_backtrace( ["./lib/nendo/debug/syslog.nnd:41"] + __e.backtrace ) ; raise __e
|
41
35
|
end ,
|
42
36
|
"%s" ,
|
43
37
|
begin
|
44
|
-
embedBacktraceInfo( "./lib/nendo/debug/syslog.nnd", 41 );
|
45
38
|
__PLMARK_ARGS2(
|
46
39
|
"Nendo: " ,
|
47
40
|
begin
|
48
41
|
trampCall(_str)
|
49
|
-
rescue => __e ; __e.set_backtrace( ["./lib/nendo/debug/syslog.nnd:41"] + __e.backtrace ) ; raise __e
|
50
42
|
end
|
51
43
|
)
|
52
44
|
end
|
53
45
|
)
|
54
|
-
rescue => __e ; __e.set_backtrace( ["./lib/nendo/debug/syslog.nnd:41"] + __e.backtrace ) ; raise __e
|
55
46
|
end
|
56
47
|
begin
|
57
48
|
trampCall(Syslog).close(
|
58
49
|
)
|
59
|
-
rescue => __e ; __e.set_backtrace( ["./lib/nendo/debug/syslog.nnd:42"] + __e.backtrace ) ; raise __e
|
60
50
|
end
|
61
51
|
}
|
62
52
|
)
|