smart_schema 0.8.0 → 0.9.0

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
  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