wongi-engine 0.2.3 → 0.2.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.
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