comp_tree 1.0.0 → 1.0.1
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.
- data/CHANGES.rdoc +4 -0
- data/README.rdoc +3 -4
- data/devel/jumpstart.rb +5 -3
- data/lib/comp_tree/algorithm.rb +1 -3
- data/lib/comp_tree/comp_tree.rb +1 -1
- data/lib/comp_tree/error.rb +5 -9
- metadata +5 -5
data/CHANGES.rdoc
CHANGED
data/README.rdoc
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
== Summary
|
5
5
|
|
6
|
-
A simple framework for
|
6
|
+
A simple framework for automatic parallelism.
|
7
7
|
|
8
8
|
== Synopsis
|
9
9
|
|
@@ -50,15 +50,14 @@ Or for the (non-gem) .tgz package,
|
|
50
50
|
|
51
51
|
== Description
|
52
52
|
|
53
|
-
CompTree is parallel computation tree structure based upon concepts
|
53
|
+
CompTree is a parallel computation tree structure based upon concepts
|
54
54
|
from pure functional programming.
|
55
55
|
|
56
56
|
The user should have a basic understanding of functional programming
|
57
57
|
(see for example http://en.wikipedia.org/wiki/Functional_programming)
|
58
58
|
and the meaning of <em>side effects</em>.
|
59
59
|
|
60
|
-
Every
|
61
|
-
uses.
|
60
|
+
Every function you define must explicitly depend on the data it uses.
|
62
61
|
|
63
62
|
#
|
64
63
|
# BAD example: depending on state -- offset not listed as a parameter
|
data/devel/jumpstart.rb
CHANGED
@@ -470,9 +470,10 @@ class Jumpstart
|
|
470
470
|
end
|
471
471
|
|
472
472
|
attribute :sections do
|
473
|
+
require 'enumerator'
|
473
474
|
begin
|
474
|
-
|
475
|
-
|
475
|
+
data = readme_contents.split(%r!^==\s*(.*?)\s*$!)
|
476
|
+
pairs = data[1..-1].enum_slice(2).map { |section, contents|
|
476
477
|
[section.downcase, contents.strip]
|
477
478
|
}
|
478
479
|
Hash[*pairs.flatten]
|
@@ -906,7 +907,8 @@ class Jumpstart
|
|
906
907
|
|
907
908
|
def run_doc_section(file, section, instance, &block)
|
908
909
|
contents = File.read(file)
|
909
|
-
|
910
|
+
re = %r!^=+[ \t]#{Regexp.quote(section)}.*?\n(.*?)^=!m
|
911
|
+
if section_contents = contents[re, 1]
|
910
912
|
index = 0
|
911
913
|
section_contents.scan(%r!^( \S.*?)(?=(^\S|\Z))!m) { |indented, unused|
|
912
914
|
code_sections = indented.split(%r!^ \#\#\#\# output:\s*$!)
|
data/lib/comp_tree/algorithm.rb
CHANGED
@@ -13,9 +13,7 @@ module CompTree
|
|
13
13
|
}
|
14
14
|
}
|
15
15
|
|
16
|
-
node =
|
17
|
-
master_loop(root, num_threads, from_workers, to_workers)
|
18
|
-
}.value
|
16
|
+
node = master_loop(root, num_threads, from_workers, to_workers)
|
19
17
|
|
20
18
|
num_threads.times { to_workers.push(nil) }
|
21
19
|
workers.each { |t| t.join }
|
data/lib/comp_tree/comp_tree.rb
CHANGED
data/lib/comp_tree/error.rb
CHANGED
@@ -4,21 +4,17 @@ module CompTree
|
|
4
4
|
# Base class for CompTree errors.
|
5
5
|
#
|
6
6
|
class Error < StandardError
|
7
|
-
def inspect #:nodoc:
|
8
|
-
"#<#{self.class.name}: #{message}>"
|
9
|
-
end
|
10
7
|
end
|
11
8
|
|
12
9
|
#
|
13
10
|
# Base class for node errors.
|
14
11
|
#
|
15
12
|
class NodeError < Error
|
16
|
-
attr_reader :node_name
|
17
|
-
|
18
13
|
def initialize(node_name) #:nodoc:
|
19
|
-
super()
|
20
14
|
@node_name = node_name
|
15
|
+
super(custom_message)
|
21
16
|
end
|
17
|
+
attr_reader :node_name
|
22
18
|
end
|
23
19
|
|
24
20
|
#
|
@@ -28,7 +24,7 @@ module CompTree
|
|
28
24
|
# driver.nodes[name].function = lambda { ... }
|
29
25
|
#
|
30
26
|
class RedefinitionError < NodeError
|
31
|
-
def
|
27
|
+
def custom_message #:nodoc:
|
32
28
|
"attempt to redefine node `#{node_name.inspect}'"
|
33
29
|
end
|
34
30
|
end
|
@@ -37,7 +33,7 @@ module CompTree
|
|
37
33
|
# Encountered a node without a function during a computation.
|
38
34
|
#
|
39
35
|
class NoFunctionError < NodeError
|
40
|
-
def
|
36
|
+
def custom_message #:nodoc:
|
41
37
|
"no function was defined for node `#{node_name.inspect}'"
|
42
38
|
end
|
43
39
|
end
|
@@ -46,7 +42,7 @@ module CompTree
|
|
46
42
|
# Requested node does not exist.
|
47
43
|
#
|
48
44
|
class NoNodeError < NodeError
|
49
|
-
def
|
45
|
+
def custom_message #:nodoc:
|
50
46
|
"no node named `#{node_name.inspect}'"
|
51
47
|
end
|
52
48
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: comp_tree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James M. Lawrence
|
@@ -9,11 +9,11 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-09-
|
12
|
+
date: 2009-09-22 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
16
|
-
description: CompTree is parallel computation tree structure based upon concepts from pure functional programming.
|
16
|
+
description: CompTree is a parallel computation tree structure based upon concepts from pure functional programming.
|
17
17
|
email:
|
18
18
|
- quixoticsycophant@gmail.com
|
19
19
|
executables: []
|
@@ -57,7 +57,7 @@ rdoc_options:
|
|
57
57
|
- --main
|
58
58
|
- README.rdoc
|
59
59
|
- --title
|
60
|
-
- "comp_tree: A simple framework for
|
60
|
+
- "comp_tree: A simple framework for automatic parallelism."
|
61
61
|
- --exclude
|
62
62
|
- CHANGES.rdoc
|
63
63
|
- --exclude
|
@@ -122,6 +122,6 @@ rubyforge_project: comptree
|
|
122
122
|
rubygems_version: 1.3.5
|
123
123
|
signing_key:
|
124
124
|
specification_version: 3
|
125
|
-
summary: A simple framework for
|
125
|
+
summary: A simple framework for automatic parallelism.
|
126
126
|
test_files: []
|
127
127
|
|