redshift 1.3.28 → 1.3.29

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,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 36de30bee612231a2007d9738da0e725e53117b8
4
- data.tar.gz: 0438a71cdd5dd1e88a2d31c195c53f1dddc4ddfb
3
+ metadata.gz: ec932d5d5f5e197edab9937d3032d5ca8133f8fd
4
+ data.tar.gz: 07317699aa39e485291098dda37a1540924c66aa
5
5
  SHA512:
6
- metadata.gz: abf507a063549f1d2674c1fee1a651c7acfcfcfda8c4e2c8cad3854473d09640980a1818303642a8ffa6de6da75df6f2c2b92262b42d5fe3ecef1c63fbe522a8
7
- data.tar.gz: c5679b5e664ada659737673002455a494eeba2ad8975e95e935ce686e0a582e5a7f286e4639ba1f2a592533cf809dd5ae3611e7eac35c62cd144a333d957cbbe
6
+ metadata.gz: 6b9af94beb0f3480c4b05ae9299016c8e073cea3cbf73f67afa99bc53f3d8cfc5d7742f596d7d219d7bdc82fe11c03ce2471c9152fb56ffe4fbb442c1a7c7839
7
+ data.tar.gz: a1017985179957c14476f74591ad24791ac37040bbd6cdb6cf0670e5544e7dba84dc6508b524876010d99ece518090e997507b5fba6e6ce0df3e3e0986055b06
data/README.md CHANGED
@@ -2,14 +2,22 @@
2
2
 
3
3
  A framework for simulation of networks of hybrid automata, similar to SHIFT and Lambda-SHIFT. Includes ruby-based DSL for defining simulation components, and ruby/C code generation and runtime.
4
4
 
5
- There's no documentation yet. For now, start with the examples.
5
+ RedShift is for simulating digital devices operating in an analog world. It's also for simulating any system that exhibits a mix of discrete and continuous behavior.
6
+
7
+ There's not much [documentation](doc) yet, but plenty of [examples](examples). Some of the original SHIFT papers are available: [Shift: A Formalism and a Programming Language for Dynamic Networks of Hybrid Automata]( http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.32.5913&rep=rep1&type=pdf).
6
8
 
7
9
  ## Requirements ##
8
10
 
9
- RedShift needs ruby 1.8.x and a compatible C compiler. If you can build native gems, you're all set.
11
+ RedShift needs ruby (1.8, 1.9, 2.0, 2.1) and a compatible C compiler. If you can build native gems, you're all set.
10
12
 
11
13
  Some of the examples also use Ruby/Tk and the tkar gem.
12
14
 
15
+ ## Installation ##
16
+
17
+ Install as gem:
18
+
19
+ gem install redshift
20
+
13
21
  ## Env vars ##
14
22
 
15
23
  If you have a multicore system and are using the gnu toolchain, set
@@ -18,8 +26,22 @@ If you have a multicore system and are using the gnu toolchain, set
18
26
 
19
27
  or some variation. You'll find that rebuilds of your simulation code go faster.
20
28
 
29
+
30
+ What is RedShift?
31
+ -----------------
32
+
33
+ RedShift combines *dataflow* programming (for continuous variables) with *actor*-based programming (for discrete events, states, and variables, and also for continuous variables).
34
+
35
+ Examples
36
+ --------
37
+
38
+ See the [examples](examples) dir.
39
+
40
+ The [RedCloud](https://github.com/vjoel/redcloud) project is based on RedShift.
41
+
42
+
21
43
  ----
22
44
 
23
- Copyright (C) 2001-2013, Joel VanderWerf, mailto:vjoel@users.sourceforge.net
45
+ Copyright (C) 2001-2014, Joel VanderWerf, mailto:vjoel@users.sourceforge.net
24
46
  Distributed under the Ruby license. See www.ruby-lang.org.
25
47
 
@@ -1,5 +1,9 @@
1
1
  redshift 1.3.28
2
2
 
3
+ - gemspec specifies dvector-float extension
4
+
5
+ redshift 1.3.28
6
+
3
7
  - update .gitignore
4
8
  - fixes for ruby 2.1
5
9
  - modernize rakefile: release tasks
@@ -34,7 +38,7 @@ redshift 1.3.23
34
38
  - compatible with ruby-1.9.2
35
39
 
36
40
  - renamed Random module to RandomDistribution to avoid conflict
37
-
41
+
38
42
  redshift 1.3.22
39
43
 
40
44
  - handling of env vars is more consistent
@@ -127,7 +131,7 @@ redshift 1.3.13
127
131
 
128
132
  redshift 1.3.12
129
133
 
130
- - Fixed bug with explicitly assigning an array to a
134
+ - Fixed bug with explicitly assigning an array to a
131
135
  delay buffer.
132
136
 
133
137
  - Raise if time_step changes while using delay.
@@ -212,7 +216,7 @@ redshift 1.2.41
212
216
  - Improved message for reset type error.
213
217
 
214
218
  - Link vars can now be declared without a type (defaults to Component).
215
-
219
+
216
220
  - Fixed Queue behavior when #unpop called with SimultaneousQueueEntries.
217
221
 
218
222
  - Added examples and tests.
@@ -9,14 +9,14 @@ srand(12345)
9
9
  # Variable with discrete and continuous perturbation.
10
10
  class Plant < Component
11
11
  continuous :x => 0, :t => 1
12
-
12
+
13
13
  link :control => :Control # fwd ref to undefined class Control
14
-
14
+
15
15
  flow do
16
16
  diff " x' = control.output + sin(t) "
17
17
  diff " t' = -1 "
18
18
  end
19
-
19
+
20
20
  transition do
21
21
  guard "t <= 0"
22
22
  action do
@@ -30,14 +30,14 @@ end
30
30
  class Control < Component
31
31
  continuous :set_point => 2.0
32
32
  continuous :p_out, :i_out, :d_out, :output
33
-
33
+
34
34
  # Gains
35
35
  constant :k_p => 1.0,
36
36
  :k_i => 1.0,
37
37
  :k_d => 1.0
38
-
38
+
39
39
  link :plant => Plant
40
-
40
+
41
41
  flow do
42
42
  algebraic " error = set_point - plant.x "
43
43
  algebraic " p_out = k_p * error "
@@ -34,7 +34,7 @@ module ShellWorld
34
34
 
35
35
  loop do
36
36
  evolve 100000000 do
37
- puts "clock: #{clock}"
37
+ printf "clock: %10.3f\n" % clock
38
38
  #sleep 0.01
39
39
  end
40
40
  end
@@ -18,10 +18,14 @@ class Scheduler < RedShift::Component
18
18
 
19
19
  class Request
20
20
  include Comparable
21
+
21
22
  attr_accessor :time, :queue, :message
23
+
22
24
  def <=>(other)
23
25
  self.time <=> other.time
24
26
  end
27
+
28
+ # Scheduled request: at given +time+, send +message+ to +queue+.
25
29
  def initialize time, queue, message
26
30
  @time, @queue, @message = time, queue, message
27
31
  end
@@ -29,6 +33,7 @@ class Scheduler < RedShift::Component
29
33
 
30
34
  EPSILON = 1E-12 # float fuzziness, if timestep is 0.1, for example
31
35
 
36
+ # Schedule the sending of +message+ to +queue+, after +delta_t+ elapses.
32
37
  # Returns the request object for use with unschedule
33
38
  def schedule_message delta_t, queue, message
34
39
  req = Request.new(time + delta_t - EPSILON, queue, message)
@@ -82,7 +87,7 @@ class Client < RedShift::Component
82
87
 
83
88
  transition Enter => Waiting do
84
89
  action do
85
- puts "scheduling message at #{world.clock} sec"
90
+ puts "scheduling message at #{world.clock} sec to run after #{delay} sec"
86
91
  scheduler.schedule_message delay, wakeup, "Time to wake up, snoozebrain!"
87
92
  end
88
93
  end
@@ -69,8 +69,8 @@ end
69
69
 
70
70
  module RedShift
71
71
  include Math
72
-
73
- VERSION = '1.3.28'
72
+
73
+ VERSION = '1.3.29'
74
74
 
75
75
  Infinity = Math::Infinity
76
76
 
@@ -87,7 +87,7 @@ module RedShift
87
87
  $REDSHIFT_DEBUG = setting
88
88
  end
89
89
  end
90
-
90
+
91
91
  # Returns a list of all worlds (instances of RedShift::World and subclasses),
92
92
  # or just those descending from +world_class+.
93
93
  # Not very efficient, since it uses <tt>ObjectSpace.each_object</tt>, but
@@ -99,7 +99,7 @@ module RedShift
99
99
  end
100
100
 
101
101
  # class Warning < Exception; end
102
- #
102
+ #
103
103
  # # Warn with string str and skipping n stack frames.
104
104
  # def warn str, n = 0
105
105
  # warning = sprintf "\nWarning: #{str}\n\t#{caller(n).join("\n\t")}\n"
@@ -112,7 +112,7 @@ module RedShift
112
112
  # module_function :warn
113
113
 
114
114
  @library_calls = []
115
-
115
+
116
116
  # Defer a block until just after the library ruby code is loaded, but before
117
117
  # commit. Necessary for defining inline C functions or shadow_attrs. Note that
118
118
  # a whole require statement could be placed inside the with_library block.
@@ -2,7 +2,7 @@
2
2
  # Depends on:
3
3
  # gem install tkar
4
4
  # See also:
5
- # http://tkar.rubyforge.org
5
+ # https://github.com/vjoel/tkar
6
6
  class TkarDriver
7
7
  # +dragger+ is a callable object that takes (id, x, y) and should
8
8
  # move object id to (x,y)
metadata CHANGED
@@ -1,55 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redshift
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.28
4
+ version: 1.3.29
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joel VanderWerf
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-06-01 00:00:00.000000000 Z
11
+ date: 2014-08-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cgen
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: tkar
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: prng-isaac
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  description: A framework for simulation of networks of hybrid automata, similar to
@@ -60,6 +60,7 @@ executables: []
60
60
  extensions:
61
61
  - ext/redshift/buffer/extconf.rb
62
62
  - ext/redshift/dvector/extconf.rb
63
+ - ext/redshift/dvector-float/extconf.rb
63
64
  extra_rdoc_files:
64
65
  - README.md
65
66
  - RELEASE-NOTES
@@ -211,7 +212,7 @@ files:
211
212
  - test/test_strictness_error.rb
212
213
  - test/test_sync.rb
213
214
  - test/test_world.rb
214
- homepage: http://rubyforge.org/projects/redshift
215
+ homepage: https://github.com/vjoel/redshift
215
216
  licenses: []
216
217
  metadata: {}
217
218
  post_install_message:
@@ -220,7 +221,7 @@ rdoc_options:
220
221
  - "--line-numbers"
221
222
  - "--inline-source"
222
223
  - "--title"
223
- - CGenerator
224
+ - RedShift
224
225
  - "--main"
225
226
  - README.md
226
227
  - "--output"
@@ -239,8 +240,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
239
240
  - !ruby/object:Gem::Version
240
241
  version: '0'
241
242
  requirements: []
242
- rubyforge_project: redshift
243
- rubygems_version: 2.2.0
243
+ rubyforge_project:
244
+ rubygems_version: 2.4.1
244
245
  signing_key:
245
246
  specification_version: 4
246
247
  summary: Simulation of hybrid automata