nendo 0.6.5 → 0.6.6
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
)
|