wongi-engine 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3c2ca6c330475744581bb90d5bc2619028d15f91
4
- data.tar.gz: 7278681ce2d8e291153d0766b6d937fe4fc7634d
3
+ metadata.gz: 1db8be28472e187de40486b1ab4125fa859ac3a8
4
+ data.tar.gz: a1eb809ba4b74ff99c58356a4ca28b75482e0bbe
5
5
  SHA512:
6
- metadata.gz: 772fe295e490eb4476fd9932dbd5ba4f65d626d009918a50b91e38237a6db7ebd8bff15be49061e5865139bd990b024b3cc565cb21444e5f6bbce6be298e75f4
7
- data.tar.gz: 29412be2280914ad1984d763c280c17a1125735991a7521199a0581d3c64ac15438641c947468aab70300238ecbaacb4781d71e5257d3cf74eb78817f858a412
6
+ metadata.gz: 7a11f0b446bfa411a02e7447f67759ce39bca74797bcef00d0c86999167bad292bb012a18ee02c169ed2c2e8e345be9fce5d6d421013a8c15b1bcc0cb989b751
7
+ data.tar.gz: cec060f0a03789f5d811267364f6b4e75ec09379099eeb49317175ca72dd36a292e1380fda30424b4ad68a223ed70d2b566fb1f08f3905e1c433053abc1d3d56
data/README.md CHANGED
@@ -24,6 +24,10 @@ The Rete implementation in this library largely follows the outline presented in
24
24
 
25
25
  ## Changelog
26
26
 
27
+ ### 0.2.4
28
+
29
+ * fixed an overlay-related memory leak
30
+
27
31
  ### 0.2.3
28
32
 
29
33
  * fixed the error collector
@@ -7,6 +7,8 @@ module Wongi::Engine
7
7
  def initialize(rete, parent = nil)
8
8
  @rete = rete
9
9
  @parent = parent
10
+ @raw_wmes = Hash.new { |h, k| h[k] = [] }
11
+ @raw_tokens = Hash.new { |h, k| h[k] = [] }
10
12
  rete.add_overlay(self)
11
13
  end
12
14
 
@@ -35,6 +37,10 @@ module Wongi::Engine
35
37
  def dispose
36
38
  return if self == rete.default_overlay
37
39
  rete.remove_overlay(self)
40
+ @raw_tokens.values.each do |tokens|
41
+ tokens.each(&:dispose!)
42
+ end
43
+ @raw_tokens.clear
38
44
  end
39
45
 
40
46
  def <<(thing)
@@ -128,12 +134,10 @@ module Wongi::Engine
128
134
  end
129
135
 
130
136
  def raw_wmes(alpha)
131
- @raw_wmes ||= Hash.new { |h, k| h[k] = [] }
132
137
  @raw_wmes[alpha.object_id]
133
138
  end
134
139
 
135
140
  def raw_tokens(beta)
136
- @raw_tokens ||= Hash.new { |h, k| h[k] = [] }
137
141
  @raw_tokens[beta.object_id]
138
142
  end
139
143
  end
@@ -69,6 +69,12 @@ module Wongi::Engine
69
69
  deleted!
70
70
  end
71
71
 
72
+ def dispose!
73
+ parent.children.delete(self) if parent
74
+ @parent = nil
75
+ @wme = nil
76
+ end
77
+
72
78
  # for neg feedback loop protection
73
79
  def generated? wme
74
80
  return true if generated_wmes.any? { |w| w == wme }
@@ -1,5 +1,5 @@
1
1
  module Wongi
2
2
  module Engine
3
- VERSION = "0.2.3"
3
+ VERSION = "0.2.4"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wongi-engine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Valeri Sokolov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-29 00:00:00.000000000 Z
11
+ date: 2016-01-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake