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 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
  )