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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- Nzk3MjcxOGM4OGYxOWMwYWIxMDBiNGZjZDg0OGYwNTNkNzcwZjA4Mg==
4
+ YTBkYzNiM2M2Yzk1ZWMzNTRmMTAxZTdmMTljNjMyNWM4Y2U5Njc2ZA==
5
5
  data.tar.gz: !binary |-
6
- MTU2Y2I0MzFkMjQ1YjU4OTdiYzFmMThhYjZjNWVlNzgyYWQ0OGE5Zg==
6
+ NjZiZjljYzk3YTk3Y2U3YTJkNTcxNjVlZTNmZTYxNTE3ZWQzYTVmNQ==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- ZmMwOWIzZWUyYjA5NzJkYzM1NjQwODdlOWIwYTk3M2EwNzYxODhlYmY3YWY4
10
- YzJkMzFiMTVmMmFjMWM0MjUzMTMzNWZmMzFkYzQ0Njg1MTM2NDBjMzE2NDRj
11
- MzhhYmY0MjczMTcyYWM5NDM4YTVlMDMyZmRhZmYyZjgzNTdiYzg=
9
+ YzA4YzA1N2NmMjI4YWQwNDkyYjNlYTJhZWJjMzFiOTBjYzY4NmI4YTJlY2U2
10
+ ODkyMjdhYzJhZGQ0ZjZjM2M2NmUxOGI3NjdkOGJiZGJmOWE3NjUwYTM0NTUz
11
+ YzBlZGZkNDM1NDFlOWNlZWFhZjgzOGZjYjRjOTMxYjQyNzUyNzI=
12
12
  data.tar.gz: !binary |-
13
- NjA5MjZhY2VjMjExY2JlNTM2OTc1ZDllOWY2ZmIxNGNmMTIzNzkzZWI1ZTYx
14
- OTcwZDlmMDdmMzkyYjcxOGZiMmNmOGQzYjRkZmExYTljMTYxNTg0MWZlNTA5
15
- NTQ4MDQ0MjU3NjhmMjRiMjAxYjQ5ODEwMWJlMjEyZDY0NDFhYmU=
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 && rake build
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
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 0
3
3
  :minor: 6
4
- :patch: 5
4
+ :patch: 6
@@ -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
- (.puts ,title)
19
- (.puts Benchmark::CAPTION)
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
- `(.puts (Benchmark.measure
27
- (&block ()
28
- ,proc))))
29
- (.puts ""))))
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 ([list10000 (range 10000)])
102
+ (let ([list100000 (range 100000)])
95
103
 
96
104
  (bench-task #f
97
- "for-each 10000 (nendo version)"
105
+ "for-each 100000 (nendo version)"
98
106
  (for-each
99
107
  (lambda (x) (+ 1 x))
100
- list10000))
108
+ list100000))
101
109
 
102
110
  (bench-task #f
103
- "map 10000 (nendo version)"
111
+ "map 100000 (nendo version)"
104
112
  (map
105
113
  (lambda (x) (+ 1 x))
106
- list10000))
114
+ list100000))
107
115
 
108
116
  (bench-task #f
109
- "filter 10000 (nendo version)"
117
+ "filter 100000 (nendo version)"
110
118
  (filter
111
119
  (lambda (x) (if (< x 100) x false))
112
- list10000)))
120
+ list100000)))
113
121
 
114
122
  ;; ------------- higher-order for vector ----------------
115
123
 
116
124
  (use nendo.experimental)
117
125
 
118
- (let ([vec10000 (to-arr (range 10000)]])
126
+ (let ([vec100000 (to-arr (range 100000)]])
119
127
  (bench-task #f
120
- "for-each vector 10000 (nendo version)"
128
+ "for-each vector 100000 (nendo version)"
121
129
  (for-each
122
130
  (lambda (x) (+ 1 x))
123
- vec10000))
131
+ vec100000))
124
132
 
125
133
  (bench-task #f
126
- "map vector 10000 (nendo version)"
134
+ "map vector 100000 (nendo version)"
127
135
  (map
128
136
  (lambda (x) (+ 1 x))
129
- vec10000))
137
+ vec100000))
130
138
 
131
139
  (bench-task #f
132
- "filter vector 10000 (nendo version)"
140
+ "filter vector 100000 (nendo version)"
133
141
  (filter
134
142
  (lambda (x) (if (< x 100) x false))
135
- vec10000))
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
 
@@ -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
  )