koi-vm-ruby 0.0.4

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.
Files changed (111) hide show
  1. data/.gitignore +2 -0
  2. data/README.rdoc +64 -0
  3. data/Rakefile +42 -0
  4. data/VERSION +1 -0
  5. data/architecture.rdoc +112 -0
  6. data/examples/blastoff.rb +20 -0
  7. data/examples/hello_world.rb +8 -0
  8. data/koi-vm.gemspec +198 -0
  9. data/lib/.gitkeep +0 -0
  10. data/lib/koi-vm-ruby.rb +10 -0
  11. data/lib/koi-vm-ruby/accessors.rb +63 -0
  12. data/lib/koi-vm-ruby/core.rb +48 -0
  13. data/lib/koi-vm-ruby/exceptions.rb +8 -0
  14. data/lib/koi-vm-ruby/helpers.rb +5 -0
  15. data/lib/koi-vm-ruby/opcodes/_opcode_constants.rb +68 -0
  16. data/lib/koi-vm-ruby/opcodes/_value_constants.rb +11 -0
  17. data/lib/koi-vm-ruby/opcodes/comparative_operations/equal.rb +11 -0
  18. data/lib/koi-vm-ruby/opcodes/comparative_operations/greater_than.rb +14 -0
  19. data/lib/koi-vm-ruby/opcodes/comparative_operations/invert.rb +12 -0
  20. data/lib/koi-vm-ruby/opcodes/comparative_operations/less_than.rb +14 -0
  21. data/lib/koi-vm-ruby/opcodes/control_operations/exit.rb +10 -0
  22. data/lib/koi-vm-ruby/opcodes/control_operations/no_op.rb +9 -0
  23. data/lib/koi-vm-ruby/opcodes/flow_control_operations/jump.rb +11 -0
  24. data/lib/koi-vm-ruby/opcodes/flow_control_operations/jump_if.rb +16 -0
  25. data/lib/koi-vm-ruby/opcodes/flow_control_operations/jump_unless.rb +16 -0
  26. data/lib/koi-vm-ruby/opcodes/function_operations/call.rb +13 -0
  27. data/lib/koi-vm-ruby/opcodes/function_operations/push_function.rb +19 -0
  28. data/lib/koi-vm-ruby/opcodes/function_operations/return.rb +11 -0
  29. data/lib/koi-vm-ruby/opcodes/function_operations/tailcall.rb +12 -0
  30. data/lib/koi-vm-ruby/opcodes/hash_operations/get_key.rb +14 -0
  31. data/lib/koi-vm-ruby/opcodes/hash_operations/has_key.rb +18 -0
  32. data/lib/koi-vm-ruby/opcodes/hash_operations/length.rb +19 -0
  33. data/lib/koi-vm-ruby/opcodes/hash_operations/num_pairs.rb +12 -0
  34. data/lib/koi-vm-ruby/opcodes/hash_operations/pairs.rb +22 -0
  35. data/lib/koi-vm-ruby/opcodes/hash_operations/push_hash.rb +10 -0
  36. data/lib/koi-vm-ruby/opcodes/hash_operations/set_key.rb +14 -0
  37. data/lib/koi-vm-ruby/opcodes/io_operations/gets.rb +10 -0
  38. data/lib/koi-vm-ruby/opcodes/io_operations/print.rb +13 -0
  39. data/lib/koi-vm-ruby/opcodes/math_operations/add.rb +14 -0
  40. data/lib/koi-vm-ruby/opcodes/math_operations/divide.rb +14 -0
  41. data/lib/koi-vm-ruby/opcodes/math_operations/multiply.rb +14 -0
  42. data/lib/koi-vm-ruby/opcodes/math_operations/subtract.rb +14 -0
  43. data/lib/koi-vm-ruby/opcodes/push_operations/push_bool.rb +12 -0
  44. data/lib/koi-vm-ruby/opcodes/push_operations/push_float.rb +12 -0
  45. data/lib/koi-vm-ruby/opcodes/push_operations/push_int.rb +12 -0
  46. data/lib/koi-vm-ruby/opcodes/push_operations/push_nil.rb +10 -0
  47. data/lib/koi-vm-ruby/opcodes/push_operations/push_string.rb +12 -0
  48. data/lib/koi-vm-ruby/opcodes/stack_operations/dup.rb +11 -0
  49. data/lib/koi-vm-ruby/opcodes/stack_operations/pop.rb +11 -0
  50. data/lib/koi-vm-ruby/opcodes/stack_operations/stksize.rb +10 -0
  51. data/lib/koi-vm-ruby/opcodes/stack_operations/swap.rb +11 -0
  52. data/lib/koi-vm-ruby/opcodes/stack_operations/top.rb +13 -0
  53. data/lib/koi-vm-ruby/opcodes/stack_operations/typeof.rb +18 -0
  54. data/lib/koi-vm-ruby/opcodes/string_operations/concat.rb +12 -0
  55. data/lib/koi-vm-ruby/opcodes/string_operations/strlen.rb +12 -0
  56. data/lib/koi-vm-ruby/opcodes/string_operations/to_string.rb +16 -0
  57. data/lib/koi-vm-ruby/opcodes/variable_operations/get_global.rb +10 -0
  58. data/lib/koi-vm-ruby/opcodes/variable_operations/get_local.rb +10 -0
  59. data/lib/koi-vm-ruby/opcodes/variable_operations/set_global.rb +11 -0
  60. data/lib/koi-vm-ruby/opcodes/variable_operations/set_local.rb +11 -0
  61. data/test/.gitkeep +0 -0
  62. data/test/performance/.gitignore +1 -0
  63. data/test/performance/simple_benchmark.rb +87 -0
  64. data/test/setup/test_unit_extensions.rb +21 -0
  65. data/test/test_helper.rb +13 -0
  66. data/test/unit/opcodes/comparative_operations/equal_test.rb +116 -0
  67. data/test/unit/opcodes/comparative_operations/greater_than_test.rb +53 -0
  68. data/test/unit/opcodes/comparative_operations/invert_test.rb +44 -0
  69. data/test/unit/opcodes/comparative_operations/less_than_test.rb +53 -0
  70. data/test/unit/opcodes/control_operations/exit_test.rb +20 -0
  71. data/test/unit/opcodes/control_operations/no_op_test.rb +17 -0
  72. data/test/unit/opcodes/flow_control_operations/jump_if_test.rb +50 -0
  73. data/test/unit/opcodes/flow_control_operations/jump_test.rb +36 -0
  74. data/test/unit/opcodes/flow_control_operations/jump_unless_test.rb +50 -0
  75. data/test/unit/opcodes/function_operations/call_test.rb +39 -0
  76. data/test/unit/opcodes/function_operations/push_function_test.rb +41 -0
  77. data/test/unit/opcodes/function_operations/return_test.rb +31 -0
  78. data/test/unit/opcodes/function_operations/tailcall_test.rb +41 -0
  79. data/test/unit/opcodes/hash_operations/get_key_test.rb +56 -0
  80. data/test/unit/opcodes/hash_operations/has_key_test.rb +56 -0
  81. data/test/unit/opcodes/hash_operations/length_test.rb +46 -0
  82. data/test/unit/opcodes/hash_operations/num_pairs_test.rb +46 -0
  83. data/test/unit/opcodes/hash_operations/pairs_test.rb +67 -0
  84. data/test/unit/opcodes/hash_operations/push_hash_test.rb +16 -0
  85. data/test/unit/opcodes/hash_operations/set_key_test.rb +56 -0
  86. data/test/unit/opcodes/io_operations/gets_test.rb +38 -0
  87. data/test/unit/opcodes/io_operations/print_test.rb +42 -0
  88. data/test/unit/opcodes/math_operations/add_test.rb +62 -0
  89. data/test/unit/opcodes/math_operations/divide_test.rb +62 -0
  90. data/test/unit/opcodes/math_operations/multiply_test.rb +62 -0
  91. data/test/unit/opcodes/math_operations/subtract_test.rb +62 -0
  92. data/test/unit/opcodes/push_operations/push_bool_test.rb +36 -0
  93. data/test/unit/opcodes/push_operations/push_float_test.rb +27 -0
  94. data/test/unit/opcodes/push_operations/push_int_test.rb +27 -0
  95. data/test/unit/opcodes/push_operations/push_nil_test.rb +16 -0
  96. data/test/unit/opcodes/push_operations/push_string_test.rb +27 -0
  97. data/test/unit/opcodes/stack_operations/dup_test.rb +25 -0
  98. data/test/unit/opcodes/stack_operations/pop_test.rb +28 -0
  99. data/test/unit/opcodes/stack_operations/stksize_test.rb +20 -0
  100. data/test/unit/opcodes/stack_operations/swap_test.rb +36 -0
  101. data/test/unit/opcodes/stack_operations/top_test.rb +45 -0
  102. data/test/unit/opcodes/stack_operations/typeof_test.rb +79 -0
  103. data/test/unit/opcodes/string_operations/concat_test.rb +65 -0
  104. data/test/unit/opcodes/string_operations/strlen_test.rb +44 -0
  105. data/test/unit/opcodes/string_operations/to_string_test.rb +70 -0
  106. data/test/unit/opcodes/variable_operations/get_global_test.rb +18 -0
  107. data/test/unit/opcodes/variable_operations/get_local_test.rb +18 -0
  108. data/test/unit/opcodes/variable_operations/set_global_test.rb +27 -0
  109. data/test/unit/opcodes/variable_operations/set_local_test.rb +27 -0
  110. data/test/unit/vm_initialization_test.rb +86 -0
  111. metadata +224 -0
@@ -0,0 +1,18 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', 'test_helper.rb'))
2
+
3
+ class GetGlobalTest < Test::Unit::TestCase
4
+
5
+ include KoiVMRuby
6
+
7
+ test "should get global variable at index x and push onto stack" do
8
+ vm = VM.new
9
+ vm.globals[1] = [STRING_, "hello world!"]
10
+ vm.run [
11
+ GET_GLOBAL, 1
12
+ ]
13
+ assert_equal [[STRING_, "hello world!"]], vm.data_stack
14
+ assert_equal 2, vm.instruction_pointer
15
+ end
16
+
17
+
18
+ end
@@ -0,0 +1,18 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', 'test_helper.rb'))
2
+
3
+ class GetLocalTest < Test::Unit::TestCase
4
+
5
+ include KoiVMRuby
6
+
7
+ test "should get local variable at index x and push onto stack" do
8
+ vm = VM.new
9
+ vm.locals[1] = [STRING_, "hello world!"]
10
+ vm.run [
11
+ GET_LOCAL, 1
12
+ ]
13
+ assert_equal [[STRING_, "hello world!"]], vm.data_stack
14
+ assert_equal 2, vm.instruction_pointer
15
+ end
16
+
17
+
18
+ end
@@ -0,0 +1,27 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', 'test_helper.rb'))
2
+
3
+ class SetGlobalTest < Test::Unit::TestCase
4
+
5
+ include KoiVMRuby
6
+
7
+ test "should set global variable at index x" do
8
+ vm = VM.new
9
+ vm.data_stack = [[STRING_, "test"]]
10
+ vm.run [
11
+ SET_GLOBAL, 1
12
+ ]
13
+ assert_equal({1 => [STRING_, "test"]}, vm.globals)
14
+ assert_equal [], vm.data_stack
15
+ assert_equal 2, vm.instruction_pointer
16
+ end
17
+
18
+ test "should raise StackError if there is nothing on the stack" do
19
+ assert_raises StackError do
20
+ vm = VM.new
21
+ vm.run [
22
+ SET_GLOBAL, 1
23
+ ]
24
+ end
25
+ end
26
+
27
+ end
@@ -0,0 +1,27 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', 'test_helper.rb'))
2
+
3
+ class SetLocalTest < Test::Unit::TestCase
4
+
5
+ include KoiVMRuby
6
+
7
+ test "should set local variable at index x" do
8
+ vm = VM.new
9
+ vm.data_stack = [[STRING_, "test"]]
10
+ vm.run [
11
+ SET_LOCAL, 1
12
+ ]
13
+ assert_equal({1 => [STRING_, "test"]}, vm.locals)
14
+ assert_equal [], vm.data_stack
15
+ assert_equal 2, vm.instruction_pointer
16
+ end
17
+
18
+ test "should raise StackError if there is nothing on the stack" do
19
+ assert_raises StackError do
20
+ vm = VM.new
21
+ vm.run [
22
+ SET_LOCAL, 1
23
+ ]
24
+ end
25
+ end
26
+
27
+ end
@@ -0,0 +1,86 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'test_helper.rb'))
2
+
3
+ class VmInitializationTest < Test::Unit::TestCase
4
+
5
+ include KoiVMRuby
6
+
7
+ test "VM.new without arguments should return default state" do
8
+ vm = VM.new
9
+ default_state = {
10
+ :opcodes => [],
11
+ :globals => {},
12
+ :fiber => {
13
+ :data_stack => [],
14
+ :return_stack => [],
15
+ :locals => [{}],
16
+ :instruction_pointer => 0,
17
+ :level => 0
18
+ }
19
+ }
20
+ assert_equal default_state, vm.state
21
+ end
22
+
23
+ test "VM.new with valid state should not raise error" do
24
+ assert_nothing_raised do
25
+ VM.new({
26
+ :globals => {},
27
+ :fiber => {
28
+ :data_stack => [],
29
+ :return_stack => [],
30
+ :locals => [{}],
31
+ :instruction_pointer => 0,
32
+ :level => 0
33
+ }
34
+ })
35
+ end
36
+ end
37
+
38
+ test "VM.new should not raise ArgumentError if given empty hash" do
39
+ assert_nothing_raised do
40
+ VM.new({})
41
+ end
42
+ end
43
+
44
+ test "VM.new should raise ArgumentError if given state that is not a hash" do
45
+ assert_raises TypeError do
46
+ VM.new([])
47
+ end
48
+ end
49
+
50
+ test "VM.new should raise ArgumentError if given fiber with :stack that is not an array" do
51
+ assert_raises ArgumentError do
52
+ VM.new({
53
+ :fiber => {
54
+ :stack => 0
55
+ }
56
+ })
57
+ end
58
+ end
59
+
60
+ test "VM.new should raise ArgumentError if given fiber with :instruction_pointer that is not an integer" do
61
+ assert_raises ArgumentError do
62
+ VM.new({
63
+ :fiber => {
64
+ :instruction_pointer => []
65
+ }
66
+ })
67
+ end
68
+ end
69
+
70
+ test "VM.new should raise ArgumentError if given :globals that is not an array" do
71
+ assert_raises ArgumentError do
72
+ VM.new({
73
+ :globals => 1
74
+ })
75
+ end
76
+ end
77
+
78
+ test "VM.new should raise ArgumentError if given :opcodes that is not an array" do
79
+ assert_raises ArgumentError do
80
+ VM.new({
81
+ :opcodes => 1
82
+ })
83
+ end
84
+ end
85
+
86
+ end
metadata ADDED
@@ -0,0 +1,224 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: koi-vm-ruby
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 4
9
+ version: 0.0.4
10
+ platform: ruby
11
+ authors:
12
+ - Aaron Gough
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-08-31 00:00:00 -04:00
18
+ default_executable:
19
+ dependencies: []
20
+
21
+ description: A Virtual Machine for the Koi programming language written in Ruby.
22
+ email: aaron@aarongough.com
23
+ executables: []
24
+
25
+ extensions: []
26
+
27
+ extra_rdoc_files:
28
+ - README.rdoc
29
+ files:
30
+ - .gitignore
31
+ - README.rdoc
32
+ - Rakefile
33
+ - VERSION
34
+ - architecture.rdoc
35
+ - examples/blastoff.rb
36
+ - examples/hello_world.rb
37
+ - koi-vm.gemspec
38
+ - lib/.gitkeep
39
+ - lib/koi-vm-ruby.rb
40
+ - lib/koi-vm-ruby/accessors.rb
41
+ - lib/koi-vm-ruby/core.rb
42
+ - lib/koi-vm-ruby/exceptions.rb
43
+ - lib/koi-vm-ruby/helpers.rb
44
+ - lib/koi-vm-ruby/opcodes/_opcode_constants.rb
45
+ - lib/koi-vm-ruby/opcodes/_value_constants.rb
46
+ - lib/koi-vm-ruby/opcodes/comparative_operations/equal.rb
47
+ - lib/koi-vm-ruby/opcodes/comparative_operations/greater_than.rb
48
+ - lib/koi-vm-ruby/opcodes/comparative_operations/invert.rb
49
+ - lib/koi-vm-ruby/opcodes/comparative_operations/less_than.rb
50
+ - lib/koi-vm-ruby/opcodes/control_operations/exit.rb
51
+ - lib/koi-vm-ruby/opcodes/control_operations/no_op.rb
52
+ - lib/koi-vm-ruby/opcodes/flow_control_operations/jump.rb
53
+ - lib/koi-vm-ruby/opcodes/flow_control_operations/jump_if.rb
54
+ - lib/koi-vm-ruby/opcodes/flow_control_operations/jump_unless.rb
55
+ - lib/koi-vm-ruby/opcodes/function_operations/call.rb
56
+ - lib/koi-vm-ruby/opcodes/function_operations/push_function.rb
57
+ - lib/koi-vm-ruby/opcodes/function_operations/return.rb
58
+ - lib/koi-vm-ruby/opcodes/function_operations/tailcall.rb
59
+ - lib/koi-vm-ruby/opcodes/hash_operations/get_key.rb
60
+ - lib/koi-vm-ruby/opcodes/hash_operations/has_key.rb
61
+ - lib/koi-vm-ruby/opcodes/hash_operations/length.rb
62
+ - lib/koi-vm-ruby/opcodes/hash_operations/num_pairs.rb
63
+ - lib/koi-vm-ruby/opcodes/hash_operations/pairs.rb
64
+ - lib/koi-vm-ruby/opcodes/hash_operations/push_hash.rb
65
+ - lib/koi-vm-ruby/opcodes/hash_operations/set_key.rb
66
+ - lib/koi-vm-ruby/opcodes/io_operations/gets.rb
67
+ - lib/koi-vm-ruby/opcodes/io_operations/print.rb
68
+ - lib/koi-vm-ruby/opcodes/math_operations/add.rb
69
+ - lib/koi-vm-ruby/opcodes/math_operations/divide.rb
70
+ - lib/koi-vm-ruby/opcodes/math_operations/multiply.rb
71
+ - lib/koi-vm-ruby/opcodes/math_operations/subtract.rb
72
+ - lib/koi-vm-ruby/opcodes/push_operations/push_bool.rb
73
+ - lib/koi-vm-ruby/opcodes/push_operations/push_float.rb
74
+ - lib/koi-vm-ruby/opcodes/push_operations/push_int.rb
75
+ - lib/koi-vm-ruby/opcodes/push_operations/push_nil.rb
76
+ - lib/koi-vm-ruby/opcodes/push_operations/push_string.rb
77
+ - lib/koi-vm-ruby/opcodes/stack_operations/dup.rb
78
+ - lib/koi-vm-ruby/opcodes/stack_operations/pop.rb
79
+ - lib/koi-vm-ruby/opcodes/stack_operations/stksize.rb
80
+ - lib/koi-vm-ruby/opcodes/stack_operations/swap.rb
81
+ - lib/koi-vm-ruby/opcodes/stack_operations/top.rb
82
+ - lib/koi-vm-ruby/opcodes/stack_operations/typeof.rb
83
+ - lib/koi-vm-ruby/opcodes/string_operations/concat.rb
84
+ - lib/koi-vm-ruby/opcodes/string_operations/strlen.rb
85
+ - lib/koi-vm-ruby/opcodes/string_operations/to_string.rb
86
+ - lib/koi-vm-ruby/opcodes/variable_operations/get_global.rb
87
+ - lib/koi-vm-ruby/opcodes/variable_operations/get_local.rb
88
+ - lib/koi-vm-ruby/opcodes/variable_operations/set_global.rb
89
+ - lib/koi-vm-ruby/opcodes/variable_operations/set_local.rb
90
+ - test/.gitkeep
91
+ - test/performance/.gitignore
92
+ - test/performance/simple_benchmark.rb
93
+ - test/setup/test_unit_extensions.rb
94
+ - test/test_helper.rb
95
+ - test/unit/opcodes/comparative_operations/equal_test.rb
96
+ - test/unit/opcodes/comparative_operations/greater_than_test.rb
97
+ - test/unit/opcodes/comparative_operations/invert_test.rb
98
+ - test/unit/opcodes/comparative_operations/less_than_test.rb
99
+ - test/unit/opcodes/control_operations/exit_test.rb
100
+ - test/unit/opcodes/control_operations/no_op_test.rb
101
+ - test/unit/opcodes/flow_control_operations/jump_if_test.rb
102
+ - test/unit/opcodes/flow_control_operations/jump_test.rb
103
+ - test/unit/opcodes/flow_control_operations/jump_unless_test.rb
104
+ - test/unit/opcodes/function_operations/call_test.rb
105
+ - test/unit/opcodes/function_operations/push_function_test.rb
106
+ - test/unit/opcodes/function_operations/return_test.rb
107
+ - test/unit/opcodes/function_operations/tailcall_test.rb
108
+ - test/unit/opcodes/hash_operations/get_key_test.rb
109
+ - test/unit/opcodes/hash_operations/has_key_test.rb
110
+ - test/unit/opcodes/hash_operations/length_test.rb
111
+ - test/unit/opcodes/hash_operations/num_pairs_test.rb
112
+ - test/unit/opcodes/hash_operations/pairs_test.rb
113
+ - test/unit/opcodes/hash_operations/push_hash_test.rb
114
+ - test/unit/opcodes/hash_operations/set_key_test.rb
115
+ - test/unit/opcodes/io_operations/gets_test.rb
116
+ - test/unit/opcodes/io_operations/print_test.rb
117
+ - test/unit/opcodes/math_operations/add_test.rb
118
+ - test/unit/opcodes/math_operations/divide_test.rb
119
+ - test/unit/opcodes/math_operations/multiply_test.rb
120
+ - test/unit/opcodes/math_operations/subtract_test.rb
121
+ - test/unit/opcodes/push_operations/push_bool_test.rb
122
+ - test/unit/opcodes/push_operations/push_float_test.rb
123
+ - test/unit/opcodes/push_operations/push_int_test.rb
124
+ - test/unit/opcodes/push_operations/push_nil_test.rb
125
+ - test/unit/opcodes/push_operations/push_string_test.rb
126
+ - test/unit/opcodes/stack_operations/dup_test.rb
127
+ - test/unit/opcodes/stack_operations/pop_test.rb
128
+ - test/unit/opcodes/stack_operations/stksize_test.rb
129
+ - test/unit/opcodes/stack_operations/swap_test.rb
130
+ - test/unit/opcodes/stack_operations/top_test.rb
131
+ - test/unit/opcodes/stack_operations/typeof_test.rb
132
+ - test/unit/opcodes/string_operations/concat_test.rb
133
+ - test/unit/opcodes/string_operations/strlen_test.rb
134
+ - test/unit/opcodes/string_operations/to_string_test.rb
135
+ - test/unit/opcodes/variable_operations/get_global_test.rb
136
+ - test/unit/opcodes/variable_operations/get_local_test.rb
137
+ - test/unit/opcodes/variable_operations/set_global_test.rb
138
+ - test/unit/opcodes/variable_operations/set_local_test.rb
139
+ - test/unit/vm_initialization_test.rb
140
+ has_rdoc: true
141
+ homepage: http://github.com/aarongough/koi-vm-ruby
142
+ licenses: []
143
+
144
+ post_install_message:
145
+ rdoc_options:
146
+ - --charset=UTF-8
147
+ - --line-numbers
148
+ - --inline-source
149
+ require_paths:
150
+ - lib
151
+ required_ruby_version: !ruby/object:Gem::Requirement
152
+ none: false
153
+ requirements:
154
+ - - ">="
155
+ - !ruby/object:Gem::Version
156
+ segments:
157
+ - 0
158
+ version: "0"
159
+ required_rubygems_version: !ruby/object:Gem::Requirement
160
+ none: false
161
+ requirements:
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ segments:
165
+ - 0
166
+ version: "0"
167
+ requirements: []
168
+
169
+ rubyforge_project:
170
+ rubygems_version: 1.3.7
171
+ signing_key:
172
+ specification_version: 3
173
+ summary: A Koi Virtual Machine written in Ruby
174
+ test_files:
175
+ - test/performance/simple_benchmark.rb
176
+ - test/setup/test_unit_extensions.rb
177
+ - test/test_helper.rb
178
+ - test/unit/opcodes/comparative_operations/equal_test.rb
179
+ - test/unit/opcodes/comparative_operations/greater_than_test.rb
180
+ - test/unit/opcodes/comparative_operations/invert_test.rb
181
+ - test/unit/opcodes/comparative_operations/less_than_test.rb
182
+ - test/unit/opcodes/control_operations/exit_test.rb
183
+ - test/unit/opcodes/control_operations/no_op_test.rb
184
+ - test/unit/opcodes/flow_control_operations/jump_if_test.rb
185
+ - test/unit/opcodes/flow_control_operations/jump_test.rb
186
+ - test/unit/opcodes/flow_control_operations/jump_unless_test.rb
187
+ - test/unit/opcodes/function_operations/call_test.rb
188
+ - test/unit/opcodes/function_operations/push_function_test.rb
189
+ - test/unit/opcodes/function_operations/return_test.rb
190
+ - test/unit/opcodes/function_operations/tailcall_test.rb
191
+ - test/unit/opcodes/hash_operations/get_key_test.rb
192
+ - test/unit/opcodes/hash_operations/has_key_test.rb
193
+ - test/unit/opcodes/hash_operations/length_test.rb
194
+ - test/unit/opcodes/hash_operations/num_pairs_test.rb
195
+ - test/unit/opcodes/hash_operations/pairs_test.rb
196
+ - test/unit/opcodes/hash_operations/push_hash_test.rb
197
+ - test/unit/opcodes/hash_operations/set_key_test.rb
198
+ - test/unit/opcodes/io_operations/gets_test.rb
199
+ - test/unit/opcodes/io_operations/print_test.rb
200
+ - test/unit/opcodes/math_operations/add_test.rb
201
+ - test/unit/opcodes/math_operations/divide_test.rb
202
+ - test/unit/opcodes/math_operations/multiply_test.rb
203
+ - test/unit/opcodes/math_operations/subtract_test.rb
204
+ - test/unit/opcodes/push_operations/push_bool_test.rb
205
+ - test/unit/opcodes/push_operations/push_float_test.rb
206
+ - test/unit/opcodes/push_operations/push_int_test.rb
207
+ - test/unit/opcodes/push_operations/push_nil_test.rb
208
+ - test/unit/opcodes/push_operations/push_string_test.rb
209
+ - test/unit/opcodes/stack_operations/dup_test.rb
210
+ - test/unit/opcodes/stack_operations/pop_test.rb
211
+ - test/unit/opcodes/stack_operations/stksize_test.rb
212
+ - test/unit/opcodes/stack_operations/swap_test.rb
213
+ - test/unit/opcodes/stack_operations/top_test.rb
214
+ - test/unit/opcodes/stack_operations/typeof_test.rb
215
+ - test/unit/opcodes/string_operations/concat_test.rb
216
+ - test/unit/opcodes/string_operations/strlen_test.rb
217
+ - test/unit/opcodes/string_operations/to_string_test.rb
218
+ - test/unit/opcodes/variable_operations/get_global_test.rb
219
+ - test/unit/opcodes/variable_operations/get_local_test.rb
220
+ - test/unit/opcodes/variable_operations/set_global_test.rb
221
+ - test/unit/opcodes/variable_operations/set_local_test.rb
222
+ - test/unit/vm_initialization_test.rb
223
+ - examples/blastoff.rb
224
+ - examples/hello_world.rb