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 +4 -4
- data/CHANGELOG.md +10 -0
- data/Gemfile +1 -0
- data/asciichem.gemspec +6 -4
- data/benchmarks/README.md +62 -0
- data/lib/asciichem/version.rb +1 -1
- metadata +11 -23
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6aed1bf1e1bf05bd4f3459f3bf147d39f08f283dc49b8452040643171e836a30
|
|
4
|
+
data.tar.gz: 557b7506d58e8505c6b9e3ffa36da6ef7025e054850eba7a9fdee7e03503c337
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
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", "
|
|
40
|
+
spec.add_dependency "lutaml-model", "~> 0.8"
|
|
39
41
|
spec.add_dependency "mml", "~> 2.3"
|
|
40
|
-
spec.add_dependency "nokogiri", "~> 1.
|
|
42
|
+
spec.add_dependency "nokogiri", "~> 1.18"
|
|
41
43
|
spec.add_dependency "parslet", "~> 2.0"
|
|
42
|
-
spec.add_dependency "relaton-bib", "
|
|
43
|
-
spec.add_dependency "plurimath", "~> 0.
|
|
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=`.
|
data/lib/asciichem/version.rb
CHANGED
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.
|
|
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.
|
|
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.
|
|
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: '
|
|
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: '
|
|
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.
|
|
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.
|
|
123
|
+
version: '0.11'
|
|
136
124
|
- !ruby/object:Gem::Dependency
|
|
137
125
|
name: thor
|
|
138
126
|
requirement: !ruby/object:Gem::Requirement
|