smart_schema 0.8.0 → 0.9.0

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
  SHA256:
3
- metadata.gz: 9b77c587cbf99773471fe28e8113fe603dd9fc8eba4fd6509d87695976affaef
4
- data.tar.gz: dfbc216a7537c38b3dd2bb2dec9d7ce1a66f3c8b37528e903372a0519a44319a
3
+ metadata.gz: 2a161786a837c4ada32a0faed7e94824b7c7d9b8fe5d8424017f1b35a9247046
4
+ data.tar.gz: 8bad145419a14dea10ce51e52575b6defb1f03cc4f60bb7e8469e53c78abe533
5
5
  SHA512:
6
- metadata.gz: 130dbacff8c5765ad68f19dec163111d5e498f8464f1d3f8c954e15b45c6f278b5981373c9619964db316bc57c34d0b11a2b2782dde1eec5d777d672c918cf35
7
- data.tar.gz: 36cde9131e10e969a7470b26d6a3a8ea6044d27c11e61f50e320073293026f5259ab52b51cbf69c3d72b739e54220258b44da56a98223f0dc63cd8e5813072eb
6
+ metadata.gz: 4e3d78a45f8c0520f091efcec8c51ad0dd9b4997406260843702c738a70aace1b79c671fbb4aff339092f458bc6825a491e6188f3fe18952d0992b429813945c
7
+ data.tar.gz: c12d347de7ec869ea0d0019e4d270d24a06f894b9b3c05d945be4172e4e5d9cf9e39a589f925756d13f1bb27d8073417757bcc7f857e329f5c8d9682e5e15a08
data/CHANGELOG.md CHANGED
@@ -1,13 +1,17 @@
1
1
  # Changelog
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
+ # [0.9.0] - 2022-09-30
5
+ ## Changed
6
+ - Reduced context switching count during lock operations (migrate from `SmartCore::Engine::Lock` to `SmartCore::Engine::ReadWriteLock`);
7
+
4
8
  # [0.8.0] - 2022-09-30
5
9
  ## Changed
6
- - Decreased object allocations and mutex usage
7
- - the one mutex of `SmartCore::Schema::Checker` is enough cuz this mutex covers the entire validation process);
10
+ - Reduced object allocations and mutex usage:
11
+ - only one mutex of `SmartCore::Schema::Checker` instance is enough cuz this mutex covers the entire validation process;
8
12
  - more retained objects in `SmartCore::Schema::Checker::Rules` (cache layer for rule names);
9
13
  - Updated development dependencies;
10
- - Updated `smart_engine` dependency (`0.7` -> `0.8`);
14
+ - Updated `smart_engine` dependency (`~> 0.11` -> `~> 0.13`);
11
15
 
12
16
  # [0.7.0] - 2022-09-28
13
17
  ## Changed
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- smart_schema (0.8.0)
5
- smart_engine (~> 0.13)
4
+ smart_schema (0.9.0)
5
+ smart_engine (~> 0.16)
6
6
  smart_types (~> 0.4)
7
7
 
8
8
  GEM
@@ -81,7 +81,7 @@ GEM
81
81
  simplecov_json_formatter (~> 0.1)
82
82
  simplecov-html (0.12.3)
83
83
  simplecov_json_formatter (0.1.4)
84
- smart_engine (0.13.0)
84
+ smart_engine (0.16.0)
85
85
  smart_types (0.7.1)
86
86
  smart_engine (~> 0.11)
87
87
  tzinfo (2.0.5)
@@ -3,6 +3,7 @@
3
3
  # @api private
4
4
  # @since 0.1.0
5
5
  # @version 0.3.0
6
+ # @version 0.9.0
6
7
  class SmartCore::Schema::Checker
7
8
  require_relative 'checker/verifiable_hash'
8
9
  require_relative 'checker/rules'
@@ -12,9 +13,10 @@ class SmartCore::Schema::Checker
12
13
  #
13
14
  # @api private
14
15
  # @since 0.1.0
16
+ # @version 0.9.0
15
17
  def initialize
16
18
  @reconciler = Reconciler::Constructor.create
17
- @lock = SmartCore::Engine::Lock.new
19
+ @lock = SmartCore::Engine::ReadWriteLock.new
18
20
  end
19
21
 
20
22
  # @param verifiable_hash [Hash<String|Symbol,Any>]
@@ -22,8 +24,9 @@ class SmartCore::Schema::Checker
22
24
  #
23
25
  # @api private
24
26
  # @since 0.1.0
27
+ # @version 0.9.0
25
28
  def check!(verifiable_hash)
26
- thread_safe do
29
+ @lock.read_sync do
27
30
  raise(SmartCore::Schema::ArgumentError, <<~ERROR_MESSAGE) unless verifiable_hash.is_a?(Hash)
28
31
  Verifiable hash should be a type of ::Hash
29
32
  ERROR_MESSAGE
@@ -37,8 +40,9 @@ class SmartCore::Schema::Checker
37
40
  #
38
41
  # @api private
39
42
  # @since 0.3.0
43
+ # @version 0.9.0
40
44
  def invoke_in_pipe(&checker_invokations)
41
- thread_safe { instance_eval(&checker_invokations) }
45
+ @lock.write_sync { instance_eval(&checker_invokations) }
42
46
  end
43
47
 
44
48
  # @param strict_mode [NilClass, String, Symbol]
@@ -46,8 +50,9 @@ class SmartCore::Schema::Checker
46
50
  #
47
51
  # @api private
48
52
  # @since 0.3.0
53
+ # @version 0.9.0
49
54
  def set_strict_mode(strict_mode)
50
- thread_safe { apply_strict_mode(strict_mode) }
55
+ @lock.write_sync { apply_strict_mode(strict_mode) }
51
56
  end
52
57
 
53
58
  # @param definitions [Block]
@@ -55,8 +60,9 @@ class SmartCore::Schema::Checker
55
60
  #
56
61
  # @api private
57
62
  # @since 0.1.0
63
+ # @version 0.9.0
58
64
  def append_schema_definitions(&definitions)
59
- thread_safe { add_schema_definitions(&definitions) }
65
+ @lock.write_sync { add_schema_definitions(&definitions) }
60
66
  end
61
67
 
62
68
  # @param another_checker [SmartCore::Schema::Checker]
@@ -64,8 +70,9 @@ class SmartCore::Schema::Checker
64
70
  #
65
71
  # @api private
66
72
  # @since 0.1.0
73
+ # @version 0.9.0
67
74
  def combine_with(another_checker)
68
- thread_safe { self } # TODO (0.x.0): merge the definitions and return self
75
+ @lock.write_sync { self } # TODO (0.x.0): merge the definitions and return self
69
76
  end
70
77
 
71
78
  private
@@ -97,13 +104,4 @@ class SmartCore::Schema::Checker
97
104
  def apply_strict_mode(strict_mode)
98
105
  Reconciler::Constructor.set_strict_mode(reconciler, strict_mode)
99
106
  end
100
-
101
- # @param block [Block]
102
- # @return [Any]
103
- #
104
- # @api private
105
- # @since 0.1.0
106
- def thread_safe(&block)
107
- @lock.synchronize(&block)
108
- end
109
107
  end
@@ -7,8 +7,8 @@ module SmartCore
7
7
  #
8
8
  # @api public
9
9
  # @since 0.1.0
10
- # @version 0.8.0
11
- VERSION = '0.8.0'
10
+ # @version 0.9.0
11
+ VERSION = '0.9.0'
12
12
  end
13
13
  # rubocop:enable Style/StaticClass
14
14
  end
data/smart_schema.gemspec CHANGED
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
30
30
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
31
31
  spec.require_paths = ['lib']
32
32
 
33
- spec.add_dependency 'smart_engine', '~> 0.13'
33
+ spec.add_dependency 'smart_engine', '~> 0.16'
34
34
  spec.add_dependency 'smart_types', '~> 0.4'
35
35
 
36
36
  spec.add_development_dependency 'pry', '~> 0.13'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smart_schema
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rustam Ibragimov
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.13'
19
+ version: '0.16'
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
- version: '0.13'
26
+ version: '0.16'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: smart_types
29
29
  requirement: !ruby/object:Gem::Requirement