asciichem 0.29.2 → 0.29.3

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: f372a8539906c658a399b015255e574de5feb73d1b5e7183958901681bfbce34
4
- data.tar.gz: 7269dc4ad6e39e7c5ea6726b54a8ffe1508c039bdf9ced5c0a74e23efdc9b00f
3
+ metadata.gz: 6aed1bf1e1bf05bd4f3459f3bf147d39f08f283dc49b8452040643171e836a30
4
+ data.tar.gz: 557b7506d58e8505c6b9e3ffa36da6ef7025e054850eba7a9fdee7e03503c337
5
5
  SHA512:
6
- metadata.gz: 6f936bc0e95907d589c0095d34e4e65c554dcbdccd276aab7186db8f1218cbb179652b082f088f1b70a76391e830db53de2259ea8d333b64dd85ba367b16c610
7
- data.tar.gz: 63d979830e4a8ab9aca450006a9740e83428e26073323af0ed4f8ddeed4be6f7aecb8bcfe1e5173f7a6049f92ff8b0a8e0a2b374fbd13630ae00b0e9e7a0db60
6
+ metadata.gz: b3ff4937b6f92f253c16f03d414ef4fa177ab0df85fea38c61be07e83a04e7889c2485e4b4d8b7dd3c2a7e0042711e533cdf5968e11abc130d68d21620e6ed07
7
+ data.tar.gz: dfeada783a748286cf51fbbb9cbaa0a8f7a485af352b511dd54a67d53fce0ec77c9b58d339d980853664ff58438f0e5be56ae6632802d70a44e12967d5418285
data/CHANGELOG.md CHANGED
@@ -3,6 +3,16 @@
3
3
  All notable changes to AsciiChem are documented here.
4
4
  This project follows [Semantic Versioning](https://semver.org/).
5
5
 
6
+ ## [0.29.3] - 2026-09-22
7
+
8
+ ### Changed
9
+ - Dependency floors raised to the corpus-validated versions,
10
+ expressed pessimistically (`~>`): `lutaml-model ~> 0.8` (from
11
+ `>= 0.8, < 2`), `relaton-bib ~> 2.1` (from `>= 0.1, < 3`),
12
+ `plurimath ~> 0.11`, `nokogiri ~> 1.18`; `chemicalml`, `elkrb`,
13
+ `mml`, `parslet`, `thor` unchanged. Full suite green under the
14
+ raised floors (1985 examples).
15
+
6
16
  ## [0.29.2] - 2026-09-17
7
17
 
8
18
  ### Changed
data/Gemfile CHANGED
@@ -5,6 +5,7 @@ source "https://rubygems.org"
5
5
  gemspec
6
6
 
7
7
  group :development do
8
+ gem "parsanol"
8
9
  gem "json_schemer", "~> 2.4"
9
10
  gem "benchmark", "~> 0.4"
10
11
  gem "benchmark-ips", "~> 2.14", require: false
data/asciichem.gemspec CHANGED
@@ -33,14 +33,16 @@ Gem::Specification.new do |spec|
33
33
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
34
34
  spec.require_paths = ["lib"]
35
35
 
36
+ # Floors are the versions the corpus suite validates against
37
+ # (pessimistic ~>); raise them only with a full-suite run.
36
38
  spec.add_dependency "chemicalml", "~> 0.3.0"
37
39
  spec.add_dependency "elkrb", "~> 1.0"
38
- spec.add_dependency "lutaml-model", ">= 0.8", "< 2"
40
+ spec.add_dependency "lutaml-model", "~> 0.8"
39
41
  spec.add_dependency "mml", "~> 2.3"
40
- spec.add_dependency "nokogiri", "~> 1.16"
42
+ spec.add_dependency "nokogiri", "~> 1.18"
41
43
  spec.add_dependency "parslet", "~> 2.0"
42
- spec.add_dependency "relaton-bib", ">= 0.1", "< 3"
43
- spec.add_dependency "plurimath", "~> 0.8"
44
+ spec.add_dependency "relaton-bib", "~> 2.1"
45
+ spec.add_dependency "plurimath", "~> 0.11"
44
46
  spec.add_dependency "thor", "~> 1.3"
45
47
 
46
48
  spec.add_development_dependency "json_schemer", "~> 2.4"
data/benchmarks/README.md CHANGED
@@ -168,3 +168,65 @@ non-blocking (#36 bare repeated sibling captures remains open but
168
168
  is worked around in `ParsanolEngine` via single `.as(...)` capture
169
169
  wrapping).
170
170
 
171
+
172
+ ### Re-check 8 (2026-09-17, parsanol 1.3.27)
173
+
174
+ All four upstream issues we filed are now closed (#36-#39; seven
175
+ releases since 1.3.20). Validation:
176
+
177
+ - Gate **221/221** through the shipped `ParsanolEngine`.
178
+ - **#36 verified fixed at the source**: the bare-repeated-sibling
179
+ repro (`A->B->C`) now returns parslet's array-of-segment-hashes —
180
+ every match preserved. Our `split_merged_formula` seam in
181
+ `ParsanolEngine` is therefore a compatibility no-op on current
182
+ parsanol (it still normalizes the merged-hash shape for older
183
+ parsanol lines, which the opt-in floor allows).
184
+ - **Perf: ratio-only this time.** The machine ran at load ~45
185
+ during measurement (parallel spec suites in other sessions), so
186
+ absolute numbers are meaningless — the parslet control itself
187
+ measured 15-20x slower than its quiet-machine baseline.
188
+ Same-process ratio: parsanol **~2.1x parslet** (8.3 vs 3.8 i/s,
189
+ and 8.8 vs 4.5 on the repeat), consistent with the 2.6x
190
+ quiet-machine figure from re-check 7.
191
+
192
+ ### Re-check 9 (2026-09-22, parsanol 1.3.49)
193
+
194
+ Twenty-one releases since re-check 8, all perf-focused upstream
195
+ (#59 roadmap: first-set BYTE_DISPATCH 1.3.29, VM memoisation
196
+ 1.3.35, VM phase-2 wiring 1.3.33, native dynamic bridge fixes
197
+ 1.3.40-1.3.41, `Parsanol::IncrementalSession` 1.3.42). Validation:
198
+
199
+ - Gate **221/221** through the shipped `ParsanolEngine` (run on
200
+ 1.3.48/1.3.49 within the same day — the line is moving fast).
201
+ - **Perf: ratio-only again.** Load was 34-77 during measurement
202
+ (parslet control itself ran 8-12 i/s vs its quiet ~75), so
203
+ absolute numbers are excluded. Same-process ratio across three
204
+ runs: parsanol **1.7-3.2x parslet** (37.7/11.7, 19.0/11.1,
205
+ 25.5/8.4), centring ~2.5-3x — consistent with the quiet-machine
206
+ 2.6x from re-check 7; under contention the native parse path
207
+ degrades less than pure-Ruby parslet.
208
+ - Upstream's incremental (`Parsanol::IncrementalSession`) and VM
209
+ memoisation work benefits the compat layer automatically; no
210
+ asciichem-side change needed or made.
211
+
212
+ ## Leptris note (2026-09-22, 1.9.221)
213
+
214
+ Leptris is moxml's PREFERRED_ADAPTER: when installed above its
215
+ binding floor, lutaml-model's XML layer (our CML wire path) runs on
216
+ it. The version is fully transitive — lutaml-model constrains
217
+ `~> 1.9.178`; asciichem pins nothing. The line moves fast
218
+ (1.9.178 floor -> 1.9.222 within days).
219
+
220
+ - **Compatibility:** full suite **1985/0** at 1.9.221.1, including
221
+ every CML round-trip and three-way wire spec. 1.9.222's namespace
222
+ fix (`xml:space` in the interleaved lane, reported upstream by
223
+ Canon) does not affect our documents; no action.
224
+ - **Perf on our CML workload:** leptris is ~15-25% behind nokogiri
225
+ (round-trip 12.7 vs 15.0 i/s; emit 30.6 vs 39.8 i/s; load-noisy
226
+ ±20%). The workload is dominated by lutaml-model's Ruby-side
227
+ model building, not the adapter — leptris's speed gains target
228
+ its native parse lanes (HTML/XQuery per its release notes).
229
+ Measurement caveat: forcing an adapter for A/B runs requires
230
+ stubbing `leptris_preferred_available?` — lutaml's
231
+ `detect_xml_adapter` calls `runtime_default_adapter`, which
232
+ ignores `default_adapter=`.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AsciiChem
4
- VERSION = "0.29.2"
4
+ VERSION = "0.29.3"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asciichem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.29.2
4
+ version: 0.29.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
@@ -41,22 +41,16 @@ dependencies:
41
41
  name: lutaml-model
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
- - - ">="
44
+ - - "~>"
45
45
  - !ruby/object:Gem::Version
46
46
  version: '0.8'
47
- - - "<"
48
- - !ruby/object:Gem::Version
49
- version: '2'
50
47
  type: :runtime
51
48
  prerelease: false
52
49
  version_requirements: !ruby/object:Gem::Requirement
53
50
  requirements:
54
- - - ">="
51
+ - - "~>"
55
52
  - !ruby/object:Gem::Version
56
53
  version: '0.8'
57
- - - "<"
58
- - !ruby/object:Gem::Version
59
- version: '2'
60
54
  - !ruby/object:Gem::Dependency
61
55
  name: mml
62
56
  requirement: !ruby/object:Gem::Requirement
@@ -77,14 +71,14 @@ dependencies:
77
71
  requirements:
78
72
  - - "~>"
79
73
  - !ruby/object:Gem::Version
80
- version: '1.16'
74
+ version: '1.18'
81
75
  type: :runtime
82
76
  prerelease: false
83
77
  version_requirements: !ruby/object:Gem::Requirement
84
78
  requirements:
85
79
  - - "~>"
86
80
  - !ruby/object:Gem::Version
87
- version: '1.16'
81
+ version: '1.18'
88
82
  - !ruby/object:Gem::Dependency
89
83
  name: parslet
90
84
  requirement: !ruby/object:Gem::Requirement
@@ -103,36 +97,30 @@ dependencies:
103
97
  name: relaton-bib
104
98
  requirement: !ruby/object:Gem::Requirement
105
99
  requirements:
106
- - - ">="
107
- - !ruby/object:Gem::Version
108
- version: '0.1'
109
- - - "<"
100
+ - - "~>"
110
101
  - !ruby/object:Gem::Version
111
- version: '3'
102
+ version: '2.1'
112
103
  type: :runtime
113
104
  prerelease: false
114
105
  version_requirements: !ruby/object:Gem::Requirement
115
106
  requirements:
116
- - - ">="
117
- - !ruby/object:Gem::Version
118
- version: '0.1'
119
- - - "<"
107
+ - - "~>"
120
108
  - !ruby/object:Gem::Version
121
- version: '3'
109
+ version: '2.1'
122
110
  - !ruby/object:Gem::Dependency
123
111
  name: plurimath
124
112
  requirement: !ruby/object:Gem::Requirement
125
113
  requirements:
126
114
  - - "~>"
127
115
  - !ruby/object:Gem::Version
128
- version: '0.8'
116
+ version: '0.11'
129
117
  type: :runtime
130
118
  prerelease: false
131
119
  version_requirements: !ruby/object:Gem::Requirement
132
120
  requirements:
133
121
  - - "~>"
134
122
  - !ruby/object:Gem::Version
135
- version: '0.8'
123
+ version: '0.11'
136
124
  - !ruby/object:Gem::Dependency
137
125
  name: thor
138
126
  requirement: !ruby/object:Gem::Requirement